SlideShare a Scribd company logo
1 of 25
DDD
정복기 2탄
@ jjo_ssoo
BEFORE
THIS CHAPTER
알고 가면 더 좋은
STEPs
Analyze
Domain
Domain
Ubiquitous
Language
Bounded
Context
Bounded
Context
Context Map Shared Kernel Etc)
Define Entities,
Aggregates,
Services
Entities Value Object Aggregates Services Etc)
UI Application Domain Layer Infrastructure
Layerd
Architecture
History by Eric Evans
1. 고객 송장 발급 모듈을 담당하던 팀에서 “Charge(요금)” 객체를 구현하려함.
2. 다른팀에서 이미 그 객체를 구현했다는 사실을 알고, 재사용함.
3. 객체에 “지출 코드”가 없다는 것을 확인 후, “지출 코드"속성을 추가함.
4. 객체에 “기입 금액” 속성을 “납입 금액”으로 부를 계획으로 속성의 이름을 변경함.
History by Eric Evans
5. 기존의 내용을 혼란스럽게 하지 않고, 객체를 원하는 형태로 만듬
6. 애플리케이션 모듈은 동작함.
7. 며칠 후, “Charge(요금)”객체를 사용하기로 했던 청구서 결제 어플리케이션 모듈에서
에러가 발생함.
8. 유효성 검증에 필요한 기본값을 입력함에도
“공제율“ 필드에 값이 들어있지 않은 “Charge”가 나타남.
가장 기본적인 MODEL 요구사항
내적으로 일관성을 유지하고 모델의 용어는 언제나 의미가 동일해야 함
모델에는 어떤 모순되는 규칙도 없어야 함
각 용어가 모호하지 않고 모순되는 규칙이 없는 모델의 내적 일관성 : 단일화(Unification)
단일화가 없는 모델은 아무런 의미가 없다.
Unification
모델의 주요부분을 밀접하게 단일화하는 수단이 필요
이는 의식적인 설계 결정, 구체적인 프로세스를 거쳐서만 달성 가능
“대규모 시스템의 도메인 모델을 완전하게 단일화 한다는 것은
타당하지 않거나 비용대비 효과적이지 않을 것”
by Eric Evans
BOUNDED CONTEXT
What is the “Bounded Context”?
Context
모델은 컨텍스트에 적용된다.
코드의 특정 부분일수도, 개별팀이 수행하는 업무일 수도 있다.
모델 컨텍스트 : 모델에서 사용된 용어를 특정한 의미로 의사소통하기 위한 조건의 집합
컨텍스트를 명확하게 만들려면 프로젝트와
산출물(코드, 데이터베이스 스키마 등)을 모두 살펴봐야한다.
Context
컨텍스트의 경계를 팀조직,
애플리케이션의 특정부분에서의 사용법,
코드 기반이나 데이터베이스 스키마와 같은
물리적인 형태의 관점에서 명시적으로 설정
Eric Evans 의 분석
문제는 서로 다른 모델을 보유했지만, 그것을 알아차리지 못함
이를 탐지하는 프로세스 조차 마련돼 있지 않았음
자신들만의 맥락에서만 유효한 “Charge(요금)” 속성을 대상으로 가정을 세웠던 것.
이러한 모순점을 해결하지 않고 코드를 결합하면 신뢰할 수 없는 SW가 만들어짐
Bounded
Context
유요한 모델을 식별하고, 각 Bounded
Context를 정의
각 Bounded Context에 이름을
부여하고 이 이름을 Ubiquitous
language에 기록
서로 다른 컨텍스트에 대해서는 용어,
개념과 규칙, 유비쿼터스 랭귀지에
포함된 독특한 표현방식에 차이를
보이는 서로 다른 모델을 적용한다.
Bounded Context
팀 구성원이 어떤 부분에서 일관성을 지녀야하고
다른 context와는 어떤식으로 연관되어 있는지를
서로 명확하게 이해할 수 있게 특정 모델의 적용 범위를 제한한다.
이 경계 안에서는 모델을 엄격하게 일관된 상태로 유지하고
경계 바깥의 이슈 때문에 초점이 흐려지거나 혼란스러워 져서는 안된다.
Bounded
Context 장점
컨텍스트 안에서 업무를 진행하면
얻게되는 장점 : 명확함
컨텍스트 밖에서 업무를 진행하면
얻게되는 장점 : 자유로움
“실질적 이득은 비공식적인 정보공유가
위험하다는 사실을 인지하는 것“
By Eric Evans
균열 징후
균열 : 비일관성을 내포하는 모델
Bounded Context 안의 균열 징후
1. 같은 개념을 나타내는
두개의 모델요소와 구현이 존재하는 경우 (중복개념)
2. 같은 모델을 얘기하고 있다고 생각하지만
실제로 그렇지 않은 경우 (허위 동족언어)
Continuous
Integration
내부적으로 개념적 균열이 발생할 때,
빨리 포착하고 정정 할 수 있을 정도로
컨텍스트 내의 모든 작업을 빈번하게
병합해서 일관성을 유지하는 것
모델 개념의 통합은 구현을 통합하는
방법을 좀 더 용이하게 하고,
구현통합은 모델의 유효성과 일관성을
입증하고 발생한 균열을 드러낸다.
Continuous Integration 프로세스
구현 통합
1. Ubiquitous Language를 지속적으로 다듬는 것
2. 단계적이고 재생 가능한 병합/ 빌드 기법
3. 자동화된 테스트
모델 개념 통합
모델과 앱에 관해 논의할 때 Ubiquitous Language를 지속적으로 사용
Continuous
Integration
기존 코드를 망가뜨릴 지도 모른다는 두려움에
코드를 중복시키는 등의 소심한 행위를
방지해줄 안전망
하나의 Bounded Context 내에서만 필수적
규모가 큰 Bounded Context에 적용될 것
Context Map
서로 다른 컨텍스트를 연결해야 하는 경우,
컨텍스트는 서로에게 스며드는 경향이 있다.
번역에 대한 윤곽을 명확하게 표현하고
컨텍스트 간에 공유해야 하는 정보를 강조해 서술
Map 은 특정한 형식으로 문서화할 필요가 없지만,
모든 인원이 경계가 어디에 위치하는지 알아야함
Context Map
프로젝트 관리와 소프트웨어 설계 영역사이에
걸쳐있는 개념
기능과 데이터는 번역과정을 거쳐 통합해야 한다.
모델과 모델이 만나는 경계지점을 서술
항상 현재 상태 그대로의 상황을 표현한다.
각 컨텍스트의 현재 영역을 나타내는 지도를
작성한다.
번역은 컨텍스트 밖에 존재하는게 좋다.
Context Map
서로 다른 컨텍스트 간의 관계를 정의하고
프로젝트 상의 모든 모델 컨텍스트를 아우르는
전체적인 시야를 만들면 혼란을 줄일 수 있다.
Map은 발견한 관계를 서술하기만 한다.
균열을 발견했다면?
지도에 모른다고 적고, 거기서 서술을 중단하라.
혼란스러운 지점을 설명하고, 명확한 context map을 보유하기 전까지는
명백하게 드러난 모순만 변경한다.
Context 경계에서의 테스트
컨텍스트의 경계에 존재하는
번역의 미묘한 차이와 낮은 수준의 의사사소통을
보완하는데 기여한다.
테스트는 경보알람 역할을 할 수 있고,
통제할 수 없는 모델의 세부사항에 의존할 때,
안심할 수 있게 만들어 준다.
TO BE CONTINUED
3탄 : Bounded Context 간의 관계
THANK YOU
DDD 정복기 2탄 끝
@ jjo_ssoo

