본문내용 바로가기
무료배송 이벤트 경품 소득공제

DDD Start! 도메인 주도 설계 구현과 핵심 개념 익히기

최범균 지음 | 지앤선 | 2016년 05월 27일 출간
| 5점 만점에 5점 리뷰 1개 리뷰쓰기
  • 정가 : 25,000원
    판매가 : 22,500 [10%↓ 2,500원 할인]
  • 통합포인트 :
    [기본적립] 1,250원 적립 [5% 적립] 안내 [추가적립] 5만원 이상 구매 시 2천원 추가적립 [회원혜택] 우수회원 3만원 이상 구매 시 2~4% 추가적립
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 도서상태 : 품절

이 책의 이벤트 해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

  • 개발자로 입문하기: 일단 이것부터 읽어보자!
    2019.05.31 ~ 2020.12.31
  • #리드잇 페이스북 페이지 팔로우 하시고, 신간소식 빠르게 받아보..
    2017.06.22 ~ 2025.07.31
  • 설문참여 시 매월 5명 추첨통해 선물을 드립니다.
    10. 14 ~ 12. 31
상품상세정보
ISBN 9788993827446(8993827443)
쪽수 336쪽
크기 173 * 230 mm /588g 판형알림

책소개

이 책이 속한 분야

DDD의 핵심 개념을 배우고 구현으로 익히기!

이 책은 DDD(도메인 주도 설계)를 처음 접하는 개발자를 위한 책이다. DDD를 실제 업무에 적용할 수 있도록 기본적인 이론을 설명하고 이를 구현한 코드를 바탕으로 입문자가 헤매지 않고 DDD를 학습할 수 있도록 했다.

애그리거트, 엔티티, 리포지토리 등 DDD의 핵심 패턴을 이용해서 도메인 모델을 구현하는 방법을 설명한다. 도메인 모델의 트랜잭션 충돌을 처리하는 기법(선점 잠금, 비선점 잠금)을 살펴보고, 도메인 이벤트를 이용해서 도메인 영역 간의 의존을 낮추는 방법과 명령 모델과 조회 모델을 나누는 기법에 대해서도 배운다.

스프링과 JPA를 이용해서 실제 동작하는 코드를 함께 제공하고 있으므로 DDD를 학습하고 싶은 개발자에게 좋은 길잡이가 될 것이다.

저자소개

저자가 속한 분야

저자 최범균은 나이를 먹어서도 백발에 개발을 하고 싶은 코딩을 좋아하는 개발자다. 좋은 책을 쓰는 것을 꿈꾸고 있고, 꾸준히 블로그와 브런치에 글을 쓰고 있다. ‘스프링4 프로그래밍 입문’, ‘JSP 2.3 웹 프로그래밍’, ‘개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴’ 등의 책을 집필했다.

최범균님의 최근작

전체작품보기

목차

CHAPTER 1 도메인 모델 시작
도메인… ………………………………………………………………………… 1
도메인 모델… …………………………………………………………………… 3
도메인 모델 패턴………………………………………………………………… 6
도메인 모델 도출……………………………………………………………… 10
엔티티와 밸류………………………………………………………………… 17
엔티티……………………………………………………………………………… 18
엔티티의 식별자 생성…………………………………………………………… 20
밸류 타입… ……………………………………………………………………… 22
엔티티 식별자와 밸류 타입……………………………………………………… 29
도메인 모델에 set 메서드 넣지 않기…………………………………………… 30
도메인 용어…………………………………………………………………… 34

CHAPTER 2 아키텍처 개요
네 개의 영역…………………………………………………………………… 37
계층 구조 아키텍처…………………………………………………………… 40
DIP……………………………………………………………………………… 44
DIP 주의사항……………………………………………………………………… 50
DIP와 아키텍처…………………………………………………………………… 52
도메인 영역의 주요 구성요소… …………………………………………… 54
엔티티와 밸류… ………………………………………………………………… 55
애그리거트………………………………………………………………………… 58
리포지터리………………………………………………………………………… 61
요청 처리 흐름………………………………………………………………… 65
인프라스트럭처 개요… ……………………………………………………… 66
모듈 구성… …………………………………………………………………… 68

