[DDD] BOUNDED CONTEXT (제한된 컨텍스트)

0️⃣1️⃣·2024년 2월 19일
0

DDD

목록 보기
13/21
post-custom-banner

BOUNDED CONTEXT

다수의 모델

  • 규모가 큰 프로젝트에서는 다수의 모델이 사용되기 마련이다.

  • 그러나 개별적인 모델을 기반으로 작성된 코드가 한데 섞이면 많은 버그가 발생하고 신뢰성이 떨어지며 이해하기 힘든 소프트웨어가 만들어진다.

컨텍스트

  • 컨텍스트는 코드의 특정 부분일 수도, 개별 팀이 수행하는 업무 일 수도 있다.

  • 브레인스토밍 회의를 거쳐 만들어진 모델의 경우, 회의에서 오간 대화로 컨텍스트를 국한시킬 수 있다.

  • 다수의 모델 탓에 발생하는 문제를 해결하려면 하나의 모델이 적용되고 가능한 한 통일된 상태로 유지할 수 있는 소프트웨어 내의 제한된 부분으로 특정 모델의 범위를 명호가하게 정의할 필요가 있다.

명시적 정의

  • 모델이 적용되는 컨텍스트를 명시적으로 정의해야 한다.

  • 컨텍스트의 경계를 팀 조직, 애플리케이션의 특정 부분에서의 사용법, 코드 기반이나 데이터베이스 스키마와 같은 물리적인 형태의 관점에서 명시적으로 설정해야 한다.

  • 경계 내에서는 모델을 엄격하게 일관된 상태로 유지하고 경계 바깥의 이슈 때문에 초점이 흐려지거나 혼란스러워져서는 안 된다.

BOUNDED CONTEXT는 MODULE이 아니다.

  • 어떤 두 객체 집합이 각기 다른 모델을 구성한다고 여겨지면 두 객체 집합은 거의 항상 서로 다른 개별 MODULE내에 위치한다.

  • 그러나 MODULE은 단일 모델 내에 포함된 요소를 구성하는 데도 사용되며, 꼭 개별 CONTEXT에 의도를 전하는 것은 아니다.

  • BOUNDED CONTEXT내에 MODULE이 만들어낸 개별 네임스페이스가 포함되면 우발적으로 발생하는 모델의 단편화를 파악하기가 어려워진다.

예약 컨텍스트

  • 예약이 완료되면 해당 예약 내역은 레거시 화물추적 시스템으로 전달돼야 한다.

  • 레거시 모델과 구분하기로 사전에 결정했으므로, 레거시 화물추적 시스템은 구획 밖에 존재한다.

  • 새로운 모델과 레거시 사이에 필요한 번역은 레거시 유지보수팀의 몫이다. 번역 메커니즘은 모델에 의해 주도되지 않는다.

  • 하나의 BOUNDED CONTEXT에서 여러 팀이 동시에 작업하려면, 단일화 모델을 위해서 설계 과정에 같이 참여해야 한다.

  • 여러 팀이 동시에 작업할 때는 비공식적인 정보 공유가 발생하지 않게 하고, 정보를 공유를 위한 프로세스가 정립되어야 한다.

  • BOUNDED CONTEXT밖에 CONTEXT는 모델에서 벗어나는 자유로음을 얻을 수 있다.

  • 모델을 책임지는 팀에서는 영속화를 비롯한 각 객체의 전체 생명주기를 다룬다. 이 팀에서 데이터베이스 스키마를 통제하므로 그 팀에서 신중하게 객체 관계형 매핑을 명확하게 유지해 오고 있다. 다시 말해서, 스키마는 모델에 의해 주도되며, 따라서 구획안에 존재한다.

균열 인식

  • 실제로 같은 개념을 나타내는 두 개의 모델요소가 존재하는 중복된 개념이 발생한다.

  • 두 사람이 서로 같은 것을 이야기하고 있다고 생각하지만 실제로는 그렇지 않은 경우인 허위 동족 언어가 발생한다.

  • 균열이 발생하면, 독립적으로 모델을 개발하거나 프로세스를 정재해서 단편화를 막아야 한다.

post-custom-banner

0개의 댓글