[domain driven design] 17장 전략의 종합
TRANSCRIPT
도메인 주도 설계 Domain-Driven Design
17장 전략의 종합
ohyecloudy http://ohyecloudy.com
아꿈사 http://cafe.naver.com/architect1
2011.10.01
전략적 설계의 세 가지 기본 원칙이 어떻게
상호작용을 하는지 아주 간단하게 살펴본다.
그리고 지침들이 가득
좀 지루해요
대규모 구조와 BOUNDED CONTEXT 결합
대규모 구조와 디스틸레이션 결합
평가 먼저
누가 전략을 세우는가? – p524, 525
전략적 설계 결정을 위한 6가지 필수 요소
기술 프레임워크도 마찬가지다
종합계획을 조심하라
BOUNDED CONTEXT
CONTEXT MAP
EVOLVING ORDER
UBIQUITOUS LANGUAGE
CORE DOMAIN
컨텍스트
대규모 구조 디스틸레이션
조직화 기준으로 활용
BOUNDED CONTEXT
CONTEXT MAP
EVOLVING ORDER
UBIQUITOUS LANGUAGE
CORE DOMAIN
컨텍스트
대규모 구조 디스틸레이션
조직화 기준으로 활용
컨텍스트, 디스틸레이션, 대규모 구조는 서로 대체 가능하지 않다.
서로 보안하며 상호작용
BOUNDED CONTEXT
CONTEXT MAP
EVOLVING ORDER
UBIQUITOUS LANGUAGE
CORE DOMAIN
컨텍스트
대규모 구조 디스틸레이션
조직화 기준으로 활용 대규모 구조는 하나의 BOUNDED CONTEXT에서만 존재
or 여러 BOUNDED CONTEXT에 영향을 주면서 CONTEXT MAP을 구성
대규모 구조와 BOUNDED CONTEXT 결합
대규모 구조와 디스틸레이션 결합
평가 먼저
누가 전략을 세우는가? – p524, 525
전략적 설계 결정을 위한 6가지 필수 요소
기술 프레임워크도 마찬가지다
종합계획을 조심하라
BOUNDED CONTEXT
CONTEXT MAP
EVOLVING ORDER
UBIQUITOUS LANGUAGE
CORE DOMAIN
컨텍스트
대규모 구조 디스틸레이션 조직화 기준으로 활용
개념을 추가
BOUNDED CONTEXT
CONTEXT MAP
EVOLVING ORDER
UBIQUITOUS LANGUAGE
CORE DOMAIN
컨텍스트
대규모 구조 디스틸레이션 조직화 기준으로 활용
개념을 추가
대규모 구조는 CORE DOMAIN 안의 각종 관계와 여러 GENERIC SUBDOMAIN 사이의 관계를 설명하는데 도움
대규모 구조와 BOUNDED CONTEXT 결합
대규모 구조와 디스틸레이션 결합
평가 먼저
누가 전략을 세우는가? – p524, 525
전략적 설계 결정을 위한 6가지 필수 요소
기술 프레임워크도 마찬가지다
종합계획을 조심하라
CONTEXT MAP을 그려라.
일관된 CONTEXT MAP을 그릴 수 있는가?
그렇지 않다면 모호한 상황이 있는가?
프로젝트상의 언어를 쓰는 데 힘써라.
UBIQUITOUS LANGUAGE가 있는가?
UBIQUITOUS LANGUAGE가
개발에 도움을 줄 만큼 풍부한가?
무엇이 중요한지 이해하라.
CORE DOMAIN을 식별했는가?
DOMAIN VISION STATEMENT가 있는가?
DOMAIN VISION STATEMENT를
작성할 수 있는가?
프로젝트에 사용하는 기술이
MODEL-DRIVEN DESIGN에
유리한가, 불리한가?
팀 내 개발자가 필요한
기술 역량을 갖췄는가?
개발자들이 도메인을 잘 알고 있는가?
개발자들이 도메인에 관심은 있는가?
완벽한 답 못 찾겠지?
하지만 이런 질문은 견실한 출발점을 마련해 줌
구체적인 답을 마련할 때
가장 먼저 뭘 해야 할지에 대한 통찰력이 생길 때
대규모 구조와 BOUNDED CONTEXT 결합
대규모 구조와 디스틸레이션 결합
평가 먼저
누가 전략을 세우는가? – p524, 525
전략적 설계 결정을 위한 6가지 필수 요소
기술 프레임워크도 마찬가지다
종합계획을 조심하라
1 의사결정은 팀 전체에 퍼져야 한다.
의사소통이 중요
2 의사결정 프로세스는 피드백을 흡수해야 한다
디스틸레이션을 만드려면 깊이 있는 지식이 필요 애플리케이션 개발팀이 가지고 있지 아키텍처 팀 구성원과 피드백 고리가 필요
3 계획은 발전을 감안해야 한다
혁신은 장애물을 만나거나 예상치 못한 기회를 발견했을 때 나타난다.
4 아키텍처 팀에서 가장 뛰어나고
똑똑한 사람들을 모두 데려가서는 안된다
훌륭한 애플리케이션에는 설계 솜씨가 필요. 훌륭한 전략적 설계를 만들었다고 해도 애플리케이션 팀에서 못 따라가면 캐망
5 전략적 설계에는 최소주의와 겸손이 필요
필요 이상의 아키텍처를 주의
6 객체는 전문가,
개발자는 다방면에 지식이 풍부한 사람
지나친 전문화는 도메인 주도 설계의 활력을 앗아간다.
대규모 구조와 BOUNDED CONTEXT 결합
대규모 구조와 디스틸레이션 결합
평가 먼저
누가 전략을 세우는가? – p524, 525
전략적 설계 결정을 위한 6가지 필수 요소
기술 프레임워크도 마찬가지다
종합계획을 조심하라
기술 프레임워크는 인프라스트럭처 계층 제공
도메인을 다른 관심사에서 격리되게 도와줌 애플리케이션 개발 속도를 대폭 향상
하지만 표현력 있는 구현과 손쉬운 변경 방해
프레임워크 설계자가 도메인 계층이나 애플리케이션 계층에 뛰어들 의도가 전혀 없을 때도 생긴다.
멍청이들을 위한 프레임워크를 작성하지 마라
설계를 할 만큼 똑똑하지 않다면 소프트웨어를 개발하는 부서에 배정해서는 안 된다
대규모 구조와 BOUNDED CONTEXT 결합
대규모 구조와 디스틸레이션 결합
평가 먼저
누가 전략을 세우는가? – p524, 525
전략적 설계 결정을 위한 6가지 필수 요소
기술 프레임워크도 마찬가지다
종합계획을 조심하라
실제로 종합계획은 실패한다.
그 이유는 종합계획이 유기적 질서가 아닌
전체주의적인 질서를 만들어내기 때문이다.
자연스럽고 예측 불가능한 변화에
적응하지 못한다.
- 오레곤 실험 p16~28
대규모 구조와 BOUNDED CONTEXT 결합
대규모 구조와 디스틸레이션 결합
평가 먼저
누가 전략을 세우는가? – p524, 525
전략적 설계 결정을 위한 6가지 필수 요소
기술 프레임워크도 마찬가지다
종합계획을 조심하라