도메인 주도 개발 시작하기 : DDD 핵심 개념 정리부터 구현까지
Description
가장 쉽게 배우는 도메인 주도 설계 입문서!
이 책은 도메인 주도 설계(DDD)를 처음 배우는 개발자를 위한 책이다. 실제 업무에 DDD를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성했다. 이 책으로 도메인 모델을 이용하여 애플리케이션을 구현하면서 DDD에 대한 이해를 넓힐 수 있을 것이다.

저자

최범균

자지:최범균
코딩을좋아하여나이를먹고백발이되어도개발을하고싶은개발자다.좋은책쓰는것을목표로꾸준히블로그와브런치에글을쓰고있으며많은강연활동도하고있다.
전)아이스크림에듀,에스씨지솔루션즈,위메이드엔터테인먼트,다음커뮤니케이션개발자
현)에스씨지랩개발실장

목차

Chapter1.도메인모델시작하기
1.1도메인이란?
1.2도메인전문가와개발자간지식공유
1.3도메인모델
1.4도메인모델패턴
1.5도메인모델도출
1.6엔티티와밸류
1.6.1엔티티
1.6.2엔티티의식별자생성
1.6.3밸류타입
1.6.4엔티티식별자와밸류타입
1.6.5도메인모델에set메서드넣지않기
1.7도메인용어와유비쿼터스언어

Chapter2.아키텍처개요
2.1네개의영역
2.2계층구조아키텍처
2.3DIP
2.3.1DIP주의사항
2.3.2DIP와아키텍처
2.4도메인영역의주요구성요소
2.4.1엔티티와밸류
2.4.2애그리거트
2.4.3리포지터리
2.5요청처리흐름
2.6인프라스트럭처개요
2.7모듈구성

Chapter3.애그리거트
3.1애그리거트
3.2애그리거트루트
3.2.1도메인규칙과일관성
3.2.2애그리거트루트의기능구현
3.2.3트랜잭션범위
3.3리포지터리와애그리거트
3.4ID를이용한애그리거트참조
3.4.1ID를이용한참조와조회성능
3.5애그리거트간집합연관
3.6애그리거트를팩토리로사용하기

Chapter4.리포지터리와모델구현(JPA중심)
4.1JPA를이용한리포지터리구현
4.1.1모듈위치
4.1.2리포지터리기본기능구현
4.2스프링데이터JPA를이용한리포지터리구현
4.3매핑구현
4.3.1엔티티와밸류기본매핑구현
4.3.2기본생성자
4.3.3필드접근방식사용
4.3.4AttributeConverter를이용한밸류매핑처리
4.3.5밸류컬렉션:별도테이블매핑
4.3.6밸류컬렉션:한개칼럼매핑
4.3.7밸류를이용한ID매핑
4.3.8별도테이블에저장하는밸류매핑
4.3.9밸류컬렉션을@Entity로매핑하기
4.3.10ID참조와조인테이블을이용한단방향M-N매핑
4.4애그리거트로딩전략
4.5애그리거트의영속성전파
4.6식별자생성기능
4.7도메인구현과DIP

Chapter5.스프링데이터JPA를이용한조회기능
5.1시작에앞서
5.2검색을위한스펙
5.3스프링데이터JPA를이용한스펙구현
5.4리포지터리/DAO에서스펙사용하기
5.5스펙조합
5.6정렬지정하기
5.7페이징처리하기
5.8스펙조합을위한스펙빌더클래스
5.9동적인스턴스생성
5.10하이버네이트@Subselect사용

Chapter6.응용서비스와표현영역
6.1표현영역과응용영역
6.2응용서비스의역할
6.2.1도메인로직넣지않기
6.3응용서비스의구현
6.3.1응용서비스의크기
6.3.2응용서비스의인터페이스와클래스
6.3.3메서드파라미터와값리턴
6.3.4표현영역에의존하지않기
6.3.5트랜잭션처리
6.4표현영역
6.5값검증
6.6권한검사
6.7조회전용기능과응용서비스

Chpater7.도메인서비스
7.1여러애그리거트가필요한기능
7.2도메인서비스
7.2.1계산로직과도메인서비스
7.2.2외부시스템연동과도메인서비스
7.2.3도메인서비스의패키지위치
7.2.4도메인서비스의인터페이스와클래스

Chapter8.애그리거트트랜잭션관리
8.1애그리거트와트랜잭션
8.2선점잠금
8.2.1선점잠금과교착상태
8.3비선점잠금
8.3.1강제버전증가
8.4오프라인선점잠금
8.4.1오프라인선점잠금을위한LockManager인터페이스와관련클래스
8.4.2DB를이용한LockManager구현

Chapter9.도메인모델과바운디드컨텍스트
9.1도메인모델과경계
9.2바운디드컨텍스트
9.3바운디드컨텍스트구현
9.4바운디드컨텍스트간통합
9.5바운디드컨텍스트간관계
9.6컨텍스트맵

Chapter10.이벤트
10.1시스템간강결합문제
10.2이벤트개요
10.2.1이벤트관련구성요소
10.2.2이벤트의구성
10.2.3이벤트용도
10.2.4이벤트장점
10.3이벤트,핸들러,디스패처구현
10.3.1이벤트클래스
10.3.2Events클래스와ApplicationEventPublisher
10.3.3이벤트발생과이벤트핸들러
10.3.4흐름정리
10.4동기이벤트처리문제
10.5비동기이벤트처리
10.5.1로컬핸들러비동기실행
10.5.2메시징시스템을이용한비동기구현
10.5.3이벤트저장소를이용한비동기처리
10.6이벤트적용시추가고려사항
10.6.1이벤트처리와DB트랜잭션고려

Chapter11.CQRS
11.1단일모델의단점
11.2CQRS
11.2.1웹과CQRS
11.2.2CQRS장단점

출판사 서평

★다루는내용
도메인모델의이해,엔티티와밸류의개념
아키텍처의주요영역구성요소와DIP패턴
애그리거트,리포지터리등DDD주요패턴의이해와구현방법
응용서비스와표현영역을연동하는방법
도메인서비스의필요성과구현방법
도메인모델의트랜잭션충돌을처리하는방법
도메인이벤트를이용하여시스템의결합도를낮추고기능을확장하는방법
CQRS의개념과명령모델/조회모델을나누는방법

★대상독자

이책은DDD를처음접하는개발자를위한책으로DDD입문자를대상으로한다.DDD고수가되는법을알려주는책은아니다.이미DDD기초를마스터했다면다른책을통해DDD의심오함을느끼길바란다.아직DDD를잘모르지만관심이있다면이책을통해DDD에대한호기심을채울수있을것이다.

★예제소스

예제코드는메이븐,자바17,스프링부트,JPA(하이버네이트),타임리프,MySQL을이용해서작성했다.