drv***
2022-11-27

소프트웨어 개발을 시작할 때 필요한 실용 가이드북이다. 소프트웨어 아키텍처의 리스크는 무엇인지, 아키텍처 설계 원칙은 어떻게 적용하고 해결하는지, 유관 부서의 실무자를 어떻게 도울 수 있는지 등의 주제를 개발자가 흔히 겪는 경험을 기반으로 풀어냈다.
구상한 모든 것을 단번에 구현하던 수준이었던 소프트웨어 개발은 다중 스레드/프로세스, RPC, 프레임워크나 컴포넌트를 이용하는 것이 일상이 되었고, 갈수록 덩치가 커지고 복잡해지는 소프트웨어를 개발을 성공하기 위해 다양한 설계, 개발 방법 이론이 주목받게 되었습니다. 이론 제안, 정립과 병행하여 이를 실천할 수 있는 다양한 구현체, 도구의 개발 필요성도 생겼습니다. 좋은 소프트웨어 개발이라는 목적 달성을 위해 만들어진 소프트웨어 설계 원칙, 아키텍처/디자인 패턴, 언어별 각종 이디엄, UML, 그밖에 여러 소프트웨어 설계 도구들이 이러한 이론과 구현체입니다. 하지만, 소프트웨어 설계 이론은 실제 개발 방법으로 부드럽게 이어지는데 크고 작은 저항이 있습니다. 소프트웨어 개발에 있어서 설계가 필수불가결하다는 건 알겠는데, 설계하는 자는 기능/성능을 모두 명세하여 펼치고 훗날 확장성과 유지 보수까지 고려한 모든 것을 문서화 하고 싶고, 구현하는 자는 애자일, 동적 언어, 기능 위임 등 기술적 대안을 활용하여 충분히 예측 가능하고 상식적인 부분의 설계는 생략하고 싶어 합니다. 빠른 변화와 유연한 대응을 요구하는 현대 IT 환경은 이에 대한 대립을 더욱 첨예하게 만듭니다.
이 책의 주제는 리스크를 고려한 설계로 실용적인 결과물을 도출하라는 것입니다. 적정 수준의 설계 필요성과 가치에 대해 설명하고 고려할 것과 생략할 것을 결정하는 방법과 통찰력을 제공합니다. 평가된 리스크가 작다면 꼼꼼한 디자인으로 엄격한 설계를 하여 실패 확률을 줄이고, 그렇지 않다면 느슨함을 통해 효율성을 높이는 겁니다. 리스크를 고려하여 소프트웨어 개발의 설계를 추진하고(A Risk-Driven Approach) 이를 통해 모두가 공감하고 성공적이며 실용적인 소프트웨어 설계(Just Enough Software Architecture)를 얻을 수 있다는 게 이 책의 제목입니다. 다분히 이론적이고 선악식 접근으로, 단순 맹목적이 아닌 리스크의 크고 작음에 따라 적정한 수준의 설계 분량을 설정하고 시간을 투자한다는, 철저히 필요에 의한 실용적인 방법으로 소프트웨어 설계를 설명합니다.
이 책의 장점을 꼽자면 아래와 같습니다.
1.
컴퓨터를 전공하지 않거나 이론적인 바탕 없이 실무 경험을 만들어 가고 있는 이들을 위한 소프트웨어 아키텍처 관련 기본 소양서로 훌륭합니다. 다른 아키텍처 도서와의 접근방법 차이점은 차치하더라도 실제 소프트웨어 설계 및 정립 개념을 연구 사례와 예제를 곁들여 알아갈 수 있습니다.
2.
전문가의 관점으로 소프트웨어 개발 과정을 조망하며 모델링을 전체적으로 살펴볼 수 있는 좋은 기회를 제공합니다. 챕터 구성이 잘 되어 있고, 용어 정의 집, 참고 문헌의 정보와 단어에 해당하는 책 내용을 바로 찾아볼 수 있는 색인이 있어 활용도가 높습니다.
3.
관련 개념과 정의, 용어를 쉽게 설명합니다. 이 책의 대상은 책 주제와 내용 특성상 충분한 이론적 바탕이나 기본적인 개발 경험을 갖춘 중급 이상의 개발자나 동등한 경험을 갖춘 초급 아키텍트입니다. 예를들어 [캡슐화 및 파티셔닝(11장)]의 경우 모든 개발자가 언젠가는 알아야 되는 내용을 읽기 쉽고 뚜렷하게 구성하여 서술하고 있습니다. 다만, 독자의 사전 지식에 따라, 예를들어 추상 자료형(ADT)의 경우 70년대 초반 개념으로 내용이 진부할 수도 있고, 책 중반의 상단 분량의 모델링과 관련된 내용은 지루할 수도 있습니다.
4.
관련 분야 전문가가 검증하고 실제 업계에서 두루 사용되는 표준 이론 및 어휘를 배우고 확인할 수 있습니다. 이런 의미에서 훌륭한 레퍼런스 도서이며, 모니터 옆 책장 한켠을 차지할 만하고 이러한 관점에서 본 도서의 두꺼운 표지와 양장본은 좋은 선택이라 생각됩니다.
5.
책 내용을 서점에서 요약하여 간단히 읽고 싶다면 3장을 읽어 볼 것을 추천합니다. 리스크를 정의하고 진단법을 개괄한 뒤 리스크 주도 모델에 대한 설명과 적용 방법을 안내하고 있습니다.
소프트웨어 아키텍처를 설명하기에 분량이 얇아 기대보다 많은 것을 다루지는 않을 수 있습니다. 개발 도서처럼 결과가 가시적이거나 실습을 통해 확인하기는 어려운 부분이 있는 만큼 자칫 이론 중심적이고 서술이 장황하게 느껴질 수도 있습니다. 또한 오늘날 위협으로부터의 보안이 기본적으로 반영된 설계를 해야 할 때는 전혀 맞지 않는 방법일 수도 있습니다. 하지만 리스크에 집중하고 모델링 관련 통찰력을 느끼는 데는 전혀 문제되지 않습니다. 이 도서에서 습득한 내용을 의식적으로 개발과정에서 실천하고 있다면 한 단계 높은 수준으로 올라선 개발자가 되었다고 자부심을 가져도 될 것 같습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."