SlideShare a Scribd company logo
Domain-Driven Design 

대충 훑어보기 #1
DDD Reference
Ko sang won
왜 대충 훑어보는거지!?
얘기할게 너무 너무 많다.
Eric Evans가 PLoP 을 통해서
패턴 정리해서 발표
The Big Blue Book
읽다가 낙오하기 좋은 책
Books
이 책으로 대충 훑어봅시다.
참고, 이 책의 lastest draft version은 여기에..
http://domainlanguage.com/ddd/reference/
I. Putting the Model to Work
II. Building Blocks of a Model-Driven Design
III. Supple Design
IV. Context Mapping for Strategic Design
V. Distillation for Strategic Design
VI. Large-scale Structure for Strategic Design
목차만 보자면, 음…
기본 정의부터 확실히 하고 갑시다.
domain 도메인
A sphere of knowledge, influence, or activity. The subject area to which the user applies

a program is the domain of the software.
model 모델
A system of abstractions that describes selected aspects of a domain and can be used

to solve problems related to that domain.
ubiquitous language 유비쿼터스 언어
A language structured around the domain model and used by all team members within

a bounded context to connect all the activities of the team with the software.
context 컨텍스트
The setting in which a word or statement appears that determines its meaning. Statements

about a model can only be understood in a context.
bounded context 바운디드 컨텍스트
A description of a boundary (typically a subsystem or the work of particular team) within

which a particular model is defined and applicable.
Pattern Language
Overview
Part I. Putting the Model to Work
Bounded Context
Ubiquitous Language
Continuous Integration
Model-Driven Design
Hands-on Modelers
Refactoring Toward Deeper Insight
Part I. Putting the Model to Work
DDD의 3가지 포인트
• Core domain 에 집중
• 도메인, 소프트웨어 전문가의 창조적인 협업으로 Models 을 탐색
• 명확한 Bounded Context 안에서 Ubiquitous Language로 대화
Bounded Context
1. 모델이 적용되는 컨텍스트를 명확히 정의
2. 조직부터 코드 수준까지 바운더리를 명확히 정해야 함
3. CI를 통해 모델 등이 잘 유지되는지 확인
4. 다른데서 사용되지 않는 컨텍스트에 대한 Single development process 표준화
http://martinfowler.com/bliki/BoundedContext.html
Ubiquitous Language
http://userinexperience.com/?p=308
1. 언어의 중심으로 모델을 사용할 것
2. 모든 커뮤니케이션, 코드를 유비쿼터스 언어 중심으로 바로 사용
3. 바운디드 컨텍스트에서도 유비쿼터스 언어로 다이어그램, 문서 작성, 대화를 통일
4. 대체 언어를 제시하고 모델에 반영해서 장애물을 제거
언어가 바뀌면,
모델이 바뀐다.
Continuous Integration
http://electric-cloud.com/blog/2014/09/continuous-discussion-online-panel/
1. CI 도입! 파편화를 자동화 테스트로 빨리 발견
2. 유비쿼터스 언어로 모델에 대한 공통된 뷰를 해결하고 참여자들의 생각을 일치화
Model-Driven Design
http://mdegroup.disim.univaq.it/
1. 도메인 모델을 그대로 반영해서 소프트웨어 시스템의 부분을 설계
2. 도메인의 심도있는 부분까지 반영되어 자연스럽게 구현되도록 모델을 수정
3. 단일 모델이 여러 목적에 잘 부합되도록! (유비쿼터스 언어로도 잘 표현되고!)
모델이 바뀌면,
코드가 바뀐다.
한번 더,
언어가 바뀌면,
모델이 바뀐다.
Hands-on Modelers
1. 모델에 기여한 모든 사람들은 코드에 대해서도 시간적으로 투자를 해야 함
2. 코드 변경에 책임이 있는 사람은 모델을 코드에 어떻게 표현하는지 배워야 함
3. 모든 개발자는 도메인 전문가, 모델에 대한 토론 등에 어느 정도 관여되어 있어야 함
Refactoring Toward Deeper Insight
1. 도메인 전문가의 생각, 사용자의 요구사항에 점점 맞아가는 과정
2. 반복된 리팩토링 과정이 없이, 정말 세련된 도메인 모델이 나오긴 쉽지 않음
To be continued…

