본문으로 건너뛰기

도메인 통합 패턴

개요

이 문서는 DTA-WIDE 애플리케이션의 도메인 간 통합 패턴을 정의합니다. 도메인 주도 설계(DDD)에서는 바운디드 컨텍스트 간의 관계를 명확히 정의하는 것이 중요합니다. 이 문서는 시스템에서 사용되는 다양한 통합 패턴과 적용 사례를 설명합니다.

통합 패턴 유형

1. 공유 커널 (Shared Kernel)

정의: 두 개 이상의 팀이 코드베이스의 일부를 공유하는 패턴입니다.

적용 사례:

  • 인증(Auth), 사용자(User), IAM 도메인 간에 공통 사용자 ID 및 권한 모델 공유
  • 모든 도메인에서 사용하는 기본 엔티티 및 값 객체 정의

구현 방법:

  • 공유 라이브러리를 통한 코드 공유
  • 명확한 인터페이스 정의
  • 변경 관리를 위한 테스트 자동화

2. 고객-공급자 (Customer-Supplier)

정의: 한 컨텍스트(공급자)가 다른 컨텍스트(고객)에 서비스를 제공하는 관계입니다.

적용 사례:

  • IAM 도메인(공급자)과 인증(Auth) 도메인(고객)
  • 인증(Auth) 도메인(공급자)과 여러 기능 도메인(고객)

구현 방법:

  • 명확한 서비스 계약 정의
  • 다운스트림 영향을 고려한 API 버전 관리
  • 통합 테스트를 통한 계약 검증

3. 준수자 (Conformist)

정의: 한 컨텍스트가 다른 컨텍스트의 모델을 그대로 수용하는 관계입니다.

적용 사례:

  • 대부분의 기능 도메인과 로깅, 설정, 데이터베이스 등의 일반 하위 도메인 간의 관계
  • 외부 서비스를 그대로 사용하는 경우

구현 방법:

  • 공급자의 모델과 인터페이스를 그대로 수용
  • 적응에 필요한 어댑터 패턴 활용
  • 호환성 유지를 위한 모니터링

4. 부패 방지 계층 (Anti-corruption Layer)

정의: 외부 시스템이나 다른 컨텍스트의 모델이 자신의 모델을 오염시키지 않도록 보호하는 계층입니다.

적용 사례:

  • 외부 시스템과의 통합 (예: 결제 시스템, 외부 인증 제공자)
  • 레거시 시스템과의 통합

구현 방법:

  • 어댑터 및 퍼사드 패턴 사용
  • 명확한 변환 로직 정의
  • 외부 시스템 변화로부터의 격리

5. 공개 호스트 서비스 (Open Host Service)

정의: 여러 다운스트림 클라이언트가 사용할 수 있는 잘 정의된 서비스를 제공합니다.

적용 사례:

  • IAM 도메인이 여러 도메인에 제공하는 권한 검증 서비스
  • 공통 데이터 서비스

구현 방법:

  • 명확한 공개 API 정의
  • 안정적인 계약 유지
  • 포괄적인 문서화

6. 게시된 언어 (Published Language)

정의: 여러 컨텍스트 간에 공유되는 공통 언어입니다.

적용 사례:

  • 도메인 이벤트 정의
  • 서비스 간 메시지 형식

구현 방법:

  • 스키마 정의 (JSON Schema, Protocol Buffers 등)
  • 버전 관리
  • 검증 메커니즘

도메인별 통합 패턴

핵심 도메인 간 통합

소스 도메인대상 도메인통합 패턴구현 방법
AuthUser고객-공급자REST API
AuthIAM고객-공급자내부 서비스 호출
UserIAM고객-공급자내부 서비스 호출

핵심 도메인과 지원 도메인 간 통합

소스 도메인대상 도메인통합 패턴구현 방법
AuthAudit공개 호스트 서비스이벤트 발행
UserAudit공개 호스트 서비스이벤트 발행
IAMAudit공개 호스트 서비스이벤트 발행
UserTimeMachine공개 호스트 서비스이벤트 발행
IAMTimeMachine공개 호스트 서비스이벤트 발행
AuthAccessCode고객-공급자내부 서비스 호출

도메인과 일반 하위 도메인 간 통합

