본문 바로가기
2. 책 & 영화 리뷰

[도서] 마이크로서비스 아키텍처 구축 - 샘 뉴먼

by soosun 2023. 11. 26.

ㅇ 책의 주요 내용

- 이 책은 MSA관련하여 가장 유명한 책들 중에 하나이다. 아래는 출판사 책소개 문구이다.

   "마틴 파울러가 극찬한 『마이크로서비스 아키텍처 구축』이 전면 개정되어 돌아왔다. 마이크로서비스와 관련된 모든 측면에 대해 광범위한 개요를 제공하고자 했다. ~ 1부에서는 마이크로서비스의 핵심 아이디어를 설명하고, 2부에서는 개념에서 구현 상세로 넘어가 마이크로서비스를 활용하는 데 도움이 되는 기법과 기술을 살펴본다. 마지막으로 3부에서는 1부, 2부에서 배운 내용을 토대로 사람과 조직의 입장에서 기술을 구현해내는 과정을 설명한다.(출처: 한빛미디어 출판사 소개문)"

 

- 최근에 읽었던 MSA 관련 책들중에 가장 추천할 만한 책이다.

개정판 이전에 이미 읽은 사람도 많겠지만, 저자의 다양한 경험과 지식을 바탕으로 패턴, 인프라, 조직, 문화 등 MSA와 관련된 거의 모든 분야에 대한 저자의 생각과 고민이 정리되어 있다. 특히 각 패턴들에 대해서 가상의 회사를 예를 들어 설명해주는 친절함까지 제공해준다.

- 매 주제마다 저자는 본인의 생각을 의견으로 정리하여 제시한다. 정답을 제시하는 방식이 아닌 의견을 제시하는 방식이 마음에 든다. 여기에 더하여 저자가 경험했던 프로젝트 사례를 예로 들어준다.

- 챕터들 중에 패턴을 설명해주는 곳에는 '패턴' 참조 표시를 제공하며, 주요 외부 사례나 전문가들이 제시한 논문이나 주요 자료에 대해서도 코멘트를 제공하고 있다.

- MSA 관련하여 이보다 더 다양한 주제를 다룰수 있을까? 하는 생각이 들 정도, 무슨 설명이 더 필요할까, 일단 아래 목차를 보시라...

=> 유일한 단점은 분량(약 690 페이지)과 너무 많은 분야를 다루는 것이라고나 할까? 

      중간에 지칠수 있으니, 관심분야 위주로 필요할때마다 찾아 보는 방식으로 활용하는 것을 추천하다. 


< 출판사 책소개 >

전 세계 프로그래머에게 필수 책인 『리팩터링 2판』의 저자 마틴 파울러가 극찬한 『마이크로서비스 아키텍처 구축』이 전면 개정되어 돌아왔다. 마이크로서비스와 관련된 모든 측면에 대해 광범위한 개요를 제공하고자 했다. 1판에서 마이크로서비스 개념을 주로 다뤘다면, 이번에는 그 기본 토대 위에 소프트웨어 배포 프로세스 측면과 마이크로서비스 아키텍처를 채택함으로써 발생하는 영향까지 함께 다룬다. 초판 출간 후 지난 5년 동안 마이크로서비스의 변화와 새롭게 등장한 기술도 함께 다뤄 1판보다 2배가 넘도록 지면을 풍부하게 채웠다.

이 책은 총 3부에 걸쳐 마이크로서비스 아키텍처 구축에 대해 설명한다. 1부 기초, 2부 구현, 3부 사람으로 구성되어 있다. 1부에서는 마이크로서비스의 핵심 아이디어를 설명하고, 2부에서는 개념에서 구현 상세로 넘어가 마이크로서비스를 활용하는 데 도움이 되는 기법과 기술을 살펴본다. 마지막으로 3부에서는 1부, 2부에서 배운 내용을 토대로 사람과 조직의 입장에서 기술을 구현해내는 과정을 설명한다.

 

< 목차 >

PART 1 기초
CHAPTER 1 마이크로서비스란?

_1.1 마이크로서비스 살펴보기
_1.2 마이크로서비스의 핵심 개념
_1.3 모놀리스
_1.4 활성화 기술
_1.5 마이크로서비스의 장점
_1.6 마이크로서비스의 고충
_1.7 마이크로서비스를 사용해야 하는가?
요약

CHAPTER 2 마이크로서비스 모델링 방법
_2.1 뮤직코프 소개
_2.2 올바른 마이크로서비스 경계를 만드는 것은 무엇인가?
_2.3 결합 유형
_2.4 딱 도메인 주도 설계만큼
_2.5 마이크로서비스를 위한 도메인 주도 설계 사례
_2.6 비즈니스 도메인 경계에 대한 대안
_2.7 혼합 모델과 예외
요약

CHAPTER 3 모놀리스 분해
_3.1 목표를 가져라
_3.2 점진적 마이그레이션
_3.3 모놀리스가 적인 경우는 드물다
_3.4 무엇을 먼저 나눌까?
_3.5 계층별 분해
_3.6 유용한 분해 패턴
_3.7 데이터 분해에 대한 우려
요약

CHAPTER 4 마이크로서비스 통신 방식
_4.1 프로세스 내부에서 프로세스 사이로
_4.2 프로세스 간 통신을 위한 기술: 다양한 선택
_4.3 마이크로서비스 통신 방식
_4.4 패턴: 동기식 블로킹
_4.5 패턴: 비동기식 논블로킹
_4.6 패턴: 공통 데이터를 통한 통신
_4.7 패턴: 요청 및 응답 통신
_4.8 패턴: 이벤트 기반 통신
_4.9 조심해서 진행하라
요약

