📘

11단계: 아키텍처 마스터리 (Architecture Mastery)

대규모 분산 시스템에서 발생하는 데이터 정합성 문제와 무한 확장을 위한 샤딩, 그리고 복잡한 도메인을 다루는 DDD까지 아키텍트 레벨의 난제를 다룹니다.

모듈형 학습 자동 정렬

🧠 모듈 개요

이 단계에서 얻는 것

시스템이 커지면 더 이상 “하나의 DB 트랜잭션"으로 모든 것을 해결할 수 없습니다.
이 단계에서는 수평 확장의 끝판왕인 Sharding과, 서비스 간 정합성을 맞추는 Distributed Transaction, 그리고 비즈니스 복잡도를 제어하는 DDD를 통해 진정한 시니어 엔지니어, 아키텍트로 거듭납니다.

  • Data Consistency: 서비스가 쪼개져도 데이터가 깨지지 않게 하는 Saga 패턴과 TCC를 배웁니다.
  • Scalability: 데이터 10억 건, 사용자 1억 명을 감당하는 샤딩과 Consistent Hashing 원리를 이해합니다.
  • Complexity: “어디까지 쪼개야 하는가?“에 대한 답을 DDD Aggregate Root로 정의합니다.

커리큘럼 (Topic List)

1. 분산 트랜잭션 (Distributed Transactions)

  • 2PC (Two-Phase Commit): XA 트랜잭션의 동작 원리와 치명적인 단점(Blocking).
  • SAGA Pattern: Choreography(이벤트) vs Orchestration(지휘자). 보상 트랜잭션(Compensating Transaction) 설계.
  • TCC (Try-Confirm-Cancel): 예약 시스템 등에서 사용하는 애플리케이션 레벨 트랜잭션.

2. 대규모 데이터 확장 (Sharding)

  • Sharding Strategies: Range(범위) vs Hash(해시) vs Directory(룩업) 샤딩 비교.
  • Consistent Hashing: 서버가 추가/삭제되어도 데이터 이동을 최소화하는 해싱 알고리즘.
  • Global ID Generation: 분산 환경에서 유니크 ID 만들기 (Snowflake, UUID).

3. 도메인 주도 설계 (Advanced DDD)

  • Aggregate Root: 트랜잭션의 일관성 경계이자 진입점. “한 트랜잭션에 하나만 수정한다"는 원칙.
  • Bounded Context: 언어와 모델의 의미가 통용되는 경계 설정.
  • Domain Events: 결과적 정합성(Eventual Consistency)을 달성하는 핵심 도구.

이 단계의 핵심 주제

  • 분산 트랜잭션(2PC/Saga/TCC) 설계
  • 샤딩/라우팅/리밸런싱 전략
  • DDD 전술 패턴과 경계(Bounded Context)

미니 실습

  • SAGA 시퀀스 설계: 성공/실패/보상 흐름 작성
  • 샤딩 재배치 시나리오: 노드 추가 시 데이터 이동량 계산
  • Aggregate 경계 설계: 트랜잭션 경계 1개로 제한하는 모델 작성

완료 기준

  • 대규모 시스템의 핵심 난제를 구조적으로 설명할 수 있다
  • 데이터 정합성과 확장성의 균형점을 말로 정리할 수 있다
  • 도메인 경계가 어긋날 때 생기는 문제를 설명할 수 있다

추천 학습 자료

  • : Microservices Patterns (마이크로서비스 패턴) - 크리스 리처드슨
  • : Domain-Driven Design (도메인 주도 설계) - 에릭 에반스 (Blue Book)

📑 이 모듈의 학습 노트

Architecture

CQRS: 명령과 조회의 분리

CQRS 패턴의 개념, 읽기/쓰기 모델 분리, Event Sourcing과의 조합 가이드

CQRS Architecture DDD
Architecture

DDD 심화: Aggregate Root와 트랜잭션 경계

도메인 주도 설계(DDD)에서 가장 어려운 Aggregate 개념. 트랜잭션의 범위를 정의하고 데이터 무결성을 지키는 원칙을 다룹니다.

DDD Aggregate Transaction