More Related Content

Viewers also liked

CDP総選挙 2013
CDP総選挙 2013CDP総選挙 2013
CDP総選挙 2013
Kieko Sakurai
 
Unit of Mitigation
Unit of MitigationUnit of Mitigation
Unit of Mitigation
Sangwon Ko
 
CDP2.0 - cloudpack night #7 -
CDP2.0 - cloudpack night #7 -CDP2.0 - cloudpack night #7 -
CDP2.0 - cloudpack night #7 -SORACOM, INC
 
프레임워크와 어플리케이션 동시에 구축하기
프레임워크와 어플리케이션 동시에 구축하기프레임워크와 어플리케이션 동시에 구축하기
프레임워크와 어플리케이션 동시에 구축하기Sangwon Ko
 
IoC and DI Pattern
IoC and DI PatternIoC and DI Pattern
IoC and DI Pattern
Sangwon Ko
 
Heartbeat
HeartbeatHeartbeat
Heartbeat
Sangwon Ko
 
Ddd start 10장
Ddd start 10장Ddd start 10장
Ddd start 10장
Sunggon Song
 
Getting started with Public Cloud and AWS
Getting started with Public Cloud and AWSGetting started with Public Cloud and AWS
Getting started with Public Cloud and AWS
Cohesive Networks
 
DDD start 1장
DDD start 1장DDD start 1장
DDD start 1장
Sunggon Song
 
Cloud Design Pattern
Cloud Design PatternCloud Design Pattern
Ddd start! 6장. 응용 서비스와 표현 영역
Ddd start!   6장. 응용 서비스와 표현 영역Ddd start!   6장. 응용 서비스와 표현 영역
Ddd start! 6장. 응용 서비스와 표현 영역
Hyunsoo Jung
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
beom kyun choi
 
DDD 준비 서문래
DDD 준비 서문래DDD 준비 서문래
DDD 준비 서문래
beom kyun choi
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
beom kyun choi
 
7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신
Hyunsoo Jung
 
간단 Ip 필터 구현 이야기
간단 Ip 필터 구현 이야기간단 Ip 필터 구현 이야기
간단 Ip 필터 구현 이야기
beom kyun choi
 
SW개발자가 얘기하는 건축이야기
SW개발자가 얘기하는 건축이야기SW개발자가 얘기하는 건축이야기
SW개발자가 얘기하는 건축이야기
Sangwon Ko
 
DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)
beom kyun choi
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
beom kyun choi
 

Viewers also liked (20)

CDP総選挙 2013
CDP総選挙 2013CDP総選挙 2013
CDP総選挙 2013
 
Unit of Mitigation
Unit of MitigationUnit of Mitigation
Unit of Mitigation
 
CDP2.0 - cloudpack night #7 -
CDP2.0 - cloudpack night #7 -CDP2.0 - cloudpack night #7 -
CDP2.0 - cloudpack night #7 -
 
B Fn As
B Fn AsB Fn As
B Fn As
 
프레임워크와 어플리케이션 동시에 구축하기
프레임워크와 어플리케이션 동시에 구축하기프레임워크와 어플리케이션 동시에 구축하기
프레임워크와 어플리케이션 동시에 구축하기
 
IoC and DI Pattern
IoC and DI PatternIoC and DI Pattern
IoC and DI Pattern
 
Heartbeat
HeartbeatHeartbeat
Heartbeat
 
Ddd start 10장
Ddd start 10장Ddd start 10장
Ddd start 10장
 
Getting started with Public Cloud and AWS
Getting started with Public Cloud and AWSGetting started with Public Cloud and AWS
Getting started with Public Cloud and AWS
 
DDD start 1장
DDD start 1장DDD start 1장
DDD start 1장
 
Cloud Design Pattern
Cloud Design PatternCloud Design Pattern
Cloud Design Pattern
 
