도메인이란 소프트웨어로 해결하고자 하는 문제의 영역이다.한 도메인은 다시 하위 도메인으로 나눌 수 있다.도메인을 잘 이해하고, 설정하기 위해서는 요구사항을 잘 이해하는 것이 선행되어야 한다.이를 위해 개발자는 해당 도메인의 전문가와 대화를 통해 도메인 지식을 갖춰야 한
2.1 네 개의 영역
3.1 애그리거트 도메인 요소 간의 관계를 잘 파악하여야 코드의 변경과 확장이 쉬워진다. 그렇다면 도메인 요소 간의 관계는 어떻게 잘 파악할 수 있을까? 복잡한 도메인을 이해하기 쉬운 단계로 만들려면 상위 수준에서 모델을 바라보아야 하는데, 이때 애그리거트 개념을 적
리포지터리 인터페이스는 도메인 영역에 속하고, 리포지터리를 구현한 클래스는 인프라스트럭처 영역에 속한다.4.1~2를 아우르는 기본적인 리포지터리 활용 방식은 넘어가겠다.앞선 챕터에서 언급한 애그리거트, 엔티티, 그리고 밸류 데이터는 어떻게 코드에 녹여내야 할까?애그리거
5장은 대부분 spec을 이용하여 설명하고 있다. 처음 들어본 개념이라서 찾아보니 Specification과 Querydsl이 비교 대상으로 자주 언급된다. 결론적으로 Specification의 사용은 지양하고, Querydsl을 사용하는 것 같다. 그래서 이번 포스
6.1 표현 영역과 응용 영역 사용자와 도메인을 연결해주는 것은 표현영역과 응용 영역이다. 응용 서비스 응용서비스가 도메인 로직을 일부 구현하면 코드 중복, 로직 분산 등 코드 품질에 안 좋은 영향을 준다. 트랜잭션 처리를 담당한다.(도메인의 상태 변경을 트랜잭
운영자와 고객이 동시에 주문 애그리거트를 수정하면 어떻게 될까?운영자가 배송 상태로 변경했는데, 그 사이에 고객이 배송지를 변경했다면?\-> 🔥 애그리거트의 일관성이 깨진다.애그리거트의 일관성이 깨지는 문제를 막기 위해 두 가지 방법 중 하나를 택해야 한다.운영자가
7.1 여러 애그리거트가 필요한 기능 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안 된다. 이럴 때는 도메인 기능을 별도의 서비스로 구현한다. 7.2 도메인 서비스 도메인 서비스는 도메인 영역에 위치한 도메인 로직을 표현할 때 사용
DDD와 MSA ☑️ Monolithic : 모든 서비스를 하나의 애플리케이션에 구현(db도 공유) ☑️ MSA(Micro Service Architecture) : 분리될 수 있는 비즈니스 요소는 마이크로서비스 단위로 DB까지 나누고 이들이 모여 하나의 서비스를 구성
주문 바운디드 컨텍스트와 결제 바운디드 컨텍스트처럼 강한 결합을 가지는 바운디드 컨텍스트들이 있다. 주문 로직과 결제 로직이 코드상으로도 뒤섞여 여러 문제를 야기한다. 이럴 때는 이벤트를 사용해 강결합을 약화시킬 수 있다. 특히 비동기 이벤트를 사용하면 두 시스템 간의
.