sangj***
2023-03-26

소프트웨어 아키텍처 문제-해결을 위한 지식과 실용적 프레임워크를 다루는 안내서
소프트웨어 아키텍처는 소프트웨어 시스템의 구성 요소와 그들 간의 상호작용, 그리고 시스템의 동작 방식 등을 결정하는 데 사용되는 설계 원칙과 전략의 집합이다. 이는 소프트웨어 시스템을 구성하는 다양한 요소들 간의 관계와 상호작용을 명확하게 정의하고 시스템의 기능을 충족시키는 데 필요한 속성을 고려하여 시스템을 설계하도록 하는 근간이 된다.
또한 소프트웨어 아키텍처는 시스템의 확장성, 유지 보수성, 재사용성, 이식성 등의 측면에서도 매우 중요하다. 잘 설계된 아키텍처는 시스템을 더욱 유연하고 확장 가능하게 만들어주며 소프트웨어 개발의 생산성을 향상시키고 이는 곧 개발 비용과 시간을 절감할 수 있도록 한다.
<소프트웨어 아키텍처 The Hard Parts>는 <소프트웨어 아키텍처 101>의 후속작으로, 이전 작에 비해 더 실무적이고 특히 분산 아키텍처를 다루고 있다. "소프트웨어 아키텍처 The Hard Parts" 도서의 부제는 "분산 아키텍처를 위한 모던 트레이드오프 분석"이다. 내용은 부제 그대로 분산 아키텍처를 생성하기 위해 모든 것을 분산하는 것이 정말 옳은 판단인지를 평가하고 그 결과를 예측하여 결정하는 것을 다루고 있다.
분산뿐만 아니라 합쳐야 하는 경우를 분해인/통합인 두 가지 관점에서 아키텍트가 올바른 의사 결정을 내릴 수 있도록 도움이 되는 실무의 내용을 다루고 있다.
책은 파트 1과 파트 2로 구분되어 있는데 파트 1은 떼어놓기 과정이다. 분산 아키텍에서 트레이드오프를 분석하기 위해 아키텍처를 하나씩 떼어내어 이해하고 구조 측면에서 각 요소가 정적으로 결합되는 방식을 학습한. 분산 아키텍처에서 데이터의 중요성이 커지고 있기에 데이터를 다룬 내용들이 뒤를 잇는다.
파트 2는 다시 합치기이다. 시스템을 분해하여 분산시키고 때에 따라 다시 시스템을 합쳐 하나의 응집된 단위로 구동해야 하는 경우가 있다. 이때 서비스 통신, 계약 분산, 분산 워크플로, 분산 트랜잭션, 데이터 오너십, 데이터 액세스, 분석 데이터 관리 등 다양한 어려운 관계를 어떻게 풀어갈 것인지를 설명한다.
내용의 레벨은 제목 그대로 딱딱하고 어려움이 공존한다. 기존의 101 도서를 미리 읽지 못한 독자라면 이 책과 병행하여 학습하기를 권고한다.