1.4 바운디드 컨텍스트 정의

1.4 바운디드 컨텍스트 정의

1. 바운디드 컨텍스트의 이해

1.1 바운디드 컨텍스트란?

바운디드 컨텍스트(Bounded Context)는 특정 도메인 모델이 적용되는 명확한 경계를 의미합니다. 이는 동일한 용어나 개념이라도 사용되는 맥락에 따라 다른 의미를 가질 수 있다는 점을 인식하고, 이를 명시적으로 구분하기 위한 개념입니다.

도메인 주도 설계에서 바운디드 컨텍스트는 다음과 같은 특징을 가집니다:

  • 독립적인 도메인 모델을 가집니다.
  • 자체적인 유비쿼터스 언어를 사용합니다.
  • 명확한 통합 지점을 제공합니다.
  • 독립적인 구현과 배포가 가능합니다.

1.2 바운디드 컨텍스트의 중요성

바운디드 컨텍스트는 복잡한 도메인을 관리 가능한 단위로 분할하는 핵심 도구입니다. 이는 다음과 같은 이점을 제공합니다:

개념적 명확성:

  • 각 컨텍스트 내에서 용어와 개념의 의미가 일관되게 유지됩니다.
  • 서로 다른 하위 도메인 간의 혼란을 방지합니다.
  • 도메인 전문가와의 효과적인 의사소통이 가능해집니다.

기술적 자율성:

  • 각 컨텍스트는 독립적인 기술 스택을 선택할 수 있습니다.
  • 컨텍스트별로 최적화된 데이터 모델을 사용할 수 있습니다.
  • 독립적인 개발과 배포가 가능해집니다.

2. 도서관 시스템의 바운디드 컨텍스트

2.1 사용자 관리 컨텍스트

사용자 관리 컨텍스트는 도서관 서비스 이용자의 신원과 자격을 관리하는 영역입니다.

핵심 개념:

[Member]
- 속성: 회원번호, 이름, 연락처, 주소
- 책임: 회원 자격 관리, 대출 권한 확인
- 불변식: 회원번호는 고유해야 함, 연체 시 대출 제한

[MembershipCard]
- 속성: 카드번호, 발급일자, 유효기간
- 책임: 회원 인증
- 불변식: 카드번호는 고유해야 함

[MembershipPolicy]
- 속성: 회원등급별 규칙
- 책임: 회원 권한 정의
- 불변식: 모든 회원은 하나의 등급에 속해야 함

2.2 도서 관리 컨텍스트

도서 관리 컨텍스트는 도서관의 자료를 카탈로그화하고 관리하는 영역입니다.

핵심 개념:

[Book]
- 속성: ISBN, 제목, 저자, 출판정보
- 책임: 서지정보 관리
- 불변식: ISBN은 고유해야 함

[BookCategory]
- 속성: 분류코드, 분류명
- 책임: 도서 분류체계 관리
- 불변식: 모든 도서는 하나 이상의 분류를 가져야 함

2.3 도서 대출 순환 컨텍스트

도서 대출 순환 컨텍스트는 실제 도서의 대출과 반납을 관리하는 영역입니다.

핵심 개념:

[BookCopy]
- 속성: 복본ID, 상태, 위치정보
- 책임: 대출 가능 여부 관리
- 불변식: 한 번에 한 명만 대출 가능

[Checkout]
- 속성: 대출ID, 대출일, 반납예정일
- 책임: 대출 상태 추적
- 불변식: 반납예정일은 대출일 이후여야 함

[Reservation]
- 속성: 예약ID, 예약일, 만료일
- 책임: 예약 순서 관리
- 불변식: 대출 중인 도서만 예약 가능

3. 컨텍스트 간 협력 패턴

3.1 컨텍스트 매핑

컨텍스트 간의 관계는 명확한 통합 계약을 통해 정의됩니다:

업스트림-다운스트림 관계:

사용자 관리 → 도서 대출 순환
- 회원 자격 정보 제공
- 대출 권한 확인 서비스 제공

도서 관리 → 도서 대출 순환
- 도서 메타데이터 제공
- 도서 분류 정보 제공

3.2 통합 패턴

컨텍스트 간 통합은 다음과 같은 패턴을 활용합니다:

이벤트 기반 통합:

회원상태변경됨 → 대출권한업데이트
도서상태변경됨 → 대출가능여부업데이트
대출완료됨 → 회원이력업데이트

4. 바운디드 컨텍스트 구현 전략

4.1 기술 스택 선택

각 컨텍스트는 자신의 특성에 맞는 기술을 선택할 수 있습니다:

사용자 관리 컨텍스트:

  • 관계형 데이터베이스 사용
  • 강력한 트랜잭션 지원 필요
  • 보안과 감사 기능 중요

도서 관리 컨텍스트:

  • 문서 기반 데이터베이스 활용
  • 유연한 메타데이터 관리
  • 검색 기능 최적화

4.2 구현 시 고려사항

각 컨텍스트 구현 시 다음 사항을 고려합니다:

격리 수준:

  • 독립적인 데이터베이스 사용
  • 별도의 배포 단위로 관리
  • 자체적인 캐싱 전략 수립

통합 인터페이스:

  • API 게이트웨이 활용
  • 이벤트 버스 구축
  • 장애 격리 패턴 적용
Last updated on