[Domain driven design] 17장 전략의 종합

34
도메인 주도 설계 Domain-Driven Design 17장 전략의 종합 ohyecloudy http://ohyecloudy.com 아꿈사 http://cafe.naver.com/architect1 2011.10.01

Transcript of [Domain driven design] 17장 전략의 종합

Page 1: [Domain driven design] 17장 전략의 종합

도메인 주도 설계 Domain-Driven Design

17장 전략의 종합

ohyecloudy http://ohyecloudy.com

아꿈사 http://cafe.naver.com/architect1

2011.10.01

Page 2: [Domain driven design] 17장 전략의 종합

전략적 설계의 세 가지 기본 원칙이 어떻게

상호작용을 하는지 아주 간단하게 살펴본다.

그리고 지침들이 가득

좀 지루해요

Page 3: [Domain driven design] 17장 전략의 종합

대규모 구조와 BOUNDED CONTEXT 결합

대규모 구조와 디스틸레이션 결합

평가 먼저

누가 전략을 세우는가? – p524, 525

전략적 설계 결정을 위한 6가지 필수 요소

기술 프레임워크도 마찬가지다

종합계획을 조심하라

Page 4: [Domain driven design] 17장 전략의 종합

BOUNDED CONTEXT

CONTEXT MAP

EVOLVING ORDER

UBIQUITOUS LANGUAGE

CORE DOMAIN

컨텍스트

대규모 구조 디스틸레이션

조직화 기준으로 활용

Page 5: [Domain driven design] 17장 전략의 종합

BOUNDED CONTEXT

CONTEXT MAP

EVOLVING ORDER

UBIQUITOUS LANGUAGE

CORE DOMAIN

컨텍스트

대규모 구조 디스틸레이션

조직화 기준으로 활용

컨텍스트, 디스틸레이션, 대규모 구조는 서로 대체 가능하지 않다.

서로 보안하며 상호작용

Page 6: [Domain driven design] 17장 전략의 종합

BOUNDED CONTEXT

CONTEXT MAP

EVOLVING ORDER

UBIQUITOUS LANGUAGE

CORE DOMAIN

컨텍스트

대규모 구조 디스틸레이션

조직화 기준으로 활용 대규모 구조는 하나의 BOUNDED CONTEXT에서만 존재

or 여러 BOUNDED CONTEXT에 영향을 주면서 CONTEXT MAP을 구성

Page 7: [Domain driven design] 17장 전략의 종합

대규모 구조와 BOUNDED CONTEXT 결합

대규모 구조와 디스틸레이션 결합

평가 먼저

누가 전략을 세우는가? – p524, 525

전략적 설계 결정을 위한 6가지 필수 요소

기술 프레임워크도 마찬가지다

종합계획을 조심하라

Page 8: [Domain driven design] 17장 전략의 종합

BOUNDED CONTEXT

CONTEXT MAP

EVOLVING ORDER

UBIQUITOUS LANGUAGE

CORE DOMAIN

컨텍스트

대규모 구조 디스틸레이션 조직화 기준으로 활용

개념을 추가

Page 9: [Domain driven design] 17장 전략의 종합

BOUNDED CONTEXT

CONTEXT MAP

EVOLVING ORDER

UBIQUITOUS LANGUAGE

CORE DOMAIN

컨텍스트

대규모 구조 디스틸레이션 조직화 기준으로 활용

개념을 추가

대규모 구조는 CORE DOMAIN 안의 각종 관계와 여러 GENERIC SUBDOMAIN 사이의 관계를 설명하는데 도움

Page 10: [Domain driven design] 17장 전략의 종합

대규모 구조와 BOUNDED CONTEXT 결합

대규모 구조와 디스틸레이션 결합

평가 먼저

누가 전략을 세우는가? – p524, 525

전략적 설계 결정을 위한 6가지 필수 요소

기술 프레임워크도 마찬가지다

종합계획을 조심하라

Page 11: [Domain driven design] 17장 전략의 종합

CONTEXT MAP을 그려라.

일관된 CONTEXT MAP을 그릴 수 있는가?

그렇지 않다면 모호한 상황이 있는가?

Page 12: [Domain driven design] 17장 전략의 종합

프로젝트상의 언어를 쓰는 데 힘써라.

UBIQUITOUS LANGUAGE가 있는가?

UBIQUITOUS LANGUAGE가

개발에 도움을 줄 만큼 풍부한가?

Page 13: [Domain driven design] 17장 전략의 종합

무엇이 중요한지 이해하라.

CORE DOMAIN을 식별했는가?

DOMAIN VISION STATEMENT가 있는가?

DOMAIN VISION STATEMENT를

작성할 수 있는가?

Page 14: [Domain driven design] 17장 전략의 종합

프로젝트에 사용하는 기술이

