책 소개
요약
도메인 주도 설계(DDD)를 프로젝트에 적용하고자 하는 개발자, 소프트웨어 아키텍트 또는 관리자가 DDD를 빠르게 배우고 적용할 수 있게 도와준다. 뿐만 아니라 좋은 소프트웨어를 만들기 위해 꼭 필요한 역할인 비즈니스 전문가와 플랫폼 기획자도 DDD를 이해하고 적극적으로 설계에 참여할 수 있게 해준다.
도메인 모델을 분리하고 명확한 경계 내에서 비즈니스 전문가와 개발자가 함께 공통적으로 사용할 수 있는 보편 언어를 개발하는 방법, 레거시 시스템을 다루기 위해 서브 도메인을 활용하는 방법과 여러 개의 분리된 컨텍스트의 통합을 위한 기술적 메커니즘까지 반드시 알아야 할 것들을 빠짐없이 다루고 있다.
다른 두꺼운 DDD 서적들이 바이블이라면, 이 책은 얇지만 꼭 필요한 핵심 개념과 함께 프로젝트 적용을 이해하기 쉬운 예제 흐름으로 설명한다. 따라서 DDD를 처음 접하는 사람부터 도메인 주도 설계 개념을 혼란스럽게 생각하는 사람들에게까지 도움이 되는 길잡이가 돼줄 것이다.
이 책의 대상 독자
DDD 핵심과 도구를 배우는 것에 관심을 갖고 이를 빠르게 학습하고자 하는 사람들을 위한 책이다. 대부분의 독자들은 프로젝트 실행 방안에 DDD를 포함시키려는 소프트웨어 아키텍트나 소프트웨어 개발자일 것이다. 소프트웨어 개발자들은 때때로 DDD의 아름다움을 빨리 발견하고 DDD의 강력함에 매료된다. 하지만 그들뿐만 아니라 임원, 도메인 전문가, 관리자, 비즈니스 분석가, 인포메이션 아키텍트 그리고 테스터 모두가 이해할 수 있는 주제를 다뤘으므로 정보기술(IT) 산업이나 연구 개발(R&D) 환경에 상관없이 누구나 이 책을 읽고 도움을 받을 수 있다
이 책에서 다루는 내용
■ DDD가 개인 및 조직을 위해 할 수 있는 일과 중요성
■ DDD 전략적 설계의 기초: 바운디드 컨텍스트와 보편 언어
■ 서브도메인을 활용한 전략적 설계
■ 팀이 함께 일하고 좀 더 전략적으로 소프트웨어를 통합하도록 돕는 컨텍스트 매핑
■ 애그리게잇과 도메인이벤트를 통한 전술적 설계
■ 팀의 리듬을 만들고 관리하기 위한 프로젝트 가속화와 관리 도구 사용
이 책의 구성
1장, ‘나에게 도메인 주도 설계는’에서는 도메인 주도 설계가 여러분들과 여러분들의 조직을 위해 할 수 있는 것에 대해 설명하고, 앞으로 배울 것과 그것이 왜 중요한지에 대해 좀 더 상세한 개요를 제공한다.
2장, ’바운디드 컨텍스트 및 보편언어와 전략적 설계’에서는 DDD 의 전략적 설계를 소개하면서 DDD 토대가 되는 바운디드 컨텍스트와 보편언어를 설명한다.
3장, ’서브도메인과 전략적 디자인’에서는 서브도메인을 설명하고, 새로운 애플리케이션을 모델링하는 동안 기존 레거시 시스템과의 통합에 따르는 복잡성을 다루는 데 서브도메인을 사용하는 방법을 제공한다.
4장, ’컨텍스트 매핑과 전략적 설계’에서는 팀이 전략적으로 함께 일하는 방법과 그들의 소프트웨어를 통합할 수 있는 다양한 방법을 설명한다. 이를 컨텍스트 매핑이라고 한다.
5장, ’애그리게잇과 전술적 설계’에서는 애그리게잇을 통한 전술적 모델링으로 관심을 돌린다. 애그리게잇과 함께 사용되는 중요하고 강력한 전술적 모델링 도구는 6장, ‘도메인 이벤트와 전술적 설계’의 주제인 도메인 이벤트다.
7장, ’가속화와 관리 도구’는 팀이 그들의 리듬을 만들고 유지하는 데 도움을 주는 프로젝트 가속화와 프로젝트 관리 도구를 조명한다. 이 두 가지 주제는 좀처럼 다른 DDD 자료에서는 보기 힘든 것들이고, DDD를 실천 방안에 포함하는 결정을 하려는 이들에게 꼭 필요한 내용이다.
상세이미지
목차
목차
- 1장. 나에게 도메인 주도 설계는
- DDD가 우리에게 상처를 줄까?
- 좋은 나쁜 그리고 효과적인 설계
- 전략적 설계
- 전술적 설계
- 학습 과정과 지식의 정제
- 이제 시작해보자!
- 2장. 바운디드 컨텍스트 및 보편언어와 전략적 설계
- 도메인 전문가와 비즈니스 동인
- 사례 연구
- 기본적인 전략적 설계를 하려면
- 도전과 통합
- 보편언어 개발하기
- 작업에 시나리오 넣기
- 많은 시간과 노력이 드는 일은?
- 아키텍처
- 요약
- 3장. 서브도메인과 전략적 디자인
- 서브도메인은 무엇인가?
- 서브도메인의 유형
- 복잡성 다루기
- 요약
- 4장. 컨텍스트 매핑과 전략적 설계
- 매핑의 종류
- 파트너십
- 공유 커널
- 고객-공급자
- 준수자
- 반부패 계층
- 공개 호스트 서비스
- 공표된 언어
- 각자의 길
- 큰 진흙 덩어리
- 컨텍스트 매핑 활용하기
- SOAP을 이용한 RPC
- 레스트풀 HTTP
- 메시징
- 컨텍스트 매핑 사례
- 요약
- 매핑의 종류
- 5장. 애그리게잇과 전술적 설계
- 왜 필요할까
- 애그리게잇 경험 법칙
- 규칙 1: 애그리게잇 경계 내의 비즈니스 불변사항을 보호하라
- 규칙 2: 작은 애그리게잇을 설계하라
- 규칙 3: 오직 식별자로만 다른 애그리게잇을 참고하라
- 규칙 4: 결과적 일관성을 사용해 다른 애그리게잇을 갱신하라
- 애그리게잇 모델링
- 추상화를 조심스럽게 선택하라
- 올바른 크기의 애그리게잇
- 테스트 가능한 단위
- 요약
- 6장. 도메인 이벤트와 전술적 설계
- 도메인 이벤트를 설계, 구현, 사용하기
- 이벤트 소싱
- 요약
- 7장. 가속화와 관리 도구
- 이벤트 스토밍
- 다른 도구들
- 애자일 프로젝트에서의 DDD 관리
- 이벤트 스토밍
- 중요한 일부터 먼저
- SWOT 분석 사용
- 모델링 스파이크와 모델링 부채
- 작업 확인 및 노력 추정
- 기간이 정해진 모델링
- 어떻게 구현해야 하는가?
- 도메인 전문가와 상호 작용하기
도서 오류 신고
정오표
정오표
[p.21 : 오탈자]
http://www.acornpub.co.kr/bookdomain-driven-design-distilled
->
http://www.acornpub.co.kr/book/domain-driven-design-distilled
[p.129 : 5행]
여기서 Product는 문자 그대로 BacklogItem 인스턴스들 그리고 Sprint의 가능한 가장 큰 모음을 담고 있다.
->
여기서 Product는 문자 그대로 BacklogItem 인스턴스들, Release 인스턴트들, 그리고 Sprint 인스턴스들의 가능한 가장 큰 모음을 담고 있다.
[p. 160 : 7행]
다른 노드들에 도달할 것을 보장하는 것은 아니다.
->
다른 노드들에 동일한 순서로 도달할 것을 보장하는 것은 아니다.
[p. 161 : 아래에서 7행]
명령은 공급과 자원(제품, 자금 등)의 가용성에 대한
->
명령은 자원(제품, 자금 등)의 공급과 가용성에 대한