Programming/DDD
전략의 종합
Albothyl
2019. 8. 3. 21:41
1. 상호작용
- 종합적인 계획은 전체주의적인 질서를 만들어 내기 때문에 너무 경직되어 불가피하게 일어나는 자연스럽고 예측 불가능한 변화에 유연하지 못하다. 때문에 Context, Distillation, 대규모 구조를 조합하여 상호작용을 이끌어 내야 한다.
- 대규모 구조와 Bounded Context와의 결합
- 대규모 구조는 1 ~ N개의 Bounded Context에 영향을 주면서 Context Map을 구성할 수 있다.
- Responsibility Layer는 N개의 Bounded Context에 적용될 수 있다.
- 대규모 구조는 Core Domain안의 여러 관계와 Sub Domain 사이의 관계를 설명할 수 있다.
2. 평가
- 일관된 Context Map을 그릴 수 있는가?
- Ubiquitous Language가 있는가?
- Core Domain을 식별할 수 있는가?
- Domain Vision Statement가 있는가?
- 프로젝트에 사용하는 기술이 Model Driven Design에 유리한가?
- 팀 내 개발자가 필요한 기술 역량을 갖췄는가?
- 개발자들이 Domain을 잘 알고 있는가?
3. 전략적 설계를 위한 6가지 요소
- 의사결정은 팀 전체에 퍼져야 한다.
- 의사결정 프로세스는 피드백을 흡수해야 한다.
- 계획은 발전을 감안해야 한다.
- 뛰어난 사람들을 팀마다 골고루 배치해야 한다.
- 전략적 설계에는 최소주의와 겸손이 필요하다.
- 생각이 다른 생각으로 꼬리를 물고 이어지면 역효과를 내는 필요 이상의 아키텍처가 만들어진다.
- 객체는 전문가, 개발자는 다방면에 지식이 풍부한 사람
- 지나친 전문화는 DDD의 활력을 앗아간다.