아키텍트 첫걸음
한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.

불과 몇 년 전만에도 아키텍트(Architect)라는 직무를 가진 사람들이 좀 보였다. 회사, 혹은 특정 프로젝트에서 가장 경험이 많은 시니어 개발자가 주로 가지고 있는 직무였는데, 신입 시절의 나는 시스템, 애플리케이션 구조를 설계하고 개발에 영향을 주는 여러 가지 주제에 대해 의사결정을 하는 시니어 개발자가 아키텍트인가 보다는 생각을 가지고 있었다. 연차가 많이 쌓이면 맡게 되는 직무 정도라는 인식이었다.
아키텍트는 기업의 비즈니스 목표와 IT전략을 효과적으로 연결하기 위한 최적의 기술 아키텍처를 설계하고 구현하는 일을 하는 사람이다. 만일 당신이 회사의 제품, 혹은 진행 중인 프로젝트에 영향을 주는 기술적 결정을 했거나 할 수 있는 사람이라면 아키텍트 직무를 수행하고 있다고 생각해도 좋다. 단순히 요구사항을 만족하는 기능을 구현하는 것에 그치지 않고 하드웨어 및 소프트웨어 관련 기술을 활용해 고객과 제품의 비즈니스 목표를 달성하고, 이 과정에서 발생할 수 있는 기술적 리스크까지 고려하며 최적의 의사결정을 하는 것이 아키텍트가 하는 일이다.
아키텍트는 아키텍처를 설계하는 사람이다. 시스템은 특정 과제를 해결하고 사용자에게 가치를 제공하는 것을 목표로 하는데, 이를 위해서 미리 갖춰야 할 특성이 있다. 이런 특성을 구현하는 과정, 다른 방식으로 말하면 소프트웨어를 어떻게 설계하고 앞으로 어떻게 발전시킬지를 결정하는 기본 원리와 원칙이 아키텍처다. 시스템 레벨에서 모놀로 식, 마이크로서비스를 선택하는 것도, 애플리케이션 레벨에서 레이어드, 헥사날 아키텍처를 선택하는 것도 아키텍처를 설계하는 일이다. 즉 아키텍트는 최적의 아키텍처를 설계하기 위해 많은 선택지 중에서 하나를 결정하는 사람이라고 봐도 될 것 같다.
이 책은 그런 아키텍트 일을 해야 하는 사람이 어떤 일을 어떻게 해야 하는지에 대해서 다루고 있다. 요즘은 아키텍트라는 직무로 활동하는 사람이 많진 않지만 그것은 아키텍트가 해야 할 일을 구성원이 나눠서 하고 있어서이지 아키텍트가 하던 일이 이제 더 이상 필요하지 않아서가 아니다. 이 책은 아키텍트가 프로젝트 생명 주기 동안 할 일과 결정해야 할 일, 그리고 무엇을 어떻게 준비해야 하는지를 이해하기 쉽게 설명한다. 보통 이런 주제를 다루는 경우 좋은 게 좋은 거다라는 느낌으로 장황하거나 뭔가 읽었을 때 당연한 이야기를 해서 공감이 안 되는 경우가 많은데 무엇을 어떻게 해야 하는지를 예시와 함께 알려주는 점이 굉장히 좋았다.
또 우리가 정말 자주 말하고 듣는, 하지만 정확한 뜻은 대답하기 어려운 그런 용어들을 일목요연하게 다룬다. 클래스, 컴포넌트, 모듈이 어떻게 다른 것인지, 특정 개발 단계에서 일반적으로 어떤 다이어그램을 그리는지, 이런 내용을 담고 있는 문서를 뭐라고 부르는지 등 우리가 별생각 없이 관성적으로 말하고 있는 용어가 뭘 말하는 건지 궁금한 사람이라면 이 책 한 권으로 대부분의 궁금증을 해결할 수 있을 것이라고 생각한다.
아키텍트는 시니어 개발자가 아니다. 당신이 무언가 기술적으로 의사결정을 할 수 있고 하고 있다면 이미 아키텍트의 일을 하고 있는 것이다. 당신이 더 현명하게 잘 결정하고 싶거나, 혹은 가까운 미래에 더 높은 의사 결정을 가졌을 때 프로젝트를 제대로 해보고 싶은 개발자라면 이 책을 읽는 시간이 헛되진 않을 것이라고 확신한다.