**도메인 주도 설계(Domain-Driven Design, DDD)**는 소프트웨어를 비즈니스 도메인과 밀접하게 일치하도록 모델링하는 데 초점을 둔 소프트웨어 설계 접근법입니다 — 도메인 전문가와의 협업, 공유된 언어, 그리고 잘 정의된 도메인 모델과 경계를 강조합니다. 복잡한 비즈니스 도메인에 가치가 있습니다.
DDD의 핵심 아이디어
DDD는 설계를 비즈니스 도메인(실세계 문제)에 중심을 둠:
✓ ubiquitous language(보편 언어) → 개발자와 도메인 전문가 사이의 공유되고 정확한
어휘로, 코드와 대화 모두에서 일관되게 사용됨 (오해를 줄임)
✓ 도메인을 모델링 → 단지 데이터 구조가 아니라 실제 비즈니스 개념/규칙을 반영하는
풍부한 도메인 모델 — 모델이 비즈니스 로직을 포착함
✓ 도메인 전문가와 협업 → 잘 모델링하기 위해 도메인을 깊이 이해
전략적 DDD (경계)
BOUNDED CONTEXT(경계 컨텍스트) → 큰 도메인을 각자의 모델과 언어를 가진 경계 컨텍스트로
나눔 (한 용어가 다른 컨텍스트에서 다른 것을 의미할 수 있음) → 복잡성 관리
→ 하나의 거대하고 혼란스러운 모델을 피함; 명확한 경계를 정의
CONTEXT MAPPING → 경계 컨텍스트 간 관계/통합을 정의
→ 전략적 DDD는 큰 복잡한 도메인을 합리적으로 나누어 관리함
