Skip to content

반 버논의 효과적인 어그리게이트 디자인(PART2: Making Aggregates Work Together) – 1

2012년 7월 27일

DDD 형대로 개발을 하는데 여러 기술적 이슈가 있다.

특히 Domain 단계가 커지면 각 aggregate 간의 트렌젝션을 포함해 신경쓸 일이 많아진다.

반 버논은 DDD community를 통해 효과적인 aggregate 개발 방법론에 관한 문서를 배포한다.

그중 Part2 에 관한 이야기이다.

Rule: Reference Other Aggregates By Identity

버논님께서 말한 이 내용은 상당한 이슈를 가지고 있다. 본래 DDD를 구현하기 위한 기본 개념인 aggregate 간의 연관성을 약화시키는 방향이다.

entity를 가지고 있는게 아리나 Identity만 가지게되면 해당 Entity를 유도하는데 또 다른 로직이 필요하기 때문이다.

하지만 버논이 이런 룰을 주장하는데 대해서는 근거가 있다.

일반적으로 aggregates간의 Transaction을 유지하는데는 어느정도의 Cost가 들기 마련이다. 하지만, Domain의 구조가 커지고 Big Aggregate 형태가 되면 각각이 보유하고 있는 Entity의 Transaction을 유지하는데 기하급수적으로 Cost가 증가하기 시작한다.

DDD를 사용하는 이유가 효과적인 유지보수의 능력을 플랫폼에 보유하기 위한 부분도 있는데, 이렇게 되면, Transaction을 유지하는데만도 많은 유지보수 능력이 필요하기 마련이다.

따라서 기본적으로 각각의 aggregate가 가지고 있는 연관성을 최대한 제거해 aggregate의 신뢰성을 확보할 필요가 있는 것이다.

이 룰은 이해하기 간단하며 어려운 룰이 아니기 때문에 DDD 형태로 개발에 지속적으로 적용해야 하는 사항이다.

Advertisements

From → Development

댓글 남기기

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: