-
-
소프트웨어 아키텍처 The Basics - 모던 엔지니어링을 위한 소프트웨어 아키텍처의 모든 것, 제2판
마크 리처즈.닐 포드 지음, 류광.307번역랩 옮김 / 한빛미디어 / 2025년 11월
평점 :
※ 한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.
이 책은 소프트웨어 아키텍처에 대한 개념부터 실무에서 접해볼 수 잇는 다양한 내용을 담고 있어 기본기를 다질 수 있는 책이다.
소프트웨어 아키텍처가 어떤 것인지에 대한 설명을 시스템의 구조와 시스템의 행동방식의 구조를 결정하는 여러 논리적인 컴포넌트들의 결합을 토대로 아키텍처의 스타일과 관련 결정을 구성하며 시스템의 구성 방식에 대한 규칙들을 정의하는 아키텍처적 결정에 대한 요소들로 정의한다.
아키텍처에 대한 정의를 통해서 어떻게 작동하는지, 그리고 왜 이러한 사항들을 결정했는지에 대한 파악을 할 수 있다는 점들을 소프트웨어 아키텍처의 법칙들로 이해할 수 있도록 설명한다.
설계자의 눈으로 아키텍처의 관점에서 바라보는 사고인 어떤 것을 변경하려고 할 때 전반적으로 어떤 영향을 미칠지 이해하고, 시스템의 각기 다른 부분들을 어떻게 상호작용시켜야 하는지에 대한 파악과 분석인 아키텍처적 사고를 소개한다.
또한 혼동할 수 있는 아키텍처와 설계의 차이도 설명하는데, 시스템의 겉모양보다는 구조에 초점을 두는 즉, 시스템의 구조와 형태를 결정하는 소프트웨어 아키텍처와 시스템의 외관 즉, UI의 느낌과 모양에 초점을 두는 설계의 차이를 이해할 수 있도록 한다. 뿐만 아니라 소프트웨어 아키텍처 특성과 정의를 통해서 운영적, 구조적, 클라우드, 횡단적인 아키텍처의 특성도 소개하며, 이를 통해 아키텍처의 특성에 대한 범위를 지정하는 데에 영향을 미치는 부분에 대한 내용과 함께 논리적인 관점에서 컴포넌트를 정의하고 아키텍처를 이해하고 이를 작성하는 내용도 다룬다.
후반부에는 아키텍처의 스타일에 대한 기초개념과 함께 모놀리스와 분산 아키텍처에 대한 스타일을 자세히 설명한다.
특히 분산 아키텍처에 대한 8가지 오류, 착오에 대한 내용을 다루는데 이 부분은 반드시 분산 아키텍처 환경에서 개발을 하거나 서비스를 운영하는 개발자면 혹여 내가 잘못된 내용을 알지는 않았는지 이 책에서 다루는 8가지 오해를 다루는 내용을 통해서 잘못된 내용을 알고 있었다면 정정해보길 바란다.
이 외에도 분산 아키텍처에 대한 다양한 스타일을 소개한다. 예시도 함께 소개하기 때문에 내가 서비스하는 환경은 어떤 스타일로 운영이 되고 있고 이러한 스타일에는 어떤 특징과 장/단점이 존재하는지도 정리해가며 이해할 수 있기를 추천한다.
내가 가장 관심있게 보았던 부분은 아키텍처의 스타일을 시간이 지나면서 여러 요인에 의해 바뀌는데 어떻게 하면 각 상황에 맞는 아키텍처 스타일을 선택하는 것인가라는 부분이다.
과거에 경험한 여러 사례들을 통해서 미래의 아키텍처를 설계할 때 과거의 아키텍처 스타일에서 발견된 여러 특징을 결합하고 단점을 해결하려는 노력이 반영되는 경우가 많은데 어떻게 하면 각 상황에 맞게 아키텍처 스타일을 결정하는 기에 대한 기준들을 다룬다.
도메인에 따라서도 중요한 측면을 최대한 많이 분석하고 서비스를 운영함에 따라 미치는 여러 요인을 이해할 필요가 있으며, 또한 기타 외부 요인을 지원하는 아키텍처의 특성들을 식별 및 파악하고 데이터 관련 사안에 대해서는 여러 이해관계자들과 잘 협력해야 하며, 배포하는 환경인 클라우드에서도 각 애플리케이션이 얼마나 많은 데이터를 저장하고 처리하는지에 대한 파악이 중요하다는 점과 함께 탄력성, 확장성의 중요성도 설명한다.
뿐만 아니라 비용 문제에 대해서도 설계 시 고려 요소가 될 수 있고, 개발 프로세스들의 프로젝트 요인도 아키텍처의 설계 영향 미칠 수 있다는 내용도 함께 설명한다.
이외에도 재사용, 통신, CQRS, 인프라의 각 요소들에서의 우리가 잘 알고 있는 아키텍처 패턴도 소개하며, 아키텍처적 결정 사항에 안티패턴과 결정을 위한 문서 및 도식화 도구, 서비스를 개발하고 함께 운영하는 여러 이해 당사자간의 협업과 협상, 리더십 스킬의 관점에서도 아키텍처를 설계하는 중요 요소임을 이해할 수 있다.
책을 완독하고 나서 들었던 생각은 이 책은 아키텍처를 설계함에 있어 설계의 개념 및 방식, 법칙인 기술적 내용 뿐만 아니라 팀, 협업, 협상, 리더십 스킬의 관점까지 이르는 폭넓은 내용을 다룬다는 점에서 깊이있는 지식과 기술을 요구하는 아키텍처가 되기를 원하는 분들에게 실무에서 참고할 지침서가 될 것이라고 생각한다.
개발자인 나도 많은 도움이 되었던 책이다.