Ddd start! 6장. 응용 서비스와 표현 영역
Ddd start!   6장. 응용 서비스와 표현 영역Ddd start!   6장. 응용 서비스와 표현 영역
Ddd start! 6장. 응용 서비스와 표현 영역
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 
DDD 준비 서문래
DDD 준비 서문래DDD 준비 서문래
DDD 준비 서문래
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
 
7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신
 
간단 Ip 필터 구현 이야기
간단 Ip 필터 구현 이야기간단 Ip 필터 구현 이야기
간단 Ip 필터 구현 이야기
 
SW개발자가 얘기하는 건축이야기
SW개발자가 얘기하는 건축이야기SW개발자가 얘기하는 건축이야기
SW개발자가 얘기하는 건축이야기
 
DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 

Similar to Domain-Driven Design 훑어보기 Part 1

Domain driven design_chapter2
Domain driven design_chapter2Domain driven design_chapter2
Domain driven design_chapter2Youngkwon Lee
 
3주차 language
3주차 language3주차 language
3주차 language
준혁 이
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
Chris Ohk
 
2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용
kidoki
 
클라우드 세상에서 IT 관리자로 살아남기 - AWS Summit Seoul 2017
클라우드 세상에서 IT 관리자로 살아남기 - AWS Summit Seoul 2017클라우드 세상에서 IT 관리자로 살아남기 - AWS Summit Seoul 2017
클라우드 세상에서 IT 관리자로 살아남기 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
Amazon Web Services Korea
 
함수형 사고
함수형 사고함수형 사고
함수형 사고
Hyun Dong Lee
 
31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"
hyu_jaram
 
[20140624]소개자료
[20140624]소개자료[20140624]소개자료
[20140624]소개자료
유석 남
 
Microservice coding guide
Microservice coding guideMicroservice coding guide
Microservice coding guide
uEngine Solutions
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworks
Sunuk Park
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
jaeyunjeong1
 
개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호
용호 최
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
Sewon Ann
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
Sunghyouk Bae
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
Ji-Woong Choi
 
오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용
오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용 오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용
오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용
SANGHEE SHIN
 
도메인주도설계
도메인주도설계도메인주도설계
도메인주도설계
Wonjun Hwang
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
Soojin Ro
 
BD Talk 2017 봄 - 원정코딩
BD Talk 2017 봄 - 원정코딩BD Talk 2017 봄 - 원정코딩
BD Talk 2017 봄 - 원정코딩
Sumin Byeon
 

Similar to Domain-Driven Design 훑어보기 Part 1 (20)

Domain driven design_chapter2
Domain driven design_chapter2Domain driven design_chapter2
Domain driven design_chapter2
 
3주차 language
3주차 language3주차 language
3주차 language
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용
 
클라우드 세상에서 IT 관리자로 살아남기 - AWS Summit Seoul 2017
클라우드 세상에서 IT 관리자로 살아남기 - AWS Summit Seoul 2017클라우드 세상에서 IT 관리자로 살아남기 - AWS Summit Seoul 2017
클라우드 세상에서 IT 관리자로 살아남기 - AWS Summit Seoul 2017
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
 
함수형 사고
함수형 사고함수형 사고
함수형 사고
 
31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"
 
[20140624]소개자료
[20140624]소개자료[20140624]소개자료
[20140624]소개자료
 
Microservice coding guide
Microservice coding guideMicroservice coding guide
Microservice coding guide
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworks
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
 
오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용
오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용 오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용
오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용
 
도메인주도설계
도메인주도설계도메인주도설계
도메인주도설계
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
 
BD Talk 2017 봄 - 원정코딩
BD Talk 2017 봄 - 원정코딩BD Talk 2017 봄 - 원정코딩
BD Talk 2017 봄 - 원정코딩
 