소스 도메인대상 도메인통합 패턴구현 방법
모든 도메인Logging준수자공유 라이브러리
모든 도메인Config준수자공유 라이브러리
모든 도메인Database준수자공유 라이브러리
모든 도메인ErrorHandling준수자공유 라이브러리
모든 도메인Common준수자공유 라이브러리

외부 시스템 통합

내부 도메인외부 시스템통합 패턴구현 방법
Auth외부 OAuth 제공자부패 방지 계층API 어댑터
User외부 알림 서비스부패 방지 계층API 어댑터

통합 가이드라인

  1. 명확한 경계 정의: 각 도메인의 책임과 경계를 명확히 정의하세요.
  2. 계약 우선 설계: API를 설계할 때 계약을 먼저 정의하고 구현하세요.
  3. 버전 관리: 모든 통합 지점에 버전 관리를 적용하세요.
  4. 테스트 자동화: 통합 테스트를 자동화하여 계약 위반을 방지하세요.
  5. 문서화: 모든 통합 지점을 포괄적으로 문서화하세요.

인증 기반 통합 패턴

User Token Delegation Pattern

정의: 중간 서비스가 사용자를 대신하여 토큰을 관리하고 API 호출을 수행하는 패턴입니다.

적용 사례:

  • MCP Server가 Chat Service의 사용자 토큰을 위임받아 DTA-Wide API 호출
  • BFF(Backend for Frontend)가 클라이언트 토큰을 관리하여 여러 백엔드 서비스 접근
  • API Gateway가 사용자 대신 다운스트림 서비스 호출

구현 방법:

  • 세션 기반 토큰 저장 및 관리
  • CQRS 기반 토큰 갱신 명령 처리
  • 자동 토큰 만료 감지 및 갱신

통합 테이블:

소스 서비스대상 서비스통합 패턴구현 방법인증 방식구현 상태
Chat ServiceMCP Server토큰 위임세션 기반 토큰 전달User Token구현됨 (dta-wide-mcp)
MCP ServerDTA-Wide API사용자 대리 호출Bearer TokenUser Token구현됨 (dta-wide-mcp)
BFF ServiceBackend APIs토큰 위임자동 토큰 관리User Token계획 중

Service Account Authentication Pattern

정의: 서비스 간 통신에서 서비스 계정을 통한 인증 패턴입니다.

적용 사례:

  • 시스템 레벨 데이터 접근 (로그, 메트릭, 설정)
  • 배치 작업 및 스케줄링 서비스
  • 내부 관리 도구 및 모니터링

구현 방법:

  • API Key + JWT Token 조합
  • 서비스별 고유 자격 증명
  • 자동 토큰 갱신 메커니즘

통합 테이블:

소스 서비스대상 서비스통합 패턴구현 방법인증 방식구현 상태
MCP ServerLogging API서비스 계정API Key + JWTService Account구현됨 (dta-wide-mcp)
Monitoring ServiceMetrics API서비스 계정API Key + JWTService Account계획 중
Batch ServiceData API서비스 계정API Key + JWTService Account계획 중

이벤트 기반 통합

Cloud Run과 같은 분산 환경에서는 마이크로서비스 간 통합에 이벤트 기반 아키텍처를 권장합니다. 이에 대한 상세한 설명과 구현 가이드는 다음 문서를 참조하세요:

이벤트 기반 통합은 특히 Cloud Run의 스케일링 특성과 잘 맞으며, 서비스 간 결합도를 낮추는 데 도움이 됩니다.

인증 통합 가이드라인

  1. 패턴 선택 기준: 데이터 접근 유형에 따라 적절한 인증 패턴 선택

    • 사용자 개인 데이터: User Token Delegation
    • 시스템 레벨 데이터: Service Account Authentication
  2. 토큰 관리: 중앙화된 토큰 관리 서비스 구축

    • 자동 갱신 메커니즘
    • 토큰 암호화 저장
    • 감사 로깅
  3. 오류 처리: 인증 실패에 대한 일관된 처리 방식

    • 재시도 가능한 오류와 불가능한 오류 구분
    • 적절한 백오프 전략 적용
    • 사용자 친화적인 오류 메시지
  4. 보안 고려사항:

    • 토큰 생명주기 관리
    • 최소 권한 원칙 적용
    • 정기적인 보안 감사