메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

도메인 주도 개발 시작하기

DDD 핵심 개념 정리부터 구현까지

한빛미디어

집필서

판매중

  • 저자 : 최범균
  • 출간 : 2022-03-21
  • 페이지 : 356 쪽
  • ISBN : 9791162245385
  • eISBN : 9791162245941
  • 물류코드 :10538
  • 초급 초중급 중급 중고급 고급
1 2 3 4 5
4.8점 (51명)
좋아요 : 8

책소개

가장 쉽게 배우는 도메인 주도 설계 입문서!

 

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

 

10538_detail.jpeg

 

 

 

 

저자소개

최범균 저자

최범균

코딩하는 걸 좋아하고 나이 들어서도 코딩하고 싶은 개발자다. 좋은 책과 글을 쓰고 싶어 하며 유튜브나 SNS로 개발 관련 이야기를 나누고 있다.

 

목차

Chapter 1. 도메인 모델 시작하기

 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 도메인 용어와 유비쿼터스 언어 

 

Chapter 2. 아키텍처 개요

 2.1 네 개의 영역

 2.2 계층 구조 아키텍처

 2.3 DIP

  2.3.1 DIP 주의사항

  2.3.2 DIP와 아키텍처

 2.4 도메인 영역의 주요 구성요소

  2.4.1 엔티티와 밸류

  2.4.2 애그리거트

  2.4.3 리포지터리

 2.5 요청 처리 흐름

 2.6 인프라스트럭처 개요

 2.7 모듈 구성

 

Chapter 3. 애그리거트

 3.1 애그리거트

 3.2 애그리거트 루트

  3.2.1 도메인 규칙과 일관성

  3.2.2 애그리거트 루트의 기능 구현

  3.2.3 트랜잭션 범위

 3.3 리포지터리와 애그리거트

 3.4 ID를 이용한 애그리거트 참조

  3.4.1 ID를 이용한 참조와 조회 성능

 3.5 애그리거트 간 집합 연관

 3.6 애그리거트를 팩토리로 사용하기

 

Chapter 4. 리포지터리와 모델 구현(JPA 중심)

 4.1 JPA를 이용한 리포지터리 구현

  4.1.1 모듈 위치

  4.1.2 리포지터리 기본 기능 구현

 4.2 스프링 데이터 JPA를 이용한 리포지터리 구현

 4.3 매핑 구현

  4.3.1 엔티티와 밸류 기본 매핑 구현

  4.3.2 기본 생성자

  4.3.3 필드 접근 방식 사용

  4.3.4 AttributeConverter를 이용한 밸류 매핑 처리

  4.3.5 밸류 컬렉션: 별도 테이블 매핑

  4.3.6 밸류 컬렉션: 한 개 칼럼 매핑

  4.3.7 밸류를 이용한 ID 매핑

  4.3.8 별도 테이블에 저장하는 밸류 매핑

  4.3.9 밸류 컬렉션을 @Entity로 매핑하기

  4.3.10 ID 참조와 조인 테이블을 이용한 단방향 M-N 매핑

 4.4 애그리거트 로딩 전략

 4.5 애그리거트의 영속성 전파

 4.6 식별자 생성 기능

 4.7 도메인 구현과 DIP

 

Chapter 5. 스프링 데이터 JPA를 이용한 조회 기능

 5.1 시작에 앞서

 5.2 검색을 위한 스펙

 5.3 스프링 데이터 JPA를 이용한 스펙 구현

 5.4 리포지터리/DAO에서 스펙 사용하기

 5.5 스펙 조합

 5.6 정렬 지정하기

 5.7 페이징 처리하기

 5.8 스펙 조합을 위한 스펙 빌더 클래스

 5.9 동적 인스턴스 생성

 5.10 하이버네이트 @Subselect 사용

 

Chapter 6. 응용 서비스와 표현 영역

 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 조회 전용 기능과 응용 서비스

 

Chpater 7. 도메인 서비스

 7.1 여러 애그리거트가 필요한 기능

 7.2 도메인 서비스

  7.2.1 계산 로직과 도메인 서비스

  7.2.2 외부 시스템 연동과 도메인 서비스

  7.2.3 도메인 서비스의 패키지 위치

  7.2.4 도메인 서비스의 인터페이스와 클래스

 

Chapter 8. 애그리거트 트랜잭션 관리

 8.1 애그리거트와 트랜잭션

 8.2 선점 잠금

  8.2.1 선점 잠금과 교착 상태

 8.3 비선점 잠금

  8.3.1 강제 버전 증가

 8.4 오프라인 선점 잠금

  8.4.1 오프라인 선점 잠금을 위한 LockManager 인터페이스와 관련 클래스

  8.4.2 DB를 이용한 LockManager 구현

 

