dragm***
2022-11-26

소프트웨어 개발을 시작할 때 필요한 실용 가이드북이다. 소프트웨어 아키텍처의 리스크는 무엇인지, 아키텍처 설계 원칙은 어떻게 적용하고 해결하는지, 유관 부서의 실무자를 어떻게 도울 수 있는지 등의 주제를 개발자가 흔히 겪는 경험을 기반으로 풀어냈다.
'리스크 주도로 아키텍처 설계를 반복하라. 자신이 속한 팀에서 수행하는 소프트웨어 개발 프로세스에 맞춰 리스크가 해소될 정도로 충분한 설계량과 시간을 투자하자고 제안한다.'
초반에는 아키텍처와 리스크 주도 모델에 대한 개념적인 설명을 진행하고, 이를 기반으로 4장부터 예제들과 아키텍처 모델에 대해 설명한다. 내용이 방대하여 읽는데 상당한 시간이 걸릴 것 같아서... 중요하다고 생각되는 약간의 내용들을 아래에 열거해본다.
개발자에게는 분할, 지식, 추상화의 세 가지 범주의 무기가 필요하다.
개발자는 얼마나 많은 설계와 아키텍처를 수행해야 하는가? 핵심 아이디어는 소프트웨어 아키텍처를 설계하는데 드는 노력이 프로젝트의 리스크에 비례해야 한다는 것이다.
리스크 주도 모델은 다음 3단계로 요약할 수 있다.
1. 리스크 식별 및 우선순위 지정
2. 일련의 기법 선택 및 적용
3. 리스크 감소 평가
모든 개발자는 '지금 어떤 기능을 구현하고 있는가'라는 질문에는 답할 수 있지만, '가장 중요한 실패 리스크와 이에 대응할 수 있는 엔지니어링 기법은 무엇인가'라는 질문에는 곤란할 수 있다.
리스크가 완화되었는지 테스트할 수 있도록 리스크를 설명하는 편이 좋다. 리스크는 크게 엔지니어링 리스크(제품의 분석, 설계, 구현)와 프로젝트 관리 리스크(일정, 작업 순서, 전달, 팀 규모, 지역 등)로 분류할 수 있다.
어떠한 설계 및 아키텍처링 기법을 사용해야 하는가? 해답은 리스크를 식별하고 이에 대처할 수 있는 기법을 선택하는 것이다. 아키텍처 설계에 들이는 노력은 실패 리스크에 상응해야 한다. 가장 달성하기 어려운 요구사항을 찾아야 한다.
리스크 주도 접근 방식을 따르는 개발자는 머릿 속에 계속 반복되는 질문이 있다고 느낄 수 있다. 다루어야 하는 리스크는 무엇인가? 이를 줄이는 가장 좋은 기법은 무엇인가? 리스크가 완화되어 구현을 시작(또는 재개)할 수 있는가?
진화적 설계와 계획 설계 중간에 최소 계획 설계 or 작은 선행 설계가 있다.
리스크를 줄여 실패를 피하는 것이 개발자 행동의 주요 동력이다.
이 도서에서는 따라야 할 하나의 프로세스를 규정하지 않는다. 여러가지 기법을 알려주고 상황에 맞춰 알아서 그들을 잘 버무려 사용하라고 한다. 'ㅅ');
말 그대로 읽는 것도 적용하는 것도 꾸준한 수련이 필요하다.
'소프트웨어 아키텍처 101' 이라는 도서와 함께 꾸준히 읽어봐야겠다.
.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."