피드로 돌아가기
Understanding DDD Aggregates Through Board Games and Battlefields
Dev.toDev.to
Backend

Understanding DDD Aggregates Through Board Games and Battlefields

저자가 보드게임과 전쟁터 모래판 비유를 통해 DDD의 Aggregate 개념을 명확히 설명해 설계 의사결정의 불명확성 제거

Grady Zhuo2026년 3월 26일7intermediate

Context

DDD를 학습하면서 Aggregate 개념이 애매하게 느껴졌으며, Write Model으로만 인식하거나 "불변성 보호"라는 추상적 표현만으로는 실제 설계에 적용하기 어려웠다.

Technical Solution

  • 보드게임 비유를 통한 Aggregate 정의: 게임 전체를 Aggregate로 캡슐화하고, 각 게임 고유의 규칙(비즈니스 규칙)을 Aggregate 경계 내에서만 강제
  • Transactional Consistency Boundary 개념 도입: 단일 턴(트랜잭션) 내에서 모든 액션이 원자적으로 성공하거나 실패
  • 전쟁터와 전쟁실 모래판 비유를 통한 다중 Aggregate 간 참조 패턴: 같은 엔티티가 다른 Aggregate에 존재할 때 ID만 저장하고 객체 참조는 금지
  • Policy 패턴 도입: Domain Event를 한 Aggregate에서 발생시키면 Policy가 이를 감지해 다른 Aggregate의 반응 트리거
  • 이벤트 기반 아키텍처 활용: EventSourcing과 CQRS와 자연스럽게 결합되어 Aggregate 간 협력을 이벤트 흐름으로 구성

Key Takeaway

DDD의 추상적 개념들은 구체적인 비유(보드게임, 전쟁터)를 통해 설명할 때 Aggregate 경계, 불변성 보호, 이벤트 기반 통신의 필요성이 명확해지며, 이는 설계 결정의 근거를 제공한다.


DDD를 도입하는 팀에서 Aggregate의 경계를 정의할 때, 도메인 특화 게임(체스, 주사위 게임 등)을 예시로 들어 그 게임만의 규칙을 보호해야 할 불변성으로 매핑하면, 엔지니어 간의 설계 합의 시간을 단축할 수 있다.

원문 읽기