책/도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지

책/도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지

[도메인 주도 개발 시작하기] 11장: CQRS

본문은 [도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 11.1 단일 모델의 단점 조회 기능을 구현하기 위해선 여러 애그리거트에서 데이터를 가져와야 하는데, 이때 조회 속도를 빠르게 만들기 위해서 여러 구현 방법을 고민해야 한다 예컨대 식별자를 이용해서 애그리거트를 참조하는 방식(3장)을 사용하면 즉시 로딩 등의 JPA의 쿼리 관련 최적화 기능을 사용할 수 없거나, 어떤 조회 기능을 사용하냐에 따라 같은 연관이더라도 즉시 로딩이나 지연 로딩으로 처리하는 게 다르기 떄문이다 이러한 고민은 시스템 상태를 변경할 때와 조회할 때 단일 도메인 모델을 사용하기 때문에 발생한다 ..

책/도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지

[도메인 주도 개발 시작하기] 10장: 이벤트

본문은 [도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 10.1 시스템 간 강결합 문제 여러 시스템이 섞여서 하나의 기능을 수행하게 되면 다음과 같은 문제들이 발생한다 1) 트랜잭션 처리가 애매해지는 문제 2) 외부 서비스의 성능에 영향을 받는 문제 3) 도메인 객체에 서로 다른 도메인 로직이 섞이는 문제 4) 다른 기능을 추가할 때 위 문제들이 더욱 복잡해진다 위 문제들이 발생하는 이유는 바운디드 컨텍스트 간의 강결합(high coupling) 때문이다 이벤트를 사용함으로써 강결합을 없앨 수 있다 특히 비동기 이벤트를 사용하면 두 시스템 간의 결합을 크게 낮출 수 있..

책/도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지

[도메인 주도 개발 시작하기] 9장: 도메인 모델과 바운디드 컨텍스트

본문은 [도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 9.1 도메인 모델과 경계 한 개의 모델로 모든 하위 도메인을 표현하는 것은 적절하지 않다 하위 도메인마다 같은 용어라도 의미가 다르고 같은 대상이라도 지칭하는 용어가 다를 수 있다 하위 도메인마다 사용하는 용어가 다르므로 도메인 모델을 개발하려면 하위 도메인마다 모델을 만들어야 한다 각 모델은 명시적으로 구분되는 경계를 가져서 섞이지 않도록 한다 여러 하위 도메인의 모델이 섞이면 모델의 의미가 약해지고 각 하위 도메인별로 다르게 발전하는 요구사항을 모델에 반영하기 어려워진다 모델은 특정한 컨텍스트(문맥) 하에서 ..

책/도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지

[도메인 주도 개발 시작하기] 8장: 애그리거트 트랜잭션 관리

본문은 [도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 8.1 애그리거트와 트랜잭션 위 예시에서 두 스레드는 개념적으로 동일하지만 물리적으로 서로 다른 애그리거트 객체를 사용한다 이 경우 일관성이 깨지는 문제가 발생할 수 있다 이 문제를 해결하기 위해선 DBMS가 지원하는 트랜잭션과 함께 애그리거트를 위한 추가적인 트랜잭션 처리 기법이 필요하다 애그리거트에 대해 사용할 수 있는 대표적인 트랜잭션 처리 방식에는 선점 잠금(Pessimistic Lock)과 비선점 잠금(Optimistic Lock)의 두 가지 방식이 있다 8.2 선점 잠금 선점 잠금은 먼저 애그리거트를 구..

책/도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지

[도메인 주도 개발 시작하기] 7장: 도메인 서비스

본문은 [도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 7.1 여러 애그리거트가 필요한 기능 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안 된다 억지로 구현하면 애그리거트는 자신의 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존이 높아지게 되며 코드를 복잡하게 만들어 수정을 어렵게 만드는 요인이 된다 게다가 애그리거트의 범위를 넘어서는 도메인 개념이 애그리거트에 숨어들어 명시적으로 드러나지 않게 된다 도메인 기능을 별도 서비스로 구현함으로써 이런 문제를 해결할 수 있다 7.2 도메인 서비스 도메인 서비스는..

코택
'책/도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지' 카테고리의 글 목록