도메인 전문가와 개발자 간 지식공유
도메인 주도 개발 시작하기 1장을 읽고, 도메인 전문가와 지식을 공유해야 하는 이유와 요구사항에서 도메인 모델을 도출하는 과정, 밸류 타입을 불변으로 다뤄야 하는 이유를 정리합니다.
2023.08.18 — 2023.10.10 · 도메인 주도 개발 시작하기 · 다 읽는 데 약 125분
도메인 주도 개발 시작하기 1장을 읽고, 도메인 전문가와 지식을 공유해야 하는 이유와 요구사항에서 도메인 모델을 도출하는 과정, 밸류 타입을 불변으로 다뤄야 하는 이유를 정리합니다.
도메인 주도 개발 시작하기 2장을 읽고, DIP로 고수준·저수준 모듈의 의존 방향을 뒤집는 원리와 아키텍처에 적용한 구조, 도메인 영역의 구성요소·애그리거트·모듈 구성을 정리합니다.
애그리거트로 모델을 묶는 기준과 애그리거트 루트의 역할을 정리하고, 한 트랜잭션에서 한 애그리거트만 수정해야 하는 이유와 리포지터리 단위, ID를 이용한 애그리거트 참조 방식을 설명합니다.
도메인 주도 개발 시작하기 4장을 정리하며, 밸류 타입을 JPA로 매핑하는 방법과 애그리거트를 완전한 상태로 조회·저장하기 위한 로딩 전략·영속성 전파·식별자 생성 방식을 다룹니다.
도메인 주도 개발 시작하기 5장을 정리하며, 스펙을 이용한 동적 검색과 스펙 조합, 정렬·페이징 처리, 동적 인스턴스 생성과 @Subselect를 이용한 조회 전용 모델 구현 방법을 다룹니다.
도메인 주도 개발 시작하기 6장을 정리하며, 표현 영역과 응용 서비스의 책임을 나누는 기준, 도메인 로직이 응용 서비스로 새어 나가지 않게 하는 방법, 값 검증과 권한 검사의 위치를 다룹니다.
한 애그리거트에 넣기 어려운 할인 금액 계산 같은 도메인 로직을 도메인 서비스로 분리하는 방법과, 도메인 서비스의 패키지 위치, 인터페이스로 추상화해 특정 구현 기술에 대한 의존을 줄이는 방법을 정리합니다.
한 애그리거트를 여러 스레드가 동시에 수정할 때 생기는 일관성 문제를 선점 잠금, 비선점 잠금, 오프라인 선점 잠금으로 막는 방법을 JPA 구현 예시와 흐름도로 정리합니다.
주문 취소에 환불 로직이 섞이는 강결합 문제를 이벤트로 분리하는 방법과 스프링 이벤트 발행·구독, 비동기 처리 방식, 이벤트 저장소·포워더 구현, 이벤트 처리와 트랜잭션을 함께 고려하는 방법을 정리합니다.
여러 애그리거트의 데이터를 조합해야 하는 조회 화면의 성능 문제를, 명령 모델과 조회 모델을 분리하는 CQRS로 해결하는 방법과 모델 간 동기화 방식, 장단점을 정리합니다.