요즘 신규 프로젝트를 한참 진행 중이어서 이것저것 다양한 개발론과 아키텍처 설계에 관한 책들을 공부하고 있는중이다.
그렇게 꽤나 많은 분량의 책들을 공부해가던 중, 한빛미디어에서 신간으로출간된 "적정 소프트웨어 아키텍처"라는도서가 눈에 끌려 이번 달 리뷰 도서로 지정하여 리뷰하게 되었다.
이 책의 핵심 내용을 정말 단순히 요약하자면 책의 부제로 나와있는 것과 동일하게 "리스크 주도 접근법에 근거한 리스크 우선순위의 아키텍처 이론이라 할 수 있을 듯하다."
뭔 말인고 하니, 우리가 아키텍처를 설계하고 계획할 때, 모든 것들을 두루 살펴 상당한 시간을 투자하는 것보단, 우선순위가높고 시급도와 리스크가 높은 테스크를 점수화한 후, 이를 우선적으로 아키텍처에 반영하는 형태의 개발론을선보인 것이다.
마치 예전에 스티브 코비 박사가 저술하였던 성공하는 7가지 습관에있는 것처럼 중요한 것을 우선시 수행하라 와 동일하게 말이다.
이 책의 구성은 대부분이 위에서 언급한 리스크들을 어떤 순위로 정렬할 것이며 어떻게 해야 효과적으로 아키텍처에반영할 수 있는지를 다양한 예시와 적절한 유희적 언어를 표현해가며 술하고 있다.
【책의 구성】 '적정 소프트웨어 아키텍처 - 리스크 주도 접근법' 책은 어떤 책일까?
이 책은 대학교 도서로 쓰기에 안성맞춤인 책이다. 솔직히 컴퓨터 분야에 대해서 전무한 사람이 읽기엔 허들이 있는 책이고 읽는다 해도 많은 것을 얻긴 힘들 것이라보인다. 왜냐하면 생소한 언어뿐만 아니라 실무 입장에서 경험을 해보고 책을 읽어야 훨씬 많은 것이 와닿을법한 내용들로 구성되어 있기 때문이다.
이 책은 각각의 "모델"들을예로 들어가며 책을 술하고 있다.
여기서 말하는 요즘 핫했던 딥러닝의 모델들을 의미하는 것이 아니다. 여기서의미하는 모델은 각 도메인에 속하는 지식들과 대표하는 하나의 특징 등을 의미하는 것이다. 따라서 딥러닝의모델과는 사뭇 다르므로 혼동해서는 안 된다.
이 책의 구성은 다양한 모델들을 언급하고 이에 맞는 리스크 기반의 접근법에 대해서 설명하고 있다.
도메인 모델, 디자인 모델, 코드모델 그리고 각 모델들의 구성과 서로의 상관관계들도 잘 서술하고 있다.
솔직히 이 책은 제법 시간을 들여서 읽어봐야 많은 것을 얻을 수 있는 책이며,간략하게 책의 구성과 흐름 그리고 전반적인 설명에 관한 내용을 알고자 한다면 챕터 3과챕터 4를 충분히 읽어보길 권한다.
3 챕터 : 리스크 주도모델
이 장에서는 리스크 주도 모델이 과연 무엇인지, 그리고 어떤 것이 리스크 모델의 특징인지를 술하고 있다. 거의 이책의 가장 핵심이라 할 수 있다. 이외의 자세한 내용은 아키텍처 모델링이라는 섹션 이후부터 자세히 설명하고있으므로 이 챕터를 읽어보며 궁금한 부분은 해당 섹션의 챕터를 읽어보면 된다.
리스크 모델은 그렇다면 무엇일까?
단순히 요약하면 가장 시급도가 높고 빠져서는 안되는즉 반드시 고려되어야 하는 요소들을 리스크 모델이라고 한다.
가령, 나는 차를 디자인하려 한다.차를 디자인할 때 가장 핵심 모델은 무엇인가? 바로 차는 인간을 대신하여 효과적으로 움직일수 있어야 한다는 것이다.
그렇다면 어떻게 해야 효율적으로 움직일 수 있을까? 이때 효율적으로움직이기 위한 필수 요소들은 무엇이고 반드시 빠져서는 안되는 요소들은 무엇일까?
아마도 타이어, 엔진, 그리고골격, 그리고 차 외피 정도를 들 수 있을 것이다. (필자는자동차를 전공하지 않아, 대략적으로 생각나는 대로 적어본 것이므로 너그러이 봐주시길 바란다.)
이것들이 리스크 주도 모델을 구성하는 핵심 리스크 요소가 된다.
4 챕터 : 홈 미디어플레이어
3장의 설명만으로는 부족할 것이다. 왜냐하면 3장의 대부분의 내용은 글로써 설명하고 있고, 글이라고 해봐야 핵심 개념 정도만 예제를 들어 설명하는 정도의 내용이기 때문이다.
이런 내용들만으로는 독자는 쉽게 피로해질 것이고 금세 책에 흥미를 잃어버릴 가능성이 있다. 그래서 저자는 다음 장에서 바로 적절한 소프트웨어를 예로 들어가며 리스크 모델이 무엇인지에 대해서 예시를 설명하고있다.
필자는 이 책에서 이 부분이 가장 흥미로우면서도 가장 핵심적인 내용들을 많이 담아내고 있지 않나 싶었다. 물론 세부적인 내용들은 뒤에 있는 챕터들에서 설명하고 있으나 책의 전반에 걸친 내용들을 이 챕터에서 잘 나타내고있었기 때문이다.
이 챕터에서는 소프트웨어 프로그램을 기획하며 리스크 모델을 뽑고, 그리스크 모델 기반으로 어떤 식으로 코드들을 구성할지에 대해서 잘 술하고 있다
【 "적정 소프트웨어 아키텍처 - 리스크 주도 접근법"을 읽고 나서…….】
프로그래머 세계에이런 말이 있다.
"백문이 불여 일타"
즉 백번 물어보는 것보다, 직접 한번 타이핑하고 구동시켜보는 것이의미 있다는 말이다.
컴퓨터 공학은 실용학이기에 이제껏 필자는 위의 글을 불문율이라 생각하고 지향하며 지키고 살고자 하였다. 하지만 한번 타이핑해 보는 것만큼 중요한 것은 기본기에 대한 지식과 역량을 쌓는 것이라는 것을 요즘 들어 깨닫게된다.
책을 읽고 학습하고 이해하는 것으로는 충분하지 않을 수도 있다. 또한책의 내용은 시간이 흐르면 자연스레 잊히게 되고 책의 성문적인 내용을 현실에 그대로 적용한다는 것은 어찌 보면 어리석고 고된 일이라 할 수도 있다.
하지만 책을 읽으며 한걸음 한걸음 쌓아올린 지식들과 심도 있는 고민들은 자신도 모르게 손으로 그리고 몸으로 그리고행동에 옮겨붙게 되어 있다.
따라서 코딩도 중요하지만 훌륭한 프로그래머, 나 자신을 이겨낸 진정한개발자가 되고자 한다면 기초 학문과 다양한 이론적 접근에 대해서도 항상 게을리하지 않고 공부해야 할 것이라 생각된다.
#본 도서는 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.