24 September 2023

진화적 아키텍처는 소프트웨어 아키텍처의 진화와 발전에 대한 심도 있는 이해를 제공하는 책이다. 이 책은 기업들이 변화하는 요구사항과 기술 환경에 적응하며, 지속 가능하고 유연한 아키텍처를 구축하는 방법에 대해 탐구한다. 다양한 사례 연구와 실제 경험을 기반으로 한 이 책은 아키텍처를 설계하고 유지하는 데 있어 중요한 원칙과 패턴을 제시한다.

  • 실용적인 접근법: 이 책은 이론적인 내용과 실용적인 지침을 적절하게 조화시켜, 현실 세계의 문제에 대응할 수 있는 방법을 제시한다.
  • 다양한 사례 연구: 다양한 산업과 환경에서의 실제 사례 연구는 독자에게 깊은 통찰력과 함께 다양한 상황에서의 적용 방법을 제시한다.
  • 진화적인 관점: 소프트웨어 아키텍처의 지속적인 변화와 발전에 대한 중요성을 강조하며, 이를 실현하기 위한 전략과 기술을 소개한다.

서비스를 출시하고 나면 그때부터가 진짜 시작이라는 얘기를 많이 한다. 서비스가 생명력을 갖고 진화해 나가기 위해 고려하게 되면서 고민하는 지점들이 생기게 되는데 업무를 하며 만나는 용어들에 대한 설명을 친절하게 설명해 주기도 한다. 예를 들면 카오스엔지니어링, 카나리아 배포, 데이터 메시, 데이터 제품 퀀텀, 협력 퀀텀, 마이크로서비스 아키텍처로의 진화, 트리거와 저장 프로시저의 대체 등의 현실에서 마주할 수 있는 이슈들에 대해 언급한다.

이 책은 그림 4-1에서 볼 수 있는 피트니스 함수 로드맵을 통해, 애플리케이션의 다양한 측면을 점검하며 발전시켜나갈 수 있는 방법을 제시한다.

책 내용은 마이크로서비스 아키텍처와 통합에 큰 중점을 둠으로써, 엔터프라이즈 환경에서의 통신과 어플리케이션 간의 의존성 관리에 대한 실용적인 지침을 제공한다. 또한, 코드의 클래스/패키지 구조와 그에 따른 구심/원심 커플링, 임포트 지향성 등을 자세히 다루며, 개발자에게 구조적인 판단 기준을 세워준다. 제로데이 취약점과 같은 보안 이슈에 대한 점검과 부하 테스트를 통한 성능 평가, 그리고 접근성과 가용성에 대한 중요성도 강조된다. 또한, 상속 검사와 어노테이션 검사 등을 통해 코드의 순환 복잡도와 안정성을 평가하는 방법을 배울 수 있다.

카오스 엔지니어링의 원칙을 통해 시스템의 복잡성과 불확실성을 관리하는 동시에, 오픈소스 라이브러리의 적법성과 사용에 대한 주의점도 소개된다. 선행형 접근과 반응형 접근의 차이를 명확히 구분하며, 추상도와 불안정도, 그리고 주계열과의 거리에 대한 평가 기준을 배울 수 있다. 다양한 종류의 사례 연구를 통해, 실제 엔터프라이즈 환경에서의 애플리케이션 포팅 원칙과 구조 검사 방법 등이 구체적으로 어떻게 적용될 수 있는지에 대한 예시를 제공한다. 이를 통해 독자는 피트니스 함수를 효과적으로 사용하여, 진화하는 아키텍처를 구축하고 유지보수하는 방법을 배울 수 있다.

다만 이 책은 초보자가 보기에는 책의 내용이 상당히 고급 지식을 요구하기 때문에, 소프트웨어 아키텍처에 대한 기본 지식이 부족하다면 다소 어렵고 추상적일 수 있다. 또 구체적인 해결책이나 답을 제시하지 않고 방법론 위주로만 설명한다.

현재 개발, 운영하고 있는 서비스의 아키텍트를 어떻게 발전시켜나가야할지 고민이 된다면 그 키워드를 함께 고민해 볼 수 있는 책이지 않을까 싶다.

이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 책을 제공받아 작성했습니다.