간편결제, 신용카드 청구할인
삼성카드 6% (21,150원)
(삼성카드 6% 청구할인)
인터파크 롯데카드 5% (21,380원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (15,750원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (18,000원)
(최대할인 4만원 / 2만원 이상 결제)
Close

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

소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 33
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

25,000원

  • 22,500 (10%할인)

    1,250P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
  • 추가혜택
    배송정보
    주문수량
    감소 증가
    • 이벤트/기획전

    • 연관도서

    • 사은품(5)

    책소개

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

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

    출판사 서평

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

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

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

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

    대상 독자

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

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

    이 책 예제 코드에서 사용하는 언어는 자바이다. 예제에서 사용한 기술로는 스프링 MVC와 JPA(ORM)가 있다. 이 두 기술 자체를 잘 몰라도 책에서 설명하는 내용을 따라가는데 어려움은 없지만 기술에 대한 개요 정도를 알고 있다면 책을 더 잘 이해하는데 도움이 된다. 특히 SQL에만 익숙하다면 JPA가 뭔지 정도는 학습을 하고 이 책을 읽기를 바란다.

    DDD가 객체를 기반으로 도메인 모델을 구축하는 내용을 다루지만 객체 지향의 캡슐화, 추상화, 다형성과 같은 주제가 익숙하지 않아도 책을 읽고 이해하는데 큰 문제는 되지 않는다.

    이 책의 구성

    이 책은 도메인 모델을 이용해서 어플리케이션을 구현하는데 필요한 내용을 다룬다. 전체는 11장으로 구성되어 있는데, 도입부인 1장과 2장에서는 도메인 모델을 구현할 때 알아야 할 기본 내용을 다룬다. 1장에서는 도메인 모델이 무엇인지 알아보고 엔티티와 밸류에 대해 알아본다. 2장은 상위 수준에서 아키텍처의 네 영역과 DIP패턴을 설명하고, 도메인 영역의 구성 요소에 대해 살펴본다.

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

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

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

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

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

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

    예제 코드 다운로드
    https-//github.com/madvirus/ddd-start

    목차

    CHAPTER 1 도메인 모델 시작
    도메인
    도메인 모델
    도메인 모델 패턴
    도메인 모델 도출
    엔티티와 밸류
    엔티티
    엔티티의 식별자 생성
    밸류 타입
    엔티티 식별자와 밸류 타입
    도메인 모델에 set 메서드 넣지 않기
    도메인 용어

    CHAPTER 2 아키텍처 개요
    네 개의 영역
    계층 구조 아키텍처
    DIP
    DIP 주의사항
    DIP와 아키텍처
    도메인 영역의 주요 구성요소
    엔티티와 밸류
    애그리거트
    리포지터리
    요청 처리 흐름
    인프라스트럭처 개요
    모듈 구성

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

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

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

    CHAPTER 6 응용 서비스와 표현 영역
    표현 영역과 응용 영역
    응용 서비스의 역할
    도메인 로직 넣지 않기
    응용 서비스의 구현
    응용 서비스의 크기
    응용 서비스의 인터페이스와 클래스
    메서드 파라미터와 값 리턴
    표현 영역에 의존하지 않기
    트랜잭션 처리... 187
    도메인 이벤트 처리
    표현 영역

    권한 검사
    조회 전용 기능과 응용 서비스

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

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

    CHAPTER 9 도메인 모델과 BOUNDED CONTEXT
    도메인 모델과 경계
    BOUNDED CONTEXT의 구현
    BOUNDED CONTEXT 간 통합
    BOUNDED CONTEXT 간 관계
    컨텍스트 맵

    CHAPTER 10 이벤트
    시스템 간 강결합의 문제
    이벤트 개요
    이벤트 관련 구성요소
    이벤트의 구성
    이벤트 용도
    이벤트 장점
    이벤트, 핸들러, 디스패처 구현
    이벤트 클래스.
    EventHandler 인터페이스
    이벤트 디스패처인 Events 구현
    흐름 정리
    AOP를 이용한 Events.reset() 실행
    동기 이벤트 처리 문제
    비동기 이벤트 처리
    로컬 핸들러의 비동기 실행
    메시징 시스템을 이용한 비동기 구현
    이벤트 저장소를 이용한 비동기 처리
    이벤트 저장소 구현
    이벤트 저장을 위한 이벤트 핸들러 구현
    REST API 구현
    포워더 구현
    이벤트 적용 시 추가 고려사항

    CHAPTER 11 CQRS
    단일 모델의 단점
    CQRS
    웹과 CQRS
    CQRS 장단점

    본문중에서

    처음 DDD(Domain Driven Design- 도메인 주도 설계)를 접한 건 2006년의 일이다. 이때, 에릭 에반스가 쓴 "도메인 주도 설계" 책을 처음 읽었다. 나는 그 전까지 컨트롤러-서비스-DAO-DTO를 이용해서 웹 어플리케이션을 개발하고 있었는데, DDD 책을 읽고 새로운 세상을 만난 기분이 들었다. 그 뒤로 이 주제의 관련 지식을 학습하고 나름 적용도 해보면서 DDD를 익히기 시작했다. DDD를 시도할 때 어려웠던 것은 DDD 자체를 이해하는 것이었다. 지금도 DDD를 완전히 마스터했다고 할 수 없지만, 처음 책을 읽을 때엔 잘 이해되지 않는 내용이 많았다. 그 덕에 같은 책을 여러 차례 반복해서 읽어가면서 조금씩 이해의 폭을 넓혔다.
    두 번째로 어려웠던 것은 구현에 대한 것이었다. 그 당시만 해도 DDD에 대한 구현 예제가 많지 않았다. DDD 자체에 대한 이해가 부족한 상황에서 참고할 만한 코드도 없었기에 좌충우돌하면서 구현을 시도했다. 그 사이 많은 시간이 흘렀지만 여전히 많은 개발자가 DDD와 도메인 모델을 구현하는 것을 어려워하고 있다. DDD가 어렵게 느껴지는 여러 이유가 있겠지만, 그 중 하나는 징검다리 역할을 할 입문서가 없는 것이라 생각한다. 에릭 에반스의 책은 처음 DDD를 접하는 개발자가 보기엔 다소 어렵고, 어던 책은 아쉽게도 번역서가 없거나 DDD 입문자에게 도움이 되지 않는다. 이 책을 쓴 계기는 바로 여기에 있다. 프로그래밍 언어 입문서와 깊이 있는 내용을 다루는 책이 따로 있는 것처럼, DDD도 입문자를 위한 책이 따로 필요하다 생각한다.이 책은 처음 DDD를 접하는 개발자가 깊이 있게 DDD를 학습하기 전에 DDD의 기본을 쌓을 수 있는 징검다리 역할을 한다. (중략)
    ('서문' 중에서)

    저자소개

    생년월일 -
    출생지 -
    출간도서 0종
    판매수 0권

    고대 컴퓨터학과를 졸업한 뒤 지금까지 자바 개발자로 일해 왔으며, 자바캔(javacan.madvirus.net) 사이트를 통해 자바 관련 지식을 공유하고 있다. 'JSP 2.0 기초부터 중급까지', '하이버네이트 3 프로그래밍', 'Ajax 프로그래밍 기초부터 중급까지' 등 다양한 자바 관련 서적을 집필하였다. 현재는 다음 커뮤니케이션의 커뮤니티SU에서 근무하고 있으며 좋은 아키텍처, 좋은 설계, 대용량 처리 기법, 효율적 개발 방법론 등에 많은 관심을 가지고 있다.

    이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

      리뷰

      0.0 (총 0건)

      구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

      리뷰쓰기

      기대평

      작성시 유의사항

      평점
      0/200자
      등록하기

      기대평

      0.0

      교환/환불

      교환/환불 방법

      ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

      교환/환불 가능 기간

      고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

      교환/환불 비용

      고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

      교환/환불 불가사유

      반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
      배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

      소비자 피해보상

      소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
      교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

      기타

      도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

      배송안내

      • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

      • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

      • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

      • 배송비

      도서(중고도서 포함) 구매

      2,000원 (1만원이상 구매 시 무료배송)

      음반/DVD/잡지/만화 구매

      2,000원 (2만원이상 구매 시 무료배송)

      도서와 음반/DVD/잡지/만화/
      중고직배송상품을 함께 구매

      2,000원 (1만원이상 구매 시 무료배송)

      업체직접배송상품 구매

      업체별 상이한 배송비 적용