hji7***
2025-10-26

소프트웨어 아키텍처의 핵심 원리를 배우는 입문서!
"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다."
"헤드 퍼스트"는 독자가 책을 읽고 되도록이면 많은 걸 기억할 수 있도록 구성한 오라일리 시리즈입니다. 많은 그림과 연습문제가 포진되어 있어서, 책을 열심히 따라간다면 내용의 상당수를 기억할 수 있게 되어있습니다.
저도 기억력에 대해 여러 책을 읽었는데요. 우리의 기억은 무언가를 머릿속에 남겨두는 게 아니라 머릿속 어딘가 저장되고 있는 데이터에 접근 경로를 만들어 두는 개념이라고 하네요. 그래서 머리에 밀어 넣는 것보다 머릿속에서 끄집어 내는 행위를 많이 해야 기억에 남는다고 합니다. 그런 면에서 "헤드 퍼스트"의 구성은 정말 신의 한수 인것 같습니다.
[책의 구성 방식]
<헤드 퍼스트 소프트웨어 아키텍처>는 소프트웨어 아키텍처의 핵심 요소들을 설명한 다음 각 요소를 사용해 주요 아키텍처들을 유도하는 식으로 구성되어 있습니다.
"소프트웨어 아키텍처의 핵심"은 "아키텍처 특성", "아키텍처 결정", "논리적 컴포넌트", "아키텍처 스타일" 그리고 "아키텍처 결정 기록"입니다. 사각형 다이어그램으로 형상화하고 있는데요. 각 요소에 대해 자세히 설명하고 다양한 문제를 풀게 해서 독자들이 충분히 익히도록 되어 있습니다.
책에서 설명하는 주요 아키텍처들은 "레이어드", "마이크로커널", "모듈러 모놀리스", "이벤트 기반", "마이크로 서비스"입니다. 각각의 아키텍처를 사용하는 가상의 프로젝트를 만들고 프로젝트의 요구사항을 통해서 해당 아키텍처를 선정하는 과정을 밟게 하는데요. 앞에서 이야기한 "소프트웨어 아키텍처의 핵심" 요소들을 찾고 마지막에 "아키텍처 결정 기록"까지 해보도록 유도합니다.
물론 이 과정에서 주요 아키텍처들에 대한 깔끔하고 간략한 설명이 나오는데요. 어느 하나 버릴 게 없었습니다. 그리고 중간중간에 나오는 아키텍처들의 특성 표나 그림을 사용한 설명들은 강한 인상을 남깁니다.
[소프트웨어 아키텍처와 전체를 보는 관점]
<프로그래머의 뇌>를 보면, 전문가와 비전문가가 뇌를 사용하는 방법이 다르다는 것을 이야기합니다. 그 주요한 예가 정크인데요. 청크라 연관된 개념을 하나의 묶음으로 기억하는 것을 말합니다. 인간의 뇌 속에는 4개 정도의 작업 메모리 공간이 있기 때문에 무슨 작업을 진행하던 개념적으로 4개 이상은 머릿속에 넣고 운영할 수 없거든요. 그러나 전문가들은 청크를 사용할 수 있어서 비전문가보다 전문분야에 작업 기억 공간을 훨씬 효율적으로 쓸 수 있습니다.
예를 들어 체스판에 체스를 두던 상태로 놔두고 체스 마스터와 일반인에게 말들의 위치를 기억해 보라고 하면, 체스 마스터가 훨씬 잘 기억한다고 합니다. 바둑 기사들도 고수로 가면 바둑 한판의 수를 모두 기억할 수 있게 되죠.
게다가 전문가들의 관점은 상당히 거시적이기도 합니다. 세세한 부분 부분도 잘 알지만 전체 구조를 파악하고 아키텍처로서 적절한 트레이드오프를 찾아내거든요. 이러한 특성은 <지구촌>이라는 책에서 이야기하는 "그라운드"적인 특성을 가집니다. 그라운드는 대상의 본질을 뜻하는 <지구촌>책의 용어이거든요. (그라운드에 대비되는 용어가 피겨입니다. 일종의 스냅샷으로 어떤 특징적인 상황 상태를 나타냅니다.)
본질을 표현하는 그라운드, 본질의 개념은 말이나 글보다 그림으로 표현할 때 잘 전달됩니다.
그런 면에서 <헤드퍼스트 소프트웨어 아키텍처>의 그림들은 상당히 마음에 들었습니다. 너무 많은 개념이 한꺼번에 몰려 오기 때문에 기억하기 힘든 면이 있는데 그걸 일일이 그림으로 표현해서 관계성을 찾아주고 개념적 특징을 한 번에 깨닫게 해주기 때문입니다.
[두 번 읽어 보기]
저는 책을 읽으면, 한 번 더 타이핑을 하며 정리하는 편입니다. 리뷰는 보통 타이핑 다하고 정리할 때 하는데요. <헤드퍼스트 소프트웨어 아키텍처>에 경우 두 번째 타이핑하며 정리하는 동안 개념들이 좀 더 친근해지고 설명이 쉬워지는 걸 느꼈습니다. 그래서 이 책을 읽으시는 분들이라면 꼭 두 번 읽어보시는 걸 추천합니다.
[AI 시대 아키텍처]
최근 시니어 개발자들에 대한 구인 요구가 가파르게 올라가고 있다고 합니다. 그 이유는 AI 발전 때문인데요. AI가 작업을 해주게 되면 그 작업이 제대로 되었는지 확인하는 걸 신입 개발자들보다는 시니어가 낫다는 게 관계자들의 평가입니다.
하지만 저는 조금 다른 시각으로 일련의 사건을 보게 됩니다. AI가 하는 건, 사실 피겨에 해당하는 일입니다. 일종의 스냅샷이죠. 스냅샷을 모아서 본질적인 결과를 만들어 내려면 본질을 이해하고 아키텍처를 이해해야 가능한 일입니다. 그렇기 때문에 AI 시대에 시니어 개발자들이 인기 있는 게 아니라, 시니어 개발자들 중에 아키텍처를 이해하는 사람들이 많기 때문에 시니어 개발자들이 인기 있는 거라 봐야 합니다. 다시 말해서 AI가 더 발전하게 된다면 아키텍처에 대한 이해도가 높은 개발자들이 생존확률이 높아진다는 이야기도 됩니다.
여러모로 중요한 책이 딱 중요한 시점에 출간된 것 같아서, 반가운 마음으로 읽었던 것 같습니다.