일반적인 프로젝트는 분석, 설계, 구현, 테스트 등의 단계로 나누지만, DDD에서는 크게 2단계로 나눈다. 전략설계 (Strategic Design)와 전술설계 (Tactical Design)이다. 제가 DDD의 개념도 제대로 몰랐을 때, 전략설계/전술설계라는 단어부터 들었다. 전략이고 전술이고 당연히 무슨 의미인지 몰랐고, 무엇이 먼저인지도 헷갈렸다. 우선 사전적 정의부터 보자.
전략(戰略)「명사」『군사』전쟁을 전반적으로 이끌어 가는 방법이나 책략. 전술보다 상위의 개념이다.
- https://stdict.korean.go.kr 국립국어원 표준국어대사전
전술(戰術)「명사」『군사』전쟁 또는 전투 상황에 대처하기 위한 기술과 방법. 장기적이고 광범위한 전망을 갖는 전략의 하위 개념이다.
- https://stdict.korean.go.kr 국립국어원 표준국어대사전
위의 사전적 정의와 같이 전쟁을 전반적으로 이끌어가는 큰 그림은 전략단계에서 고민하고
전략에서 정의된 각 전투 상황에 대처하기 위한 세부적인 기술과 방법을 전술이라고 한다.
전략적 설계는 세세한 구현으로 들어가기에 앞서 두꺼운 붓 터치처럼 사용,
비즈니스상 전략적으로 중요한 것,
중요도에 따라 일을 나누는 방법 그리고 필요에 따라 통합하는 최적의 방법을 강조한다.
- Domain-Driven Design Distilled, 반 버논 p33
전술적 설계는 도메인 모델의 세부사항들을 그리기 위해 얇은 붓을 사용하는 것과 같다.
가장 중요한 도구 중 하나는 엔터티와 값 객체를 알맞은 크기의 애그리게잇으로 묶는 데 사용하는 애그리게잇 패턴이다.
- Domain-Driven Design Distilled, 반 버논 p34
전략설계를 두꺼운 붓 터치로, 전술설계를 얇은 붓으로 표현했다. 그림 그릴 때 뼈대를 굵게 스케치한 후 얇은 붓으로 섬세하게 표현하는 것과 같고 위의 전략/전술과 함께 생각해보면 당연하리 만큼 쉽게 이해된다. 마치 숲을 보고 나무를 봐야 하듯이.
전략설계에서는 Enterprise의 커다란 Domain을 작은 Sub Domain으로 나누고(문제영역을 나눠서 생각해야 유리), 이를 구현할 Bounded Context를 정의, 통합하는 방법을 고민한다.
전술설계는 Bounded Context 내 세부사항들을 표현하기 위해 Entity, Value Object, Aggregate에 대해 상세 설계한다.
전략설계 | 전술설계 |
숲 Context Map 이 전체 숲을 보는 지도 MSA의 Outer Architecture |
나무 CM의 각 BC가 나무에 해당되고 그 나무 설계에 해당하는 것인 전술설계 MSA의 Inner Architecture |
'DDD' 카테고리의 다른 글
전술설계 (0) | 2024.07.31 |
---|---|
전략설계 (0) | 2024.07.31 |
DDD 그리고 MSA (0) | 2022.11.24 |
Ubiquitous Language 적용 전 후 (2) (0) | 2022.10.10 |
Ubiquitous Language 적용 전 후 (0) | 2022.09.23 |