도서 리뷰 : 적정 소프트웨어 아키텍처

nofence 2022. 6. 26. 23:39

소프트웨어 엔지니어링을 통해 소프트웨어를 개발하는 과정은 지난하고 복잡하다. 요구 사항을 분석하고 도출된 결과를 통해 설계를 해 나갈 때, 다양한 어려움이 도사리고 있으며, 예기치 못한 숱한 난관이 도처에 드리우고 있다. 때로는 요구 사항을 통해 분석된 결과를 전면 재수정해야 할 필요가 있을 수 있고, 요구 사항 자체가 전복되어 처음부터 다시 그것을 위한 노력이 투여되는 상황도 존재한다. 전형적인 워터폴 방식의 개발 프로세스가 지배적인 구조라면, 이런 과정이 고역 그 자체일 수 있겠지만 애자일로 무장된 개발 조직에서는 고객의 요구 사항을 그때그때마다 피드백 받고 그것을 개발 과정에 반영하며 점진적인 개선을 꾀한다. 

 

그런데 애자일 방식을 활용하더라도 소프트웨어를 개발하는 과정에는 리스크가 항상 존재한다. 워터폴 방식이든, 애자일 방식이든 소프트웨어 개발 과정 자체가 예측불허한 리스크를 태생적으로 수반하고 있음을 부정할 수 없는 현실에 직면하게 된다. 어떻게 하면 리스크를 최소화하고 적정하게 관리하면서 소프트웨어를 개발할 수 있을지에 대한 가이드를 제공하는 바로 오늘의 주인공, ' 적정 소프트웨어 아키텍처'라는 책에 대해 이야기를 풀어 나갈 생각이다. 

 

 

이 책은 오랜 세월 동안 소프트웨어를 개발하며 지내 온 베테랑 저자의 생생한 경험과 지식이 녹아 들어간 서적이다. 그런 저자의 커리어가 증명하듯, 책 전체를 관통하며 주장하는 리스크 주도 접근법을 통한 소프트웨어 아키텍처 설계라는 발상이 무척 생경하게 다가왔지만 책을 완독하고 덮는 순간 이루 표현할 수 없는 뿌듯함을 느낄 수 있는 시간을 가질 수 있었다. 

 

소프트웨어 아키텍처가 무엇인지에 대한 물음으로 시작해서 소프트웨어 아키텍처의 중요성을 갈파하며, 아키텍처 특성 별로 아키텍처 무관 설계, 아키텍처 집중 설계, 아키텍처 상향 설계라는 새로운 방향을 제시한다. 이윽고 리스크 주도 모델에 대한 세세한 특성을 풀어 나가며, 리스크 모델이 왜 필요한지에 대한 저자의 고찰과 진지한 논의가 계속 이어진다. Part 1의 모델링과 관련된 조언을 통해 아키텍처를 어떻게 설계할지에 대한 실질적인 조언과 가이드를 여실히 제공 받을 수 있었다. 

 

Part 2에서는 아키텍처 모델링에 대한 여럿 주제를 놓고 이야기가 계속 진행된다. 도메인 모델, 디자인 모델, 코드 모델에 대한 개별적 특성과 구조에 대해 상세한 설명이 풀이되고 캡슐화 및 파티셔닝을 통해 어떻게 아키텍처가 자리잡게되는지에 대해 인사이트를 얻을 수 있게 된다. 계속해서 모델 요소와, 모델 관계에 대한 세부 논의를 통해 아키텍처 내부가 어떻게 서로 연관되고 상호작용하게 되는지 학습하게 되며, 아키텍처 스타일에 대한 이야기를 통해 현실 세계 적용 가능한 아키텍처의 종류를 배우게 된다. 

 

이 책은 참고로 하드 커버로 제작되었다. 하드 커버로 구성된 책을 참 오랜만에 접하게 되었는데, 하드 커버가 제공하는 나름 독특한 분위기와 책의 겉표지가 절묘하게 어우러져 책을 받은 즉시 기분이 좋았다. 이 책 전체를 횡단하는 리스크 주도의 접근을 통해 소프트웨어 아키텍처를 설계하는데에 있어, 어떻게 리스크를 최소화하고 적정 수준으로 리스크를 관리할 수 있을지 궁금한 사람이라면 응당 이 책을 반드시 일독해야 한다. 소프트웨어 아키텍처를 제대로 설계하고 리스크에 휘둘리지 않는 아키텍트가 되고 싶은 사람, 그런 아키텍트를 지향하는 개발자라면 꼭 이 책을 접해 보길 바란다. 

 

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