Chapter 9. 도메인 모델과 바운디드 컨텍스트

 9.1 도메인 모델과 경계

 9.2 바운디드 컨텍스트

 9.3 바운디드 컨텍스트 구현

 9.4 바운디드 컨텍스트 간 통합

 9.5 바운디드 컨텍스트 간 관계

 9.6 컨텍스트 맵

 

Chapter 10. 이벤트

 10.1 시스템 간 강결합 문제

 10.2 이벤트 개요

  10.2.1 이벤트 관련 구성요소

  10.2.2 이벤트의 구성

  10.2.3 이벤트 용도

  10.2.4 이벤트 장점

 10.3 이벤트, 핸들러, 디스패처 구현

  10.3.1 이벤트 클래스

  10.3.2 Events 클래스와 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 트랜잭션 고려

 

Chapter 11. CQRS

 11.1 단일 모델의 단점

 11.2 CQRS

  11.2.1 웹과 CQRS

  11.2.2 CQRS 장단점

출판사리뷰

이 책은 도메인 모델을 이용하여 애플리케이션을 구현하는 데 필요한 내용을 다루며 전체 11

장으로 구성되어 있다.

 

 

★이 책의 내용

 

1장과 2장에서는 도메인 모델을 구현할 때 알아야 할 기본적인 내용을 다룬다. 1장에서는 도메인 모델이 무엇인지 알아보고 엔티티와 밸류에 대해 알아본다. 2장은 상위 수준에서 아키텍처의 네 영역과 DIP 패턴을 설명하고 도메인 영역의 구성 요소에 대해 살펴본다.

 

3장부터 5장은 애그리거트와 리포지터리를 설명한다. 애그리거트는 복잡한 도메인 모델을 관리 가능한 단위로 묶어주는 역할을 담당한다. 3장에서는 애그리거트가 무엇이고 구현을 어떻게 하는지 알아본다. 4장에서는 애그리거트의 논리적인 저장소인 리포지터리를 구현하는 방법을 알아보고 5장에서는 검색 조건을 위한 스펙, 정렬, 페이징 등 조회 기능을 구현해본다.

 

6장은 응용 서비스와 표현 영역에 대해 설명한다. 응용 서비스가 어떻게 도메인 모델을 사용하고 어떤 역할을 수행하는지 알아보고 표현 영역과 응용 서비스의 연동에 대해 설명한다.

 

7장은 도메인 영역의 구성요소 중 하나인 도메인 서비스가 필요한 이유와 구현에 대해 설명한다.

 

8장에서는 애그리거트의 트랜잭션 범위에 대해 살펴본다. 애그리거트의 트랜잭션 처리를 위해 DBMS를 이용한 선점 잠금과 버전을 이용한 비선점 잠금을 구현하는 방법을 소개한다.

 

9장은 애그리거트와 더불어 가장 중요한 개념 중 하나인 바운디드 컨텍스트에 대한 내용을 다룬다. 바운디드 컨텍스트가 무엇이고 각 컨텍스트의 통합과 관계에 대해 배워본다.

 

10장과 11장은 각각 이벤트와 CQRS에 대해 설명한다. 

10장은 도메인 이벤트를 이용해서 시스템의 결합도를 낮추고 기능을 확장하는 방법을 설명하며 비동기로 이벤트를 처리하는 몇 가지 구현 방법도 살펴본다. 11장은 CQRS가 무엇인지 알아보고, 이를 통해 어떤 효과를 얻을 수 있는지에 대해 설명한다.

 

 

★ 다루는 내용

 

☑ 도메인 모델의 이해, 엔티티와 밸류의 개념

☑ 아키텍처의 주요 영역 구성요소와 DIP 패턴

☑ 애그리거트, 리포지터리 등 DDD 주요 패턴의 이해와 구현 방법

☑ 응용 서비스와 표현 영역을 연동하는 방법

☑ 도메인 서비스의 필요성과 구현 방법

☑ 도메인 모델의 트랜잭션 충돌을 처리하는 방법

☑ 도메인 이벤트를 이용하여 시스템의 결합도를 낮추고 기능을 확장하는 방법

☑ CQRS의 개념과 명령 모델/조회 모델을 나누는 방법

 

 

★ 대상 독자

 

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

 

 

★ 예제 소스

 

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

https://github.com/madvirus/ddd-start2

독자리뷰

오탈자 보기

부록/예제소스

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원 무료배송
닫기

리뷰쓰기

닫기
* 상품명 :
도메인 주도 개발 시작하기
* 제목 :
* 별점평가
1 2 3 4 5
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
도메인 주도 개발 시작하기
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
도메인 주도 개발 시작하기
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?