DDD

[Aggregate] 규칙 : 작은 애그리게잇

kooangelo 2024. 9. 3. 16:04

규칙: 작은 애그리게잇으로 설계하라

이제 큰 클러스터의 애그리게잇을 유지하는 데 드는 추가적인 비용이 무엇인지 면밀히 살펴볼 준비가 됐다. 

모든 트랙잭션이 성공한다고 보장되더라도, 큰 클러스터에는 여전히 성능과 확장성의 문제가 있다.
...
성능과 확장성은 무시할 수 없는 비기능적 요구사항이다.

작은 애그리게잇을 설계할 때 ‘작다’는 단어는 어떤 수준을 의미할까?

극단적인 예로 전역 고유 식별자와 추가 특성 하나를 갖고 있는 애그리게잇을 생각해볼 수 있을 텐데, 

이는 권장하지 않는 형태다.

차라리 애그리게잇을 루트 엔터티와 최소한의 특성이나 값 타입의 속성으로 제한하자.

정확히 필요한 만큼만 담고, 그 이상도 이하도 아니어야 한다.
...
크기가 작은 애그리게잇은 성능과 확장성이 더 좋을 뿐 아니라, 커밋을 가로막는 문제가 거의 일어나지 않기 때문에 트랜잭션이 성공할 가능성이 높다. 이는 시스템의 활용성을 높여준다. 
여러분의 도메인은 큰 컴포지션을 설계해야 하는 상황을 초래하는 진짜 고정자의 제약 조건을 다룰 일이 거의 없다. 
따라서 애그리게잇의 크기를 제한하는 편이 현명하다. 


 - Implementing Domain-Driven Design 도메인 주도 설계 구현, 반 버논 p459~462