More Related Content

What's hot

[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로NHN FORWARD
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessNanik Tolaram
 
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델명환 안
 
도메인 주도 설계의 본질
도메인 주도 설계의 본질도메인 주도 설계의 본질
도메인 주도 설계의 본질Young-Ho Cho
 
The Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.jsThe Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.jsHolly Schinsky
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux DevelopersOpersys inc.
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기beom kyun choi
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentationguest11106b
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation洪 鹏发
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계Jinho Yoo
 
Android Navigation Component
Android Navigation ComponentAndroid Navigation Component
Android Navigation ComponentŁukasz Ciupa
 
Dotnet Basics Presentation
Dotnet Basics PresentationDotnet Basics Presentation
Dotnet Basics PresentationSudhakar Sharma
 

What's hot (20)

[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
 
Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
React js
React jsReact js
React js
 
Rich domain model
Rich domain modelRich domain model
Rich domain model
 
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
 
도메인 주도 설계의 본질
도메인 주도 설계의 본질도메인 주도 설계의 본질
도메인 주도 설계의 본질
 
The Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.jsThe Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.js
 
React js
React jsReact js
React js
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
Nodejs presentation
Nodejs presentationNodejs presentation
Nodejs presentation
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentation
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
 
react redux.pdf
react redux.pdfreact redux.pdf
react redux.pdf
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계
 
Android Navigation Component
Android Navigation ComponentAndroid Navigation Component
Android Navigation Component
 
Dotnet Basics Presentation
Dotnet Basics PresentationDotnet Basics Presentation
Dotnet Basics Presentation
 
Apache Ant
Apache AntApache Ant
Apache Ant
 

Similar to Domain-Driven-Design 정복기 2탄

메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 uEngine Solutions
 
C Language II
C Language IIC Language II
C Language IISuho Kwon
 
클린 아키텍처 살짝 적용기
클린 아키텍처 살짝 적용기클린 아키텍처 살짝 적용기
클린 아키텍처 살짝 적용기Younghyun Kim
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론JeongDong Kim
 
Lost practice : Requirement Analysis
Lost practice : Requirement AnalysisLost practice : Requirement Analysis
Lost practice : Requirement Analysisc K
 
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
웹표준 프레임워크   메타웍스3의 적용 사례와 생산성웹표준 프레임워크   메타웍스3의 적용 사례와 생산성
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성영재 김
 
전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)gimslide
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java유리 하
 
오픈소스 소프트웨어 성능 최적화 보고서 6장
오픈소스 소프트웨어 성능 최적화 보고서 6장오픈소스 소프트웨어 성능 최적화 보고서 6장
오픈소스 소프트웨어 성능 최적화 보고서 6장JamGun
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계AnselmKim
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksSunuk Park
 
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)Amazon Web Services Korea
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservicesSeong-Bok Lee
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Daum DNA
 
