[DDD START SERIES] EP.8 애그리거트 트랜잭션 관리

DDD START SERIES는 도메인 주도 개발 시작하기 책을 참고 하여 작성된 요약(?) 글 입니다. 8.1 애그리거트와 트랜잭션. 애그리거트의 일관성이 깨지면 안된다. 깨지는 문제가 발생하지 않으려면 2가지 방법이 있다. A 수정하고 있는 동안 B에서 수정할 수 없게 막는다. A가 조회를 하고 B가 변경을 하면 A는 B의 수정이 끝나면 재조회를 해서 수정한다. 이 방법들은 애그리커트의 자체의 트랜잭션과 관련이 있다. DBMS가 지원하는 트랜잭션과 함께 애그리거트를 위한 추가적인 트랜잭션 처리 기법이 필요하다....

September 18, 2023

[DDD START SERIES] EP.7 도메인 서비스

DDD START SERIES는 도메인 주도 개발 시작하기 책을 참고 하여 작성된 요약(?) 글 입니다. 7.1 여러 애그리거트가 필요한 기능 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안 된다. 억지로 구현할 경우 애그리거트 자신의 책임 범위를 넘어서는 기능을 구현한다. 때문에 코드가 길어지고 외부에 대한 의존이 높아지게 되며 코드를 복잡하게 만들어 수정을 어렵게 만든다. 게다가 애그리거트의 범위를 넘어서는 도메인 개념이 애그리거트에 숨어들어 명시적으로 드러나지 않게 된다. 이러한 문제를 해결하기 쉬운 해결 방법은 도메인 기능을 별도의 서비스로 만드는 것이다....

September 4, 2023

스프링으로 OCP 야무지게 체험해보기

OCP란? OCP (Open-Closed Principle)는 소프트웨어 디자인 원칙 중 하나로, 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다는 원칙을 나타냅니다. 이 원칙은 로버트 C. 마틴(Robert C. Martin)이 개발한 SOLID 원칙 중 하나로, 소프트웨어 시스템을 유지보수하고 확장하기 쉽게 만드는 데 기여합니다. OCP의 주요 개념은 다음과 같습니다. 확장에는 열려 있어야 함(Open for Extension): 소프트웨어 엔티티(클래스 또는 모듈)는 새로운 기능을 추가하거나 변경할 수 있어야 합니다. 이것은 새로운 요구 사항이나 기능 추가에 대응하기 위한 확장 가능성을 의미합니다....

August 22, 2023

[DDD START SERIES] EP.6 응용 서비스의 구현

DDD START SERIES는 도메인 주도 개발 시작하기 책을 참고 하여 작성된 요약 글 입니다. 6.1 표현 영역과 응용 영역 도메인이 제 기능을 하려면 사용자와 도메인을 연결해 주는 매개체가 필요하다. 응용 영역과 표현 영역이 사용자와 도메인을 연결해 주는 매개체 역할을 한다. 사용자 → 표현 영역 → 응용 영역 → 도메인 영역 표현 영역은 사용자의 요청을 해석한다. 해석 후 원하는 기능을 판별하여 기능을 제공하는 응용 서비스를 실행한다. 실제 사용자가 원하는 기능을 제공하는 것은 응용 영역에 위치한 서비스다....

August 21, 2023

[DDD START SERIES] EP.3 애그리거트

DDD START SERIES는 도메인 주도 개발 시작하기 책을 참고 하여 작성된 요약 글 입니다. EP 3.1 애그리거트 공통된 모델을 애그리커트 단위로 묶어서 표현한다. 보기도 쉬워지고 좋다. 상위 수준에서 모델화 모델을 정리하면 도메인의 복잡한 관계가 더 이해가 잘 된다. 애그리거트를 단위로 묶으면 이해하는 것뿐아니라 일관성 관리에 기준이 된다. 복잡도를 줄이고 변경 시간을 줄어들게 만든다. 애그리거트로 묶인 도메인들은 함께 생성하고 함께 제거한다. 주문으로 묶인 집합은 애그리거트는 회원이란 애그리거트의 영역을 침범하지 않는다. 경계를 설정할때 기본은 도메인의 규칙과 요구사항이다....

August 12, 2023