메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

아키텍처에 대한 전반적인 이해를 하기 좋은 책

neil***

|

2022-03-28

소프트웨어 아키텍처 101

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'개발자가 아키텍트\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'로 전향하는 데 실질적인 도움을 주는 실무 지침서다. 아키텍처 기초(패턴, 사고, 특성)와 아키텍처 스타일(레이어드, 파이프라인, 마이크로커널, 이벤트, 서비스, 오케스트레이션), 그

  • 저자 : 마크 리처즈 , 닐 포드
  • 번역 : 이일웅
  • 출간 : 2021-11-01

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


 

이번 달에는 소프트웨어 아키텍처 101을 골라서 읽게 되었습니다. 이 책을 고른 이유는 개발을 배우기 시작할 때 가장 먼저 배우는 모놀리식 아키텍처부터 요즘 제일 핫한 MSA 아키텍처까지 아키텍처에 대한 전반적인 개념을 접해보고자 읽게 되었습니다.

이 책은 크게 3가지 파트로 나누어집니다.

첫 번째 파트 '기초'는 다소 지루할 수 있습니다. 아키텍처적인 사고, 특성 등등 컴포넌트는 어떻고 모듈은 어떻고 다소 추상적인 내용으로 글이 이어지기 때문에 집중하기 쉽지 않았습니다. 중간 중간 아키텍처에 대한 개념이 정립되지 않았던 옛날 옛적에는 어떻게 개발을 해왔는지, 그래서 어떤 문제가 있었는지 옛날 이야기도 들려줍니다. 구체적인 예시가 부족한 추상적인 이야기나 옛날 이야기가 다소 지루한건 어쩔 수가 없었습니다. 하지만, 첫 번째 파트에서 소개하는 기초 개념을 읽고 넘어가야 후반부에 나오는 내용들을 이해하는 데 도움이 됩니다.

두 번째 파트는 아키텍처 설계 방식의 종류들을 한 장에 하나씩 구석구석 뜯어가며 설명해줍니다. 이 파트가 대부분의 독자가 가장 집중해서 보는 파트일 것이라 생각합니다. 소개하는 아키텍처는 다음과 같습니다.

  • 레이어드 아키텍처 스타일
  • 파이프라인 아키텍처 스타일
  • 마이크로커널 아키텍처 스타일
  • 서비스 기반 아키텍처 스타일
  • 이벤트 기반 아키텍처 스타일
  • 공간 기반 아키텍처 스타일
  • 오케스트레이션 기반 서비스 지향 아키텍처 스타일
  • 마이크로서비스 아키텍처 스타일

위 아키텍처들을 설명하는 글의 구조는 다음과 같이 거의 비슷합니다. 

  • 토폴로지
  • 각 아키텍처 스타일의 특성 여러가지 ( 장단점 등등 )
  • 아키텍처 특성 등급

모든 아키텍처들도 비슷한 형식으로 설명되어 있으니 요즘 가장 핫한 MSA 구조에 대한 설명만 간단히 알아보겠습니다.

 

 

마이크로 서비스 아키텍처 스타일의 토폴로지

 

토폴로지

마이크로서비스의 토폴로지는 위의 그림과 같습니다. 마이크로서비스는 단일 목적만 가지기 때문에 오케스트레이션 기반의 서비스 지향 아키텍처와 같은 다른 분산 아키텍처보다 서비스 규모가 훨씬 작습니다. 실제로 각 서비스에는 데이터베이스 및 기타 종속적인 컴포넌트 등 서비스가 독립적으로 작동되는 데 필요한 모든 것들이 준비되어 있습니다.

특징

마이크로서비스 아키텍처의 특징으로는 다음의 특성들에 대한 설명이 있습니다. 여기서는 한 줄로만 적겠습니다.

  • 분산 : 뭔가를 공유함으로써 불거지는 문제들과 분산 속성 탓에 발생하는 부정적인 요소에 대하 설명
  • 경계 콘텍스트 : 마이크로서비스의 근본 철학은 경계 콘텍스트 개념과 일치한다는 설명
  • 세분도 : 서비스의 적절한 경계를 찾는데 도움이 되는 몇 가지 가이드라인 (목적, 트랜잭션, 코레오그래피)
  • 데이터 격리 : 마이크로서비스는 경계 콘텍스트 개념에 따라 데이터를 격리해야 한다는 설명
  • API 레이어 : 마이크로서비스에서 여러 시스템 컨슈머 사이에 있는 API 레이어에 관한 설명
  • 운영 재사용 : 모니터링, 로깅, 회로 차단기 등의 운영 관심사는 사이드카 패턴을 활용하라는 설명
  • 프론트엔트 : 프론트엔드를 모놀리식으로 할지 마이크로 프론트엔드로 할지에 관한 설명
  • 통신 : 동기로 할지, 비동기로 할지 등 근본적인 통신 방식에 대한 설명
  • 코레오그래피와 오케스트레이션 : 코레오그래피와 오케스트레이션 아키텍트에 관한 설명
  • 트랜잭션과 사가 : 여러 서비스에 걸친 트랜잭션을 어떻게 처리할지에 대한 설명

두번째 파트를 통해 여러 아키텍처 스타일에 대해 구체적인 학습을 할 수 있고, 각각의 아키텍처가 어떤 요구사항에 적합한지 어떤 장단점이 있는지 여러 특징들을 살펴볼 수 있었습니다. 

세 번째 파트는 앞에서 익힌 아키텍처에서 더 나아가 테크닉과 소프트 스킬에 대한 내용으로 이루어져 있습니다. 아키텍처의 기술적인 부문을 이해하는 것과 함께 아키텍트답게 사고하면서 다양한 이해관계자들과 효과적으로 소통할 수 있는 소프트 스킬들에 대해 이야기합니다.

아키텍처와 관련된 내용은 아키텍처를 결정하는 안티패턴은 어떤 것들이 있는지, 아키텍처의 리스크를 분석하는 방법, 아키텍처를 도식화 하는 방법 등에 대해 설명이 이어지고, 소프트 스킬과 관련된 내용으로는 개발팀과 효율적으로 상호작용하는 방법, 협상과 조정, 커리어패스를 개발하는 내용 등이 이어집니다. 

코드 레벨에서의 구현을 고민하는 것도 즐겁지만 가끔은 더 큰 아키텍처의 관점에서 학습하고 고민하는 것도 즐거운 것 같습니다. 아키텍처의 전반적인 개념에 대한 이해와 여러 구체적인 아키텍처 스타일의 특징들을 학습하시고 싶은 분들께 추천드립니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?