도메인 컨텍스트 맵
개요
이 문서는 DTA-WIDE 애플리케이션의 전체 도메인 맵을 시각화하고 도메인 간의 관계를 정의합니다. 도메인 주도 설계(DDD)의 전략적 설계 관점에서 바운디드 컨텍스트와 그 관계를 설명합니다.
도메인 분류
DTA-WIDE 애플리케이션은 다음과 같이 도메인을 분류합니다:
핵심 도메인 (Core Domains) - 14개
- Agent Board: 에이전트 메시지 및 사용자 상호작용 관리
- Agent Data: 에이전트 데이터 수집 및 분석
- Agent Treatment Flow: AI 치료 흐름 및 메시지 전달 관리
- Agreements: 약관 및 동의 관리
- Auth: 사용자 인증 및 보안
- Group: 사용자 그룹 및 조직 관리
- IAM: 신원 및 접근 관리
- Learning: 교육 콘텐츠 및 학습 진행 관리
- Mobile: 모바일 앱 설정 및 정책 관리
- Plan: 서비스 플랜 및 구독 관리
- Questionnaire: 설문 및 평가 도구 관리
- Relaxation: 이완 요법 콘텐츠 관리
- Sleep: 수면 데이터 및 목표 관리
- User: 사용자 프로필 및 계정 관리
지원 도메인 (Supporting Domains) - 4개
- Access Code: 시스템 접근 코드 관리
- Audit: 시스템 활동 로깅 및 감사
- Support: 사용자 문의 및 고객 지원 관리
- Time Machine: 가상 시간 및 테스트 환경 관리
일반 하위 도메인 (Generic Subdomains) - 8개
- Redis: 캐싱 및 세션 관리
- Database: 데이터 영속성 관리
- Logging: 애플리케이션 로깅
- Error Handling: 예외 및 오류 관리
- Common: 공통 유틸리티 및 헬퍼
- Config: 시스템 설정 관리
- Events: 도메인 이벤트 처리
- Rate Limiter: API 요청 제한 관리
도메인 관계 다이어그램
통합 패턴
각 도메인 간 통합은 다음과 같은 패턴을 사용합니다:
1. 고객-공급자 (Customer-Supplier)
- Auth ↔ IAM: Auth가 IAM의 권한 검증 서비스를 사용
- Agent Treatment Flow ↔ 콘텐츠 도메인들: Agent Flow가 Learning, Relaxation, Sleep 등의 서비스를 사용
- Access Code ↔ Auth/Group/Plan: Access Code가 사용자 생성 시 관련 도메인 서비스 사용
- Support ↔ User: Support가 User의 사용자 정보를 조회하여 문의 처리
2. 준수자 (Conformist)
- 모든 도메인 → Generic Subdomains: 일반 하위 도메인의 표준을 그대로 따름
- 콘텐츠 도메인들 → User: User 도메인의 데이터 모델을 그대로 수용
3. 부패 방지 계층 (Anti-corruption Layer)
- Mobile ↔ 외부 서비스: 외부 푸시 알림 서비스 등과의 통합
- Auth ↔ GesundheitsID: 외부 OAuth 제공자와의 통합
4. 공유 커널 (Shared Kernel)
- Auth, User, IAM: 사용자 신원 및 권한 관련 핵심 개념 공유
- Agent Board, Agent Data, Agent Flow: 에이전트 관련 공통 모델 공유
5. 공개 호스트 서비스 (Open Host Service)
- IAM: 다른 도메인들이 사용할 수 있는 표준화된 권한 검증 API 제공
- Events: 도메인 간 비동기 통신을 위한 이벤트 버스 제공
6. 발행-구독 (Published Language)
- Events 도메인: 모든 도메인이 이해할 수 있는 표준 이벤트 형식 정의
- Audit 도메인: 표준화된 감사 로그 형식 제공
도메인 의존성 원칙
- 핵심 도메인은 서로 간의 의존성을 최소화하고, 필요한 경우 이벤트를 통해 느슨하게 결합
- 지원 도메인은 핵심 도메인을 지원하지만, 핵심 비즈니스 로직에는 관여하지 않음
- 일반 하위 도메인은 다른 도메인에 의존하지 않으며, 기술적 관심사만 처리
- 순환 의존성은 허용되지 않으며, 필요한 경우 이벤트나 중간 계층을 통해 해결
도메인 경계
각 도메인의 세부 경계 및 책임 범위는 다음 문서에서 확인할 수 있습니다:
- 각 도메인의
bounded-context.md: 도메인 경계 및 책임 정의 - 각 도메인의
domain-model.md: 핵심 개념 및 엔티티 정의 - 각 도메인의
event-storming.md: 도메인 이벤트 및 흐름 정의
참고 문서
- Event System Architecture: 도메인 간 이벤트 통신 상세
- 각 도메인별 상세 문서는
/domains디렉터리 참조