본문으로 건너뛰기

도메인 컨텍스트 맵

개요

이 문서는 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 도메인: 표준화된 감사 로그 형식 제공

도메인 의존성 원칙

  1. 핵심 도메인은 서로 간의 의존성을 최소화하고, 필요한 경우 이벤트를 통해 느슨하게 결합
  2. 지원 도메인은 핵심 도메인을 지원하지만, 핵심 비즈니스 로직에는 관여하지 않음
  3. 일반 하위 도메인은 다른 도메인에 의존하지 않으며, 기술적 관심사만 처리
  4. 순환 의존성은 허용되지 않으며, 필요한 경우 이벤트나 중간 계층을 통해 해결

도메인 경계

각 도메인의 세부 경계 및 책임 범위는 다음 문서에서 확인할 수 있습니다:

  • 각 도메인의 bounded-context.md: 도메인 경계 및 책임 정의
  • 각 도메인의 domain-model.md: 핵심 개념 및 엔티티 정의
  • 각 도메인의 event-storming.md: 도메인 이벤트 및 흐름 정의

참고 문서

  • Event System Architecture: 도메인 간 이벤트 통신 상세
  • 각 도메인별 상세 문서는 /domains 디렉터리 참조