99
2
장
마이크로서비스 모델링 방법
2.4.22.4.2
애그리거트 애그리거트
DDD
에서 애그리거트
aggregate
는 다소 혼동되는 개념이자 다양한 정의가 존재한다. 애그리거트
는 단순히 임의의 객체 모음일까? 데이터베이스에서 꺼내야 할 가장 작은 단위는 무엇일까? 필
자에게 항상 효과가 있었던 모델은 먼저 애그리거트를 실제 도메인 개념의 표현으로 생각하는
것이었다. 주문, 송장, 재고 물품 등을 생각해보자. 애그리거트는 일반적으로 수명주기가 있으
므로 상태 기계
state
machine
로 구현할 수 있다.
뮤직코프 도메인의 예에서 주문 애그리거트에는 주문의 품목을 나타내는 여러 행의 품목이 포
함될 수 있다. 이 품목 행은 전체 주문 애그리거트의 일부로만 그 의미가 있다.
우리는 애그리거트를 독립된 단위로 취급하길 원해서 애그리거트의 상태 전환을 처리하는 코
드와 상태를 함께 묶으려 한다. 따라서 하나의 마이크로서비스는 여러 애그리거트를 관리할 수
있지만, 하나의 애그리거트는 하나의 마이크로서비스에서 관리돼야 한다.
하지만 일반적으로 애그리거트는 시스템의 일부로 관리될 상태, 고유함
identity
, 수명주기를 가진
것으로 생각해야 한다. 애그리거트는 일반적으로 실제 세계의 개념을 나타낸다.
하나의 마이크로서비스는 하나 이상의 서로 다른 종류의 애그리거트에 대한 수명주기와 데이
터 저장소를 처리한다. 다른 서비스의 기능이 애그리거트 중 하나를 변경하려는 경우 해당 애
그리거트에 직접 변경을 요청하거나 애그리거트 스스로 시스템의 다른 구성 ...