1부. 소개
1장. 소프트웨어 아키텍처 정의
1.1 소프트웨어 아키텍처의 올바른 정의와 오해
1.2 아키텍처 구조와 뷰
1.3 무엇이 좋은 아키텍처를 만드는가?
1.4 요약
1.5 참고 문헌
1.6 토론 질문
2장. 소프트웨어 아키텍처가 중요한 이유
2.1 시스템의 품질 속성 억제 또는 보장
2.2 변경 사항 추론 및 관리
2.3 시스템 품질 예측
2.4 이해관계자 간의 의사소통
2.5 초기 설계 결정
2.6 구현에 대한 제약
2.7 조직 구조에 대한 영향
2.8 점증적 개발 가능
2.9 비용 및 일정 추정
2.10 이전 가능한 재사용 모델
2.11 독립적으로 개발된 요소들의 통합
2.12 설계 선택 사항 제한
2.13 훈련 기반
2.14 요약
2.15 참고 문헌
2.16 토론 질문
2부. 품질 속성
3장. 품질 속성 이해하기
3.1 기능성
3.2 품질 속성 고려 사항
3.3 품질 속성 요구 사항 명세: 품질 속성 시나리오
3.4 아키텍처 패턴과 전술을 통한 품질 속성 달성
3.5 전술을 활용한 설계
3.6 품질 속성 설계 결정 분석: 전술 기반 질문지
3.7 요약
3.8 참고 문헌
3.9 토론 질문
4장. 가용성
4.1 가용성 일반 시나리오
4.2 가용성 전술
4.3 가용성 전술 기반 질문지
4.4 가용성 패턴
4.5 참고 문헌
4.6 토론 질문
5장. 배포 용이성
5.1 지속적인 배포
5.2 배포 용이성
5.3 배포 용이성 일반 시나리오
5.4 배포 용이성 전술
5.5 배포 용이성 전술 기반 질문지
5.6 배포 용이성 패턴
5.7 참고 문헌
5.8 토론 질문
6장. 에너지 효율성
6.1 에너지 효율성 일반 시나리오
6.2 에너지 효율성 전술
6.3 에너지 효율성 전술 기반 질문지
6.4 패턴
6.5 참고 문헌
6.6 토론 질문
7장. 통합 용이성
7.1 아키텍처의 통합 용이성 평가
7.2 통합 용이성 일반 시나리오
7.
이 책에서 다루는 내용
◆ 아키텍처가 기술적 환경, 프로젝트 생애주기, 비즈니스 프로필, 자신만의 실천법에 어떤 식으로 영향을 미치고, 이들로부터 어떤 식으로 영향을 받는지 알아본다.
◆ 아키텍처를 통해 품질을 최적화하기 위해 검증된 패턴, 인터페이스, 실천법을 활용한다.
◆ 모빌리티, 클라우드, 머신러닝, 양자 컴퓨팅을 위한 아키텍처를 설계한다.
◆ 점점 더 중요해지는 에너지 효율성과 안전 같은 품질 속성을 위한 설계 방법을 알아본다.
◆ 아키텍처 관점에서 중요한 영향들을 파악하고 데브옵스와 배포 파이프라인을 활용하고 아키텍처 부채를 관리함으로써 시스템을 확장한다.
◆ 더 많은 가치를 전달하기 위해 조직에서의 아키텍처 역할을 이해한다.
지은이의 말
이 책을 쓰기 시작할 때 스스로 든 첫 번째 질문은 ‘아키텍처가 여전히 중요한가?’였다. 거의 모든 도메인과 품질 속성(quality attribute에 있어 클라우드 인프라와 마이크로서비스, 프레임워크와 참조 아키텍처가 부상하고 있는 가운데, 과연 아키텍처에 관한 지식이 아직도 필요한지에 대한 의문이 들 수 있다. 오늘날 아키텍트는 다양한 종류의 툴과 인프라 옵션 중에서 필요한 부분을 선택한 다음, 이를 인스턴스화하고 설정하기만 하면 만들어진다.
과거에도 그랬고 현재도 우리는 이게 사실이 아니라고 생각한다. 이것이 어느 정도 편견이 라는 점은 인정한다. 따라서 우리는 헬스케어와 자동차, 소셜 미디어, 항공, 국방, 금융, 전자 상거래 분야에서 일하는 중인 아키텍트 동료와 이야기를 나눴다. 결과적으로 우리는 아키텍처가 1판을 썼던 20년 전만큼 여전히 중요하다는 믿음에 확신을 얻을 수 있었다.
3판이 나온 이후로 IT 환경은 많이 변했다. 예전에 고려하지 않았던 일부 품질 속성은 많은 아키텍트에게 중요해졌다. 또한 소프트웨어가 우리 사회의 모든 측면에 계속해서 스며들고 있어 안전(safety 고려 사항이 많은 시스템에서 매우 중요해졌다. 이는 소프트웨어가 오늘날 우리가 모는 자동차를 어떤