소프트웨어 아키텍처 101 표지

이 책을 읽기 전에는 소프트웨어 설계(Design)하는 일과 아키텍트가 하는 일이 비슷하다고 생각했다. 그런데 아키텍트는 디테일한 소프트웨어 설계는 하지 않을 뿐만 아니라 더 다양한 역할을 수행하고 있었다.

  • 아키텍처 결정을 내린다.
  • 아키텍처를 지속적으로 분석한다.
  • 최신 트렌드를 계속 따라간다
  • 아키텍처 결정의 컴플라이언스를 보장한다
  • 다양한 기술과 경험에 노출된다
  • 비즈니스 도메인 지식을 보유한다
  • 대인 관계 기술이 뛰어나다
  • 정치를 이해하고 처세를 잘한다

챕터 1에서는 소프트웨어 아키텍처를 구성하는 기본 요소와 아키텍처를 분석하는 기법에 대해서 설명한다. 부제에서 말했듯이 ‘엔지니어링 접근 방식으로’ 소프트웨어의 특성을 수치화하는 시도들에 대해서 알려준다.

챕터 2에서는 여러가지 아키텍처 스타일을 소개하고 각 스타일 별 아키텍처 특성을 별점으로 제시하고 있다. 트레이드 오프를 고려하고 아키텍처 결정에 도움을 줄 유익한 내용들로 가득하다.

챕터 3에서는 아키텍트에 필요한 소프트 스킬에 대해 설명한다.

책을 읽으면서 아키텍처 결정에 있어 어떤 정답이 있을 거라는 기대를 좀 했었다. 하지만 아키텍처 결정은 정답이 있는 문제가 아니라, 컨텍스트를 고려하여 각 아키텍처 스타일이 가진 트레이드오프를 고려하여 가장 좋은 스타일을 선택하는 것임을 알게 됐다. 또 그 결정을 개발자들에게 정당화시켜야 한다. 역자의 말처럼 소프트웨어 아키텍처의 세계를 컴팩트한 분량으로 담아낸 책이기에 개발자, 아키텍트 지망자들에게 추천한다.

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.