Domain-Driven Design 훑어보기 Part 1

  • 1. Domain-Driven Design 
 대충 훑어보기 #1 DDD Reference Ko sang won
  • 3. Eric Evans가 PLoP 을 통해서 패턴 정리해서 발표 The Big Blue Book 읽다가 낙오하기 좋은 책
  • 5. 이 책으로 대충 훑어봅시다. 참고, 이 책의 lastest draft version은 여기에.. http://domainlanguage.com/ddd/reference/
  • 6. I. Putting the Model to Work II. Building Blocks of a Model-Driven Design III. Supple Design IV. Context Mapping for Strategic Design V. Distillation for Strategic Design VI. Large-scale Structure for Strategic Design 목차만 보자면, 음…
  • 7. 기본 정의부터 확실히 하고 갑시다. domain 도메인 A sphere of knowledge, influence, or activity. The subject area to which the user applies
 a program is the domain of the software. model 모델 A system of abstractions that describes selected aspects of a domain and can be used
 to solve problems related to that domain. ubiquitous language 유비쿼터스 언어 A language structured around the domain model and used by all team members within
 a bounded context to connect all the activities of the team with the software. context 컨텍스트 The setting in which a word or statement appears that determines its meaning. Statements
 about a model can only be understood in a context. bounded context 바운디드 컨텍스트 A description of a boundary (typically a subsystem or the work of particular team) within
 which a particular model is defined and applicable.
  • 9. Part I. Putting the Model to Work Bounded Context Ubiquitous Language Continuous Integration Model-Driven Design Hands-on Modelers Refactoring Toward Deeper Insight
  • 10. Part I. Putting the Model to Work DDD의 3가지 포인트 • Core domain 에 집중 • 도메인, 소프트웨어 전문가의 창조적인 협업으로 Models 을 탐색 • 명확한 Bounded Context 안에서 Ubiquitous Language로 대화
  • 11. Bounded Context 1. 모델이 적용되는 컨텍스트를 명확히 정의 2. 조직부터 코드 수준까지 바운더리를 명확히 정해야 함 3. CI를 통해 모델 등이 잘 유지되는지 확인 4. 다른데서 사용되지 않는 컨텍스트에 대한 Single development process 표준화 http://martinfowler.com/bliki/BoundedContext.html
  • 12. Ubiquitous Language http://userinexperience.com/?p=308 1. 언어의 중심으로 모델을 사용할 것 2. 모든 커뮤니케이션, 코드를 유비쿼터스 언어 중심으로 바로 사용 3. 바운디드 컨텍스트에서도 유비쿼터스 언어로 다이어그램, 문서 작성, 대화를 통일 4. 대체 언어를 제시하고 모델에 반영해서 장애물을 제거
  • 14. Continuous Integration http://electric-cloud.com/blog/2014/09/continuous-discussion-online-panel/ 1. CI 도입! 파편화를 자동화 테스트로 빨리 발견 2. 유비쿼터스 언어로 모델에 대한 공통된 뷰를 해결하고 참여자들의 생각을 일치화
  • 15. Model-Driven Design http://mdegroup.disim.univaq.it/ 1. 도메인 모델을 그대로 반영해서 소프트웨어 시스템의 부분을 설계 2. 도메인의 심도있는 부분까지 반영되어 자연스럽게 구현되도록 모델을 수정 3. 단일 모델이 여러 목적에 잘 부합되도록! (유비쿼터스 언어로도 잘 표현되고!)
  • 16. 모델이 바뀌면, 코드가 바뀐다. 한번 더, 언어가 바뀌면, 모델이 바뀐다.
  • 17. Hands-on Modelers 1. 모델에 기여한 모든 사람들은 코드에 대해서도 시간적으로 투자를 해야 함 2. 코드 변경에 책임이 있는 사람은 모델을 코드에 어떻게 표현하는지 배워야 함 3. 모든 개발자는 도메인 전문가, 모델에 대한 토론 등에 어느 정도 관여되어 있어야 함
  • 18. Refactoring Toward Deeper Insight 1. 도메인 전문가의 생각, 사용자의 요구사항에 점점 맞아가는 과정 2. 반복된 리팩토링 과정이 없이, 정말 세련된 도메인 모델이 나오긴 쉽지 않음