요즘 읽어보고 싶은 책
http://www.yes24.com/Product/Goods/101865885
오늘(2021-10-06) 전자책으로 구매완료! 두근두근ㅎㅎ
소프트웨어 아키텍트
- 아키텍트는 엔지니어링 관점에서 문제를 정의
- 소프트웨어 시스템을 구현 가능한 작은 조각으로 나누는 동시에 전체 시스템이 일관성이 있게 동작하도록 큰 그림을 그림
- 품질에 영향을 주는 다양한 품질속성(quality attribute) 사이에 균형을 잡아야 하며 어쩔 수 없이 늘어나는 기술 부채도 관리
- 팀원들의 설계 역량을 개발(아키텍트에게 최고의 팀은 아키텍트로 채워진 팀이기 때문)
- 아키텍트는 소프트웨어가 언제 어떻게 전달되는지 결정하는 사람
- 아키텍트는 소프트웨어가 비즈니스 목표에 부합하도록 만드는 사람
1.1 소프트웨어 아키텍트가 하는 일
- 엔지니어링 관점에서 문제 정의
- 요구사항으로 기능을 정의하고, 이에 상응하는 "품질속성"을 또 하나의 요구사항으로 만드는 일
- 시스템의 품질 속성을 정의할 뿐만 아니라, 소프트웨어 아키텍처가 정해진 방향으로 갈 수 있도록 제약(constraint)과 기능을 꾸준히 확인해야 함
- 시스템은 분리하고 책임은 위임하기
- 소프트웨어를 분명한 책임을 가진 단위로 나누고 각자의 포지션을 지키면서 운영하면 더 순조로워짐
- 소프트웨어 시스템을 여러 조각으로 나누고, 조각마다 품질 속성과 요구사항을 달성하도록 전략을 만듬
- 큰 그림 그리기
- 소프트웨어는 시스템의 맥락 안에서 살아 숨쉰다
- 트레이트오프를 생각해야 함
- 품질/속성의 트레이드오프를 고려하기
- 다양한 트레이드오프를 파악해 어떤 결정이 더 합리적인지 결정할 수 있어야함
- 기술 부채 관리하기
- 기술부채(technical debt)는 소프트웨어 시스템의 현재 설계와 소프트웨어가 지속적으로 가치를 창출하기 위해 가져야만 하는 바람직한 설계사이의 간극
- 이 간극을 줄이는 데 얼마만큼의 노력이 필요할지 예측하는 것으로 기술 부채를 측정할 수 있음
- 팀의 아키텍처 설계 역량 키우기
1.2 소프트웨어 아키텍처란 무엇인가
- 필수 구조 정의하기
- 직접해보기: 요소, 관계,구조
- 품질 속성과 시스템 속성 도출하기