MODEL-DRIVEN DESIGN에

유리한가, 불리한가?

Page 15: [Domain driven design] 17장 전략의 종합

팀 내 개발자가 필요한

기술 역량을 갖췄는가?

Page 16: [Domain driven design] 17장 전략의 종합

개발자들이 도메인을 잘 알고 있는가?

개발자들이 도메인에 관심은 있는가?

Page 17: [Domain driven design] 17장 전략의 종합

완벽한 답 못 찾겠지?

하지만 이런 질문은 견실한 출발점을 마련해 줌

Page 18: [Domain driven design] 17장 전략의 종합

구체적인 답을 마련할 때

가장 먼저 뭘 해야 할지에 대한 통찰력이 생길 때

Page 19: [Domain driven design] 17장 전략의 종합

대규모 구조와 BOUNDED CONTEXT 결합

대규모 구조와 디스틸레이션 결합

평가 먼저

누가 전략을 세우는가? – p524, 525

전략적 설계 결정을 위한 6가지 필수 요소

기술 프레임워크도 마찬가지다

종합계획을 조심하라

Page 20: [Domain driven design] 17장 전략의 종합

1 의사결정은 팀 전체에 퍼져야 한다.

의사소통이 중요

Page 21: [Domain driven design] 17장 전략의 종합

2 의사결정 프로세스는 피드백을 흡수해야 한다

디스틸레이션을 만드려면 깊이 있는 지식이 필요 애플리케이션 개발팀이 가지고 있지 아키텍처 팀 구성원과 피드백 고리가 필요

Page 22: [Domain driven design] 17장 전략의 종합

3 계획은 발전을 감안해야 한다

혁신은 장애물을 만나거나 예상치 못한 기회를 발견했을 때 나타난다.

Page 23: [Domain driven design] 17장 전략의 종합

4 아키텍처 팀에서 가장 뛰어나고

똑똑한 사람들을 모두 데려가서는 안된다

훌륭한 애플리케이션에는 설계 솜씨가 필요. 훌륭한 전략적 설계를 만들었다고 해도 애플리케이션 팀에서 못 따라가면 캐망

Page 24: [Domain driven design] 17장 전략의 종합

5 전략적 설계에는 최소주의와 겸손이 필요

필요 이상의 아키텍처를 주의

Page 25: [Domain driven design] 17장 전략의 종합

6 객체는 전문가,

개발자는 다방면에 지식이 풍부한 사람

지나친 전문화는 도메인 주도 설계의 활력을 앗아간다.

Page 26: [Domain driven design] 17장 전략의 종합

대규모 구조와 BOUNDED CONTEXT 결합

대규모 구조와 디스틸레이션 결합

평가 먼저

누가 전략을 세우는가? – p524, 525

전략적 설계 결정을 위한 6가지 필수 요소

기술 프레임워크도 마찬가지다

종합계획을 조심하라

Page 27: [Domain driven design] 17장 전략의 종합

기술 프레임워크는 인프라스트럭처 계층 제공

도메인을 다른 관심사에서 격리되게 도와줌 애플리케이션 개발 속도를 대폭 향상

Page 28: [Domain driven design] 17장 전략의 종합

하지만 표현력 있는 구현과 손쉬운 변경 방해

프레임워크 설계자가 도메인 계층이나 애플리케이션 계층에 뛰어들 의도가 전혀 없을 때도 생긴다.

Page 29: [Domain driven design] 17장 전략의 종합

멍청이들을 위한 프레임워크를 작성하지 마라

설계를 할 만큼 똑똑하지 않다면 소프트웨어를 개발하는 부서에 배정해서는 안 된다

Page 30: [Domain driven design] 17장 전략의 종합

대규모 구조와 BOUNDED CONTEXT 결합

대규모 구조와 디스틸레이션 결합

평가 먼저

누가 전략을 세우는가? – p524, 525

전략적 설계 결정을 위한 6가지 필수 요소

기술 프레임워크도 마찬가지다

종합계획을 조심하라

Page 31: [Domain driven design] 17장 전략의 종합

실제로 종합계획은 실패한다.

그 이유는 종합계획이 유기적 질서가 아닌

전체주의적인 질서를 만들어내기 때문이다.

자연스럽고 예측 불가능한 변화에

적응하지 못한다.

- 오레곤 실험 p16~28

Page 32: [Domain driven design] 17장 전략의 종합

대규모 구조와 BOUNDED CONTEXT 결합

대규모 구조와 디스틸레이션 결합

평가 먼저

누가 전략을 세우는가? – p524, 525

전략적 설계 결정을 위한 6가지 필수 요소

기술 프레임워크도 마찬가지다

종합계획을 조심하라

Page 33: [Domain driven design] 17장 전략의 종합
Page 34: [Domain driven design] 17장 전략의 종합