Domain-Driven-DESIGN part 3
Published:
에릭 에반스의 ‘도메인 주도 설계’ 책과 조영호의 ‘도메인 주도 설계의 사실과 오해’ 강의를 기반으로 이해한 내용을 작성해보려고 합니다.
전략적 디스틸레이션에 대해 알아봅시다.
도메인 주도 설계 3편
전략적 디스틸레이션이란?
도메인 주도 설계(DDD)에서 전략적 디스틸레이션은 각 도메인의 중요도를 판단하고, 이를 기반으로 리소스를 효율적으로 배분하는 방법입니다. 바운디드 컨텍스트가 각 도메인을 분리하여 관리하는 데 초점을 맞춘다면, 전략적 디스틸레이션은 이러한 분리된 도메인에서 중요한 부분에 주의를 집중시키고 불필요한 혼란을 줄이는 데 목적이 있습니다.
디스틸레이션의 필요성
복잡한 시스템을 개발하다 보면, 도메인에서 중요하지 않은 문제에 많은 노력이 낭비되는 경우가 있습니다. 이를 방지하기 위해 전체 도메인 모델을 체계적으로 구조화하여, 시스템에서 가장 가치 있고 중요한 측면에 집중하는 것이 필요합니다. 예를 들어, ERP 시스템 관련 작업은 외주를 주는 것이 리소스를 더 효율적으로 사용할 수 있는 방법일 수 있습니다.
전략적 디스틸레이션의 구성
코어 도메인
- 정의: 사업의 성공을 결정짓는 핵심 기능을 담당하는 도메인 모델.
- 리소스 배분: 최고의 실력자를 배정하여 최대한의 집중과 노력을 기울입니다.
- 예시: 회사의 주요 비즈니스 로직, 고객 관리 시스템 등.
제네릭 서브도메인
- 정의: 비즈니스 경쟁우위를 제공하지 않으며, 여러 타사 애플리케이션에도 존재하는 서브도메인.
- 리소스 배분: 기성 소프트웨어를 사서 사용하거나 주니어 개발자를 배정합니다.
- 예시: 이메일 시스템, 기본 인증 모듈 등.
지원 서브도메인
- 정의: 코어 도메인을 지원하는 역할을 하지만 비즈니스 경쟁우위를 제공하지 않는 도메인.
- 리소스 배분: 외주로 해결하거나 개발자들의 성장을 위한 기회로 활용합니다.
- 예시: 인사 관리 시스템, 회계 관리 모듈 등.
전략적 디스틸레이션의 실행
- 도메인 모델 묶기: 전체 도메인 모델을 묶어두고, 모든 서브도메인을 정의합니다.
- 코어 도메인 식별: 사업의 성공에 핵심적인 도메인 모델을 코어 도메인으로 정의합니다.
- 리소스 배분: 각 도메인 모델에 적절한 리소스를 배정합니다.
- 코어 도메인에는 최고의 실력자를 배정하여 최대한의 집중과 노력을 기울입니다.
- 제네릭 서브도메인에는 기성 소프트웨어를 사용하거나 주니어 개발자를 배정합니다.
- 지원 서브도메인은 외주로 해결하거나 개발자들의 성장을 위한 기회로 활용합니다.
전략적 디스틸레이션의 핵심
전략적 디스틸레이션의 핵심은 리소스를 집중할 영역과 시스템 구축 방법을 결정하는 것입니다. 이를 통해 중요한 부분에 주의를 집중하고, 불필요한 노력과 혼란을 줄일 수 있습니다. 적절한 리소스 배분을 통해 시스템의 효율성과 비즈니스 경쟁력을 극대화할 수 있습니다.
도메인 주도 설계에서 전략적 디스틸레이션은 리소스를 효율적으로 배분하고, 중요한 도메인에 집중하여 비즈니스 성공을 도모하는 중요한 전략입니다. 이를 통해 복잡한 시스템에서도 중요한 부분에 집중할 수 있으며, 개발 리소스를 효율적으로 활용할 수 있습니다.
그러면 다음편부터는 이제 실제 코드에서 어떻게 사용하는지 알아보겠습니다.