CHAPTER 3 애그리거트
애그리거트…………………………………………………………………… 71
애그리거트 루트……………………………………………………………… 75
도메인 규칙과 일관성…………………………………………………………… 76
애그리거트 루트의 기능 구현…………………………………………………… 80
트랜잭션 범위…………………………………………………………………… 82
리포지터리와 애그리거트…………………………………………………… 85
ID를 이용한 애그리거트 참조……………………………………………… 87
ID를 이용한 참조와 조회 성능…………………………………………………… 92
애그리거트 간 집합 연관…………………………………………………… 94
애그리거트를 팩토리로 사용하기…………………………………………… 98

CHAPTER 4 리포지터리와 모델구현(JPA 중심)
JPA를 이용한 리포지터리 구현…………………………………………… 103
모듈 위치……………………………………………………………………… 104
리포지터리 기본 기능 구현…………………………………………………… 104
매핑 구현……………………………………………………………………… 109
엔티티와 밸류 기본 매핑 구현… …………………………………………… 109
기본 생성자… ………………………………………………………………… 112
필드 접근 방식 사용…………………………………………………………… 114
AttributeConverter를 이용한 밸류 매핑 처리……………………………… 115
밸류 컬렉션: 별도 테이블 매핑……………………………………………… 119
밸류 컬렉션: 한 개 칼럼 매핑………………………………………………… 122
밸류를 이용한 아이디 매핑…………………………………………………… 123
별도 테이블에 저장하는 밸류 매핑… ……………………………………… 125
밸류 컬렉션을 @Entity로 매핑하기… ……………………………………… 129
ID 참조와 조인 테이블을 이용한 단방향 M-N 매핑………………………… 134
애그리거트 로딩 전략………………………………………………………… 134
애그리거트의 영속성 전파…………………………………………………… 138
식별자 생성 기능……………………………………………………………… 139

CHAPTER 5 리포지터리의 조회 기능(JPA 중심)
검색을 위한 스펙……………………………………………………………… 143
스펙 조합……………………………………………………………………… 145
JPA를 위한 스펙 구현……………………………………………………… 146
JPA 스펙 구현………………………………………………………………… 147
AND/OR 스펙 조합을 위한 구현…………………………………………… 150
스펙을 사용하는 JPA 리포지터리 구현……………………………………… 153
정렬 구현……………………………………………………………………… 155
페이징과 개수 구하기 구현………………………………………………… 160
조회 전용 기능 구현………………………………………………………… 162
동적 인스턴스 생성…………………………………………………………… 162
하이버네이트 @Subselect 사용……………………………………………… 165

CHAPTER 6 응용 서비스와 표현 영역
표현 영역과 응용 영역……………………………………………………… 169
응용 서비스의 역할…………………………………………………………… 171
도메인 로직 넣지 않기………………………………………………………… 173
응용 서비스의 구현…………………………………………………………… 176
응용 서비스의 크기… ………………………………………………………… 176
응용 서비스의 인터페이스와 클래스………………………………………… 180
메서드 파라미터와 값 리턴…………………………………………………… 181
표현 영역에 의존하지 않기…………………………………………………… 185
트랜잭션 처리………………………………………………………………… 187
도메인 이벤트 처리…………………………………………………………… 188
표현 영역……………………………………………………………………… 190
값 검증………………………………………………………………………… 193
권한 검사……………………………………………………………………… 197
조회 전용 기능과 응용 서비스……………………………………………… 201

CHAPTER 7 도메인 서비스
여러 애그리거트가 필요한 기능…………………………………………… 203
도메인 서비스………………………………………………………………… 205
도메인 서비스의 패키지 위치………………………………………………… 209
도메인 서비스의 인터페이스와 클래스……………………………………… 210

CHAPTER 8 애그리거트 트랜잭션 관리
애그리거트와 트랜잭션……………………………………………………… 213
선점 잠금……………………………………………………………………… 215
선전 잠금과 교착 상태………………………………………………………… 217
비선점 잠금…………………………………………………………………… 218
강제 버전 증가………………………………………………………………… 227
오프라인 선점 잠금…………………………………………………………… 228
오프라인 선점 잠금을 위한 LockManager 인터페이스와 관련 클래스… 230
DB를 이용한 LockManager 구현… ………………………………………… 233

CHAPTER 9 도메인 모델과 BOUNDED CONTEXT
도메인 모델과 경계…………………………………………………………… 241
BOUNDED CONTEXT……………………………………………………… 242
BOUNDED CONTEXT의 구현…………………………………………… 245
BOUNDED CONTEXT 간 통합…………………………………………… 248
BOUNDED CONTEXT 간 관계…………………………………………… 256
컨텍스트 맵…………………………………………………………………… 259