Sumologic Kubernetes technical demo deck
Sumologic Kubernetes technical demo deck Sumologic Kubernetes technical demo deck
Sumologic Kubernetes technical demo deck Guenjun Yoo
 

Similar to Domain-Driven-Design 정복기 2탄 (20)

메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
 
C Language II
C Language IIC Language II
C Language II
 
클린 아키텍처 살짝 적용기
클린 아키텍처 살짝 적용기클린 아키텍처 살짝 적용기
클린 아키텍처 살짝 적용기
 
Bounded Context
Bounded ContextBounded Context
Bounded Context
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Uml 세미나
Uml 세미나Uml 세미나
Uml 세미나
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
DDD 산책
DDD 산책DDD 산책
DDD 산책
 
Lost practice : Requirement Analysis
Lost practice : Requirement AnalysisLost practice : Requirement Analysis
Lost practice : Requirement Analysis
 
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
웹표준 프레임워크   메타웍스3의 적용 사례와 생산성웹표준 프레임워크   메타웍스3의 적용 사례와 생산성
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
 
전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
오픈소스 소프트웨어 성능 최적화 보고서 6장
오픈소스 소프트웨어 성능 최적화 보고서 6장오픈소스 소프트웨어 성능 최적화 보고서 6장
오픈소스 소프트웨어 성능 최적화 보고서 6장
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworks
 
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservices
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기
 
