neil***
2022-03-28

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'개발자가 아키텍트\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'로 전향하는 데 실질적인 도움을 주는 실무 지침서다. 아키텍처 기초(패턴, 사고, 특성)와 아키텍처 스타일(레이어드, 파이프라인, 마이크로커널, 이벤트, 서비스, 오케스트레이션), 그
이번 달에는 소프트웨어 아키텍처 101을 골라서 읽게 되었습니다. 이 책을 고른 이유는 개발을 배우기 시작할 때 가장 먼저 배우는 모놀리식 아키텍처부터 요즘 제일 핫한 MSA 아키텍처까지 아키텍처에 대한 전반적인 개념을 접해보고자 읽게 되었습니다.
이 책은 크게 3가지 파트로 나누어집니다.
첫 번째 파트 '기초'는 다소 지루할 수 있습니다. 아키텍처적인 사고, 특성 등등 컴포넌트는 어떻고 모듈은 어떻고 다소 추상적인 내용으로 글이 이어지기 때문에 집중하기 쉽지 않았습니다. 중간 중간 아키텍처에 대한 개념이 정립되지 않았던 옛날 옛적에는 어떻게 개발을 해왔는지, 그래서 어떤 문제가 있었는지 옛날 이야기도 들려줍니다. 구체적인 예시가 부족한 추상적인 이야기나 옛날 이야기가 다소 지루한건 어쩔 수가 없었습니다. 하지만, 첫 번째 파트에서 소개하는 기초 개념을 읽고 넘어가야 후반부에 나오는 내용들을 이해하는 데 도움이 됩니다.
두 번째 파트는 아키텍처 설계 방식의 종류들을 한 장에 하나씩 구석구석 뜯어가며 설명해줍니다. 이 파트가 대부분의 독자가 가장 집중해서 보는 파트일 것이라 생각합니다. 소개하는 아키텍처는 다음과 같습니다.
위 아키텍처들을 설명하는 글의 구조는 다음과 같이 거의 비슷합니다.
모든 아키텍처들도 비슷한 형식으로 설명되어 있으니 요즘 가장 핫한 MSA 구조에 대한 설명만 간단히 알아보겠습니다.
토폴로지
마이크로서비스의 토폴로지는 위의 그림과 같습니다. 마이크로서비스는 단일 목적만 가지기 때문에 오케스트레이션 기반의 서비스 지향 아키텍처와 같은 다른 분산 아키텍처보다 서비스 규모가 훨씬 작습니다. 실제로 각 서비스에는 데이터베이스 및 기타 종속적인 컴포넌트 등 서비스가 독립적으로 작동되는 데 필요한 모든 것들이 준비되어 있습니다.
특징
마이크로서비스 아키텍처의 특징으로는 다음의 특성들에 대한 설명이 있습니다. 여기서는 한 줄로만 적겠습니다.
두번째 파트를 통해 여러 아키텍처 스타일에 대해 구체적인 학습을 할 수 있고, 각각의 아키텍처가 어떤 요구사항에 적합한지 어떤 장단점이 있는지 여러 특징들을 살펴볼 수 있었습니다.
세 번째 파트는 앞에서 익힌 아키텍처에서 더 나아가 테크닉과 소프트 스킬에 대한 내용으로 이루어져 있습니다. 아키텍처의 기술적인 부문을 이해하는 것과 함께 아키텍트답게 사고하면서 다양한 이해관계자들과 효과적으로 소통할 수 있는 소프트 스킬들에 대해 이야기합니다.
아키텍처와 관련된 내용은 아키텍처를 결정하는 안티패턴은 어떤 것들이 있는지, 아키텍처의 리스크를 분석하는 방법, 아키텍처를 도식화 하는 방법 등에 대해 설명이 이어지고, 소프트 스킬과 관련된 내용으로는 개발팀과 효율적으로 상호작용하는 방법, 협상과 조정, 커리어패스를 개발하는 내용 등이 이어집니다.
코드 레벨에서의 구현을 고민하는 것도 즐겁지만 가끔은 더 큰 아키텍처의 관점에서 학습하고 고민하는 것도 즐거운 것 같습니다. 아키텍처의 전반적인 개념에 대한 이해와 여러 구체적인 아키텍처 스타일의 특징들을 학습하시고 싶은 분들께 추천드립니다.