PART 2 구현
CHAPTER 5 마이크로서비스 통신 구현

_5.1 이상적인 기술을 찾아서
_5.2 기술 선택
_5.3 직렬화 포맷
_5.4 스키마
_5.5 마이크로서비스 간의 변경 처리
_5.6 중단 변경 피하기
_5.7 중단 변경 관리하기
_5.8 마이크로서비스 세계에서 DRY와 코드 재사용의 위험
_5.9 서비스 디스커버리
_5.10 서비스 메시와 API 게이트웨이
_5.11 서비스 문서화
요약

CHAPTER 6 워크플로
_6.1 데이터베이스 트랜잭션
_6.2 분산 트랜잭션 - 2단계 커밋
_6.3 분산 트랜잭션 - 그냥 안 된다고 하라
_6.4 사가 패턴
요약

CHAPTER 7 빌드
_7.1 지속적 통합에 대한 간략한 소개
_7.2 빌드 파이프라인과 지속적 제공
_7.3 소스 코드와 빌드를 마이크로서비스에 매핑하기
요약

CHAPTER 8 배포
_8.1 논리적에서 물리적으로
_8.2 마이크로서비스 배포의 원칙
_8.3 배포 방법
_8.4 어떤 배포가 적합할까?
_8.5 쿠버네티스와 컨테이너 오케스트레이션
_8.6 점진적 제공
요약

CHAPTER 9 테스트
_9.1 테스트 유형
_9.2 테스트 범위
_9.3 서비스 테스트의 구현
_9.4 까다로운 엔드투엔드 테스트의 구현
_9.5 엔드투엔드 테스트를 피해야 할까?
_9.6 개발자 경험
_9.7 운영 환경 전 테스트에서 운영 환경 내 테스트로
_9.8 교차 기능 테스트
요약

CHAPTER 10 모니터링에서 관찰가능성으로
_10.1 분열, 공황 그리고 혼란
_10.2 단일 마이크로서비스, 단일 서버
_10.3 단일 마이크로서비스, 다수 서버
_10.4 다수 마이크로서비스, 다수 서버
_10.5 관찰가능성 대 모니터링
_10.6 관찰가능성의 구성 요소
_10.7 표준화
_10.8 도구 선택
_10.9 기계화된 전문가
_10.10 시작하기
요약

CHAPTER 11 보안
_11.1 핵심 원칙
_11.2 사이버 보안의 다섯 가지 기능
_11.3 애플리케이션 보안의 기초
_11.4 암묵적 신뢰 대 제로 트러스트
_11.5 데이터 보안
_11.6 인증과 권한 부여

CHAPTER 12 회복 탄력성
_12.1 회복 탄력성이란?
_12.2 장애는 어디에서나 발생한다
_12.3 얼마나 많아야 너무 많은 건가?
_12.4 기능 저하
_12.5 안정성 패턴
_12.6 위험 분산
_12.7 CAP 정리
_12.8 카오스 엔지니어링
_12.9 비난
요약

CHAPTER 13 확장
_13.1 확장의 네 가지 축
_13.2 결합 모델
_13.3 작게 시작하라
_13.4 캐싱
_13.5 자동 확장
_13.6 다시 시작하기
요약

PART 3 사람
CHAPTER 14 사용자 인터페이스

_14.1 디지털을 향해
_14.2 소유권 모델
_14.3 스트림 정렬 팀을 향해
_14.4 패턴: 모놀리식 프론트엔드
_14.5 패턴: 마이크로 프론트엔드
_14.6 패턴: 페이지 기반 분해
_14.7 패턴: 위젯 기반 분해
_14.8 제약
_14.9 패턴: 중앙 집계 게이트웨이
_14.10 패턴: 프론트엔드를 위한 백엔드(BFF)
_14.11 그래프QL
_14.12 하이브리드 방식
요약

CHAPTER 15 조직 구조
_15.1 느슨하게 결합된 조직
_15.2 콘웨이의 법칙
_15.3 팀 규모
_15.4 콘웨이의 법칙 이해
_15.5 소규모 팀, 대규모 조직
_15.6 자율성에 관해
_15.7 강력한 소유권 대 집단 소유권
_15.8 활성화 팀
_15.9 공유 마이크로서비스
_15.10 내부 오픈 소스
_15.11 플러그 가능한 모듈식 마이크로서비스
_15.12 고아 서비스
_15.13 사례 연구: realestate.com.au
_15.14 지리적 분포
_15.15 콘웨이의 역법칙
_15.16 사람들
요약

CHAPTER 16 진화하는 아키텍트
_16.1 이름에 내포된 것은?
_16.2 소프트웨어 아키텍트란?
_16.3 변화를 가능하게
_16.4 아키텍처에 대한 진화적 비전
_16.5 시스템 경계 정의
_16.6 사회적 구조물
_16.7 거주 가능성
_16.8 원칙적 접근법
_16.9 진화적 아키텍처 가이드
_16.10 스트림 정렬 조직의 아키텍처
_16.11 팀 구축
_16.12 필수 기준
_16.13 거버넌스와 포장된 길
_16.14 기술 부채
_16.15 예외 처리
요약

종합정리: 조언부터 향후 전망까지
핵심 용어집

댓글