마이크로서비스 기초부터 구현까지
사람과 조직을 고려한 실전 마이크로서비스 아키텍처 구축 가이드
* 설계/아키텍처 분야 아마존 베스트셀러
* 마이크로서비스 아키텍처 핵심 용어집 수록
“마이크로서비스 아키텍처는 매력적인 특징이 많지만, 마이크로서비스 아키텍처로 향하는 길에서 주의하지 않는 다면 고통스러운 함정에 맞닥뜨리게 된다.” - 마틴 파울러
전 세계 프로그래머에게 필수 책인 『리팩터링 2판』의 저자 마틴 파울러가 극찬한 『마이크로서비스 아키텍처 구축』이 전면 개정되어 돌아왔습니다. 모두가 기다려온 『마이크로서비스 아키텍처 구축(전면 개정판)』은 마이크로서비스와 관련된 모든 측면에 대해 광범위한 개요를 제공하고자 했습니다. 1판에서 마이크로서비스 개념을 주로 다뤘다면, 이번에는 그 기본 토대 위에 소프트웨어 배포 프로세스 측면과 마이크로서비스 아키텍처를 채택함으로써 발생하는 영향까지 함께 다룹니다. 초판 출간 후 지난 5년 동안 마이크로서비스의 변화와 새롭게 등장한 기술도 함께 다뤄 1판보다 2배가 넘도록 지면을 풍부하게 채웠습니다. 이 책은 총 3부에 걸쳐 마이크로서비스 아키텍처 구축에 대해 설명합니다. 1부 기초, 2부 구현, 3부 사람으로 구성되어 있습니다. 1부에서는 마이크로서비스의 핵심 아이디어를 설명하고, 2부에서는 개념에서 구현 상세로 넘어가 마이크로서비스를 활용하는 데 도움이 되는 기법과 기술을 살펴봅니다. 마지막으로 3부에서는 1부, 2부에서 배운 내용을 토대로 사람과 조직의 입장에서 기술을 구현해내는 과정을 설명합니다.
Contents
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 예외 처리
요약
종합정리: 조언부터 향후 전망까지
핵심 용어집
Author
샘 뉴먼,정성권
전 세계에 걸쳐 여러 도메인에서 다양한 회사와 협력해온 개발자이자 아키텍트, 작가이자 연사다. 여러 스타트업과 소트웍스(ThoughtWorks)에서 12년 동안 일한 후, 요즘은 독립 컨설턴트로 활동한다. 마이크로서비스, 클라우드, 지속적 배포를 전문으로 하며, 전 세계 고객을 대상으로 훈련과 컨설팅을 통해 소프트웨어를 더 빠르고 더 안정적으로 배포하는 방법을 전파하고 있다. 세계적인 여러 컨퍼런스에서 발표한 유명 연사며, 『마이크로서비스 아키텍처 구축』(한빛미디어, 2017)을 집필했다.
새로운 기술이 급부상하는 시기가 아니라면, 이스트 켄트의 시골에서 다양한 형태의 스포츠를 즐기는 뉴먼을 만날 수 있을 것이다.
전 세계에 걸쳐 여러 도메인에서 다양한 회사와 협력해온 개발자이자 아키텍트, 작가이자 연사다. 여러 스타트업과 소트웍스(ThoughtWorks)에서 12년 동안 일한 후, 요즘은 독립 컨설턴트로 활동한다. 마이크로서비스, 클라우드, 지속적 배포를 전문으로 하며, 전 세계 고객을 대상으로 훈련과 컨설팅을 통해 소프트웨어를 더 빠르고 더 안정적으로 배포하는 방법을 전파하고 있다. 세계적인 여러 컨퍼런스에서 발표한 유명 연사며, 『마이크로서비스 아키텍처 구축』(한빛미디어, 2017)을 집필했다.
새로운 기술이 급부상하는 시기가 아니라면, 이스트 켄트의 시골에서 다양한 형태의 스포츠를 즐기는 뉴먼을 만날 수 있을 것이다.