애그리거트

W·2024년 1월 17일

용어정리

목록 보기
1/6

애그리거트

Ref.
[DDD] 도메인 주도 설계 애그리거트(Aggregate) 알아보기

정의

애그리거트란 관련된 객체들을 모아 하나의 단위로 취급하는 개념으로, 객체지향 프로그래밍에서, 애그리거트는 객체 간의 관계를 정의하는 방법 중 하나로, 논리적으로 관련된 객체들을 그룹화하여 하나의 묶음으로 다룬다.

쉽게 말해 여러 개의 객체를 묶어 하나의 큰 객체로 다루는 것이다.

애그리거트는 일반적으로 Entity, Value로 구성되고, 애그리거트는 엔티티와 밸류의 관계를 나타내는 루트 root 엔티티를 포함하며 루트 엔티티는 애그리거트에 속한 다른 객체들과 관계를 정의한다. 애그리거트는 불변성을 유지하며, 내부 구현을 캡슐화한다.


특징

  1. 한 단위로 묶음 : 애그리거트는 논리적으로 관련된 객체들을 하나의 단위로 묶어서 표현한다. 주로 애그리거트 루트가 중심이 되어 루트와 연관된 다른 객체들이 함께 모여 있다.
  2. 일관성을 유지 : 애그리거트는 일관성 있는 상태를 유지하며, 내부 객체 간에는 일관성 규칙이 적용된다. 애그리거트 루트를 통해서만 내부 상태를 변경할 수 있으며, 일관성이 깨지지 않도록 해야 한다.
  3. 한정된 범위에서 변경 가능 : 외부에서는 애그리거트 루트 객체를 통해서만 변경이 가능하며, 루트를 통하지 않은 객체 간의 직접적인 변경은 허용되지 않는다.

예시

주문 시스템에서 "주문" 애그리거트

  • 주문자
  • 주문된 상품
  • 배송 정보

이때 주문 애그리거트의 루트(Root)는 주문 객체로 주문과 관련된 모든 정보를 가진다.

주문 애그리거트 내에서만 주문의 상태를 변경하고 관리할 수 있으며, 주문과 관련된 상품이나 배송 정보와의 일관성이 유지된다.

애그리거트를 사용하면 도메인 모델이 명확해지고 유지보수가 용이해지며, 도메인 주도 설계의 핵심 원칙을 준수할 수 있다.

profile
타협하는 순간 발전이 없어

0개의 댓글