CHAPTER 10 이벤트
시스템 간 강결합의 문제… ………………………………………………… 261
이벤트 개요… ………………………………………………………………… 265
이벤트 관련 구성요소… ……………………………………………………… 266
이벤트의 구성… ……………………………………………………………… 266
이벤트 용도… ………………………………………………………………… 269
이벤트 장점… ………………………………………………………………… 270
이벤트, 핸들러, 디스패처 구현……………………………………………… 271
이벤트 클래스… ……………………………………………………………… 271
EventHandler 인터페이스… ………………………………………………… 273
이벤트 디스패처인 Events 구현……………………………………………… 275
흐름 정리……………………………………………………………………… 279
AOP를 이용한 Events.reset() 실행…………………………………………… 281
동기 이벤트 처리 문제……………………………………………………… 283
비동기 이벤트 처리…………………………………………………………… 284
로컬 핸들러의 비동기 실행…………………………………………………… 285
메시징 시스템을 이용한 비동기 구현……………………………………… 290
이벤트 저장소를 이용한 비동기 처리……………………………………… 291
이벤트 저장소 구현… ………………………………………………………… 293
이벤트 저장을 위한 이벤트 핸들러 구현…………………………………… 299
REST API 구현………………………………………………………………… 301
포워더 구현…………………………………………………………………… 304
이벤트 적용 시 추가 고려사항……………………………………………… 307

CHAPTER 11 CQRS
단일 모델의 단점……………………………………………………………… 311
CQRS………………………………………………………………………… 312
웹과 CQRS…………………………………………………………………… 317
CQRS 장단점………………………………………………………………… 318

책 속으로

서문 중에서
처음 DDD(Domain Driven Design: 도메인 주도 설계)를 접한 건 2006년의 일이다. 이때, 에릭 에반스가 쓴 "도메인 주도 설계" 책을 처음 읽었다. 나는 그 전까지 컨트롤러-서비스-DAO-DTO를 이용해서 웹 어플리케이션을 개발하고 있었는데, DDD 책을 읽고 새로운 세상을 만난 기분이 들었다. 그 뒤로 이 주제의 관련 지식을 학습하고 나름 적용도 해보면서 DDD를 익히기 시작했다. DDD를 시도할 때 어려웠던 것은 DDD 자체를 이해하는 것이었다. 지금도 DDD를 완전히 마스터했다고 할 수 없지... 더보기

출판사 서평

대상 독자

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

이 책을 읽는데 개발 경력은 크게 중요하지 않지만, 적어도 3~4년의 개발 경험이 있으면 책의 내용을 이해하는데 도움이 된다. 신입이라면 이 책에서 말하는 일부 내용이 와닿지 않을 수도 있다.

이 책 ... 더보기

북로그 리뷰 (1) 전체보기 쓰러가기

도서 구매 후 리뷰를 작성하시면 통합포인트를 드립니다.
결제 90일 이내 작성 시 300원 / 발송 후 5일 이내 작성시 400원 / 이 상품의 첫 리뷰 작성 시 500원
(포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외)
안내
  • 책은 입문자를 위한 내용을 담고 있다. 에릭 에반스의 저서보다 알기 쉬운 예제로 DDD를 설명하기 때문에 이해가 한결 쉽다. 개발을 이제 막 공부하는 사람들 보다는 경력이 조금 있는 분들이 보기 좋을 것이라 생각한다. 개인적으로도 개발에 대한 깊이있는 온갖 궁금증이 생겨날 경력 1,2년 이상의 개발자들이 내용 흡수력 역시 가장 좋을 듯 싶다. 예제는 메이븐, 자바 8, 스프링 프레임워크, JPA(하이버네이트), MySQL을 사용하여 DDD를 설명한다. 본인과 같이 스프링 기반의 프로젝트 경험이 있... 더보기

Klover 평점/리뷰 (0)

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①양서-판매정가의 12%, ②일서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

  • 길벗R&D
    17,100원
  • 이남호
    23,310원
  • 윤인성
    16,200원
  • 선양미
    18,900원
  • 박응용
    16,920원
더보기+

이 분야의 신간

  • 테런스 J. 세즈노스키
    22,500원
  • 블레이크 J. 해리스
    25,200원
  • 길벗R&D
    32,400원
  • 길벗R&D
    19,800원
  • 이기창
    31,500원
더보기+

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품