Sumologic Kubernetes technical demo deck
Sumologic Kubernetes technical demo deck Sumologic Kubernetes technical demo deck
Sumologic Kubernetes technical demo deck
 

Domain-Driven-Design 정복기 2탄

  • 3. STEPs Analyze Domain Domain Ubiquitous Language Bounded Context Bounded Context Context Map Shared Kernel Etc) Define Entities, Aggregates, Services Entities Value Object Aggregates Services Etc) UI Application Domain Layer Infrastructure Layerd Architecture
  • 4. History by Eric Evans 1. 고객 송장 발급 모듈을 담당하던 팀에서 “Charge(요금)” 객체를 구현하려함. 2. 다른팀에서 이미 그 객체를 구현했다는 사실을 알고, 재사용함. 3. 객체에 “지출 코드”가 없다는 것을 확인 후, “지출 코드"속성을 추가함. 4. 객체에 “기입 금액” 속성을 “납입 금액”으로 부를 계획으로 속성의 이름을 변경함.
  • 5. History by Eric Evans 5. 기존의 내용을 혼란스럽게 하지 않고, 객체를 원하는 형태로 만듬 6. 애플리케이션 모듈은 동작함. 7. 며칠 후, “Charge(요금)”객체를 사용하기로 했던 청구서 결제 어플리케이션 모듈에서 에러가 발생함. 8. 유효성 검증에 필요한 기본값을 입력함에도 “공제율“ 필드에 값이 들어있지 않은 “Charge”가 나타남.
  • 6. 가장 기본적인 MODEL 요구사항 내적으로 일관성을 유지하고 모델의 용어는 언제나 의미가 동일해야 함 모델에는 어떤 모순되는 규칙도 없어야 함 각 용어가 모호하지 않고 모순되는 규칙이 없는 모델의 내적 일관성 : 단일화(Unification) 단일화가 없는 모델은 아무런 의미가 없다.
  • 7. Unification 모델의 주요부분을 밀접하게 단일화하는 수단이 필요 이는 의식적인 설계 결정, 구체적인 프로세스를 거쳐서만 달성 가능 “대규모 시스템의 도메인 모델을 완전하게 단일화 한다는 것은 타당하지 않거나 비용대비 효과적이지 않을 것” by Eric Evans
  • 8. BOUNDED CONTEXT What is the “Bounded Context”?
  • 9. Context 모델은 컨텍스트에 적용된다. 코드의 특정 부분일수도, 개별팀이 수행하는 업무일 수도 있다. 모델 컨텍스트 : 모델에서 사용된 용어를 특정한 의미로 의사소통하기 위한 조건의 집합 컨텍스트를 명확하게 만들려면 프로젝트와 산출물(코드, 데이터베이스 스키마 등)을 모두 살펴봐야한다.
  • 10. Context 컨텍스트의 경계를 팀조직, 애플리케이션의 특정부분에서의 사용법, 코드 기반이나 데이터베이스 스키마와 같은 물리적인 형태의 관점에서 명시적으로 설정
  • 11. Eric Evans 의 분석 문제는 서로 다른 모델을 보유했지만, 그것을 알아차리지 못함 이를 탐지하는 프로세스 조차 마련돼 있지 않았음 자신들만의 맥락에서만 유효한 “Charge(요금)” 속성을 대상으로 가정을 세웠던 것. 이러한 모순점을 해결하지 않고 코드를 결합하면 신뢰할 수 없는 SW가 만들어짐
  • 12. Bounded Context 유요한 모델을 식별하고, 각 Bounded Context를 정의 각 Bounded Context에 이름을 부여하고 이 이름을 Ubiquitous language에 기록 서로 다른 컨텍스트에 대해서는 용어, 개념과 규칙, 유비쿼터스 랭귀지에 포함된 독특한 표현방식에 차이를 보이는 서로 다른 모델을 적용한다.
  • 13. Bounded Context 팀 구성원이 어떤 부분에서 일관성을 지녀야하고 다른 context와는 어떤식으로 연관되어 있는지를 서로 명확하게 이해할 수 있게 특정 모델의 적용 범위를 제한한다. 이 경계 안에서는 모델을 엄격하게 일관된 상태로 유지하고 경계 바깥의 이슈 때문에 초점이 흐려지거나 혼란스러워 져서는 안된다.
  • 14. Bounded Context 장점 컨텍스트 안에서 업무를 진행하면 얻게되는 장점 : 명확함 컨텍스트 밖에서 업무를 진행하면 얻게되는 장점 : 자유로움 “실질적 이득은 비공식적인 정보공유가 위험하다는 사실을 인지하는 것“ By Eric Evans
  • 15. 균열 징후 균열 : 비일관성을 내포하는 모델
  • 16. Bounded Context 안의 균열 징후 1. 같은 개념을 나타내는 두개의 모델요소와 구현이 존재하는 경우 (중복개념) 2. 같은 모델을 얘기하고 있다고 생각하지만 실제로 그렇지 않은 경우 (허위 동족언어)
  • 17. Continuous Integration 내부적으로 개념적 균열이 발생할 때, 빨리 포착하고 정정 할 수 있을 정도로 컨텍스트 내의 모든 작업을 빈번하게 병합해서 일관성을 유지하는 것 모델 개념의 통합은 구현을 통합하는 방법을 좀 더 용이하게 하고, 구현통합은 모델의 유효성과 일관성을 입증하고 발생한 균열을 드러낸다.
  • 18. Continuous Integration 프로세스 구현 통합 1. Ubiquitous Language를 지속적으로 다듬는 것 2. 단계적이고 재생 가능한 병합/ 빌드 기법 3. 자동화된 테스트 모델 개념 통합 모델과 앱에 관해 논의할 때 Ubiquitous Language를 지속적으로 사용
  • 19. Continuous Integration 기존 코드를 망가뜨릴 지도 모른다는 두려움에 코드를 중복시키는 등의 소심한 행위를 방지해줄 안전망 하나의 Bounded Context 내에서만 필수적 규모가 큰 Bounded Context에 적용될 것
  • 20. Context Map 서로 다른 컨텍스트를 연결해야 하는 경우, 컨텍스트는 서로에게 스며드는 경향이 있다. 번역에 대한 윤곽을 명확하게 표현하고 컨텍스트 간에 공유해야 하는 정보를 강조해 서술 Map 은 특정한 형식으로 문서화할 필요가 없지만, 모든 인원이 경계가 어디에 위치하는지 알아야함
  • 21. Context Map 프로젝트 관리와 소프트웨어 설계 영역사이에 걸쳐있는 개념 기능과 데이터는 번역과정을 거쳐 통합해야 한다. 모델과 모델이 만나는 경계지점을 서술 항상 현재 상태 그대로의 상황을 표현한다. 각 컨텍스트의 현재 영역을 나타내는 지도를 작성한다. 번역은 컨텍스트 밖에 존재하는게 좋다.
  • 22. Context Map 서로 다른 컨텍스트 간의 관계를 정의하고 프로젝트 상의 모든 모델 컨텍스트를 아우르는 전체적인 시야를 만들면 혼란을 줄일 수 있다. Map은 발견한 관계를 서술하기만 한다. 균열을 발견했다면? 지도에 모른다고 적고, 거기서 서술을 중단하라. 혼란스러운 지점을 설명하고, 명확한 context map을 보유하기 전까지는 명백하게 드러난 모순만 변경한다.
  • 23. Context 경계에서의 테스트 컨텍스트의 경계에 존재하는 번역의 미묘한 차이와 낮은 수준의 의사사소통을 보완하는데 기여한다. 테스트는 경보알람 역할을 할 수 있고, 통제할 수 없는 모델의 세부사항에 의존할 때, 안심할 수 있게 만들어 준다.
  • 24. TO BE CONTINUED 3탄 : Bounded Context 간의 관계
  • 25. THANK YOU DDD 정복기 2탄 끝 @ jjo_ssoo