모놀리스에서 마이크로서비스까지
모놀리스에서 마이크로서비스로 전환하는 과정에서 마주치는 개념, 패턴, 그리고 현실적인 선택들을 다룹니다.
마이크로서비스는 도구이지 목적이 아니다.
목차
1부. 왜 마이크로서비스인가
마이크로서비스란 무엇이고, 무엇을 얻고 무엇을 잃는가. 전환 결정의 출발점.
- 1장. 마이크로서비스의 기본 개념과 장점
- 2장. 마이크로서비스의 그림자
- 3장. 반드시 이해해야 할 핵심 개념들
2부. 모놀리스를 어떻게 떠날 것인가
빅뱅이 아닌 점진적 전환. 라우팅과 Gateway, 데이터 마이그레이션까지.
- 4장. 한 번에 옮길 수 없다 — 점진적 전환의 원칙
- 5장. Strangler Fig — 모놀리스를 감싸 잘라내기
- 6장. Gateway를 위로 끌어올리기 — 모놀리스 앞에 새 관문 두기
- 7장. 데이터 마이그레이션 — 공유 DB에서 분리된 DB까지
3부. 경계를 설계하다
서비스를 어디서 나누고, 어떻게 그 경계를 유지할 것인가.
- 8장. 경계를 설계하는 방법 — DDD와 Bounded Context
- 9장. 무엇부터 떼어낼 것인가 — 추출 우선순위 결정법
- 10장. 경계를 지키는 설계 — DB per Service와 스냅샷
- 11장. 경계를 연결하는 방법 — 동기와 비동기
4부. 외부와 연결하다
클라이언트와 시스템 사이의 관문, 채널 특화, 그리고 인증의 흐름.
- 12장. 단일 진입점의 설계 — API Gateway
- 13장. 채널을 위한 설계 — BFF
- 14장. 인증과 인가 — 분산 환경에서 사용자 정보가 흐른다
5부. 이벤트 기반 통신의 현실
메시지는 유실되고, 중복되고, 순서가 뒤바뀐다. 그 위에서 시스템을 어떻게 설계할 것인가.
- 15장. 이벤트로 연결되는 시스템
- 16장. 메시지는 정확히 한 번 오지 않는다
- 17장. 이벤트는 항상 순서대로 오지 않는다
- 18장. 같은 이벤트는 여러 번 온다 — 멱등성
6부. 분산 환경의 정합성
트랜잭션이 사라진 자리에 Outbox·Saga·검증이 들어선다.
- 19장. 분산 환경에서의 정합성 — 최종 일관성
- 20장. 트랜잭션과 이벤트의 원자성 — Outbox
- 21장. 이벤트를 안전하게 전달하는 방법 — Outbox + Inbox
- 22장. Saga 패턴
- 23장. 전환 중의 데이터 정합성 — Dual-write에서 살아남기
7부. 장애와 복원력
장애는 사라지지 않는다. 다만 퍼지지 않게 만든다.
- 24장. 동기 호출 기반 복원력
- 25장. Circuit Breaker
- 26장. 비동기 시스템의 장애와 복원 전략
- 27장. 관측 가능성 — Trace · Metric · Log
8부. 데이터 모델의 진화
분산 환경에서 읽기와 쓰기의 모델은 분리된다.
- 28장. JOIN이 사라진 세계 — 분산 환경에서의 조회
- 29장. 읽기와 쓰기의 모델을 분리하다 — CQRS
- 30장. 상태 대신 이벤트를 저장하다 — Event Sourcing
- 31장. Event Sourcing의 불변성과 보상 전략
- 32장. 동시성과 일관성
9부. 코드 아키텍처
서비스 내부의 의존성을 어떻게 설계할 것인가.
- 33장. 레이어 아키텍처
- 34장. 의존성은 왜 문제가 되는가
- 35장. 헥사고날 아키텍처
- 36장. 실제 코드 구조로 보는 헥사고날 아키텍처
10부. 안티패턴과 함정
분산 모놀리스, Nanoservice, 그리고 돌아온 사람들의 이야기.
- 37장. 분산 모놀리스의 다양한 얼굴
- 38장. Nanoservice — 너무 잘게 쪼갠 함정
- 39장. 마이크로서비스로 갔다가 돌아온 사례들
11부. 운영과 종합
안전한 배포, 통합 사례, 그리고 다시 처음의 질문으로.
- 40장. 배포 전략 — Blue/Green, Canary, Feature Flag
- 41장. 실전 사례 — 모놀리스 전자상거래 전환기
- 42장. 다시, 마이크로서비스는 의무가 아니다 (에필로그)
책의 흐름
1부 ─ 왜 마이크로서비스인가?
2부 ─ 모놀리스에서 어떻게 떠날 것인가?
3부 ─ 서비스를 어디서 나눌 것인가?
4부 ─ 외부와 어떻게 연결할 것인가?
5부 ─ 이벤트 기반 통신의 현실
6부 ─ 분산 환경에서 정합성을 어떻게 보장하나?
7부 ─ 장애를 어떻게 견디나?
8부 ─ 데이터 모델은 어떻게 진화하나?
9부 ─ 서비스 내부 코드는 어떻게 구성하나?
10부 ─ 어떤 함정을 피해야 하나?
11부 ─ 어떻게 운영하고 마무리할 것인가?
총 11부 · 42장.
어떻게 읽을 것인가
처음부터 끝까지 — 1부부터 11부까지 순서대로 읽으면 전체 여정을 따라갈 수 있습니다.
필요한 부분만 — 지금 막힌 주제로 바로 가도 됩니다. 각 챕터는 자체 결론으로 마무리되므로 흐름이 끊기지 않습니다.
- 추출 우선순위가 막혔다면 → 9장
- 데이터 분리가 문제라면 → 7장 또는 23장
- 이벤트 처리가 꼬였다면 → 5부 전체
- 분산 모놀리스 의심이 든다면 → 37장
- 너무 잘게 쪼개졌다면 → 38장
자세한 안내는 서문을 참고하세요.