DDD in MicroService

마이크로서비스

  • 모놀리식 애플리케이션을 각각 고유한 컨텍스트가 있는 느슨하게 결합된 서비스 애그리거트로 분리하는 것을 지지
  • 각 마이크로서비스는 명확하게 정의된 책임이 있어야 하며 다른 마이크로서비스와 독립적으로 가능해야 한다.

마이크로서비스에 DDD 적용

바운디드 컨텍스트

  1. 잘 정의된 유비쿼터스 언어와 일관된 도메인 모델이 설정된 시스템의 특정 영역을 나타낸다.
  2. 마이크로서비스에서도 각 서비스에는 고유한 바운디드 컨텍스트가 있어야 한다.

    애그리거트

  3. 엔티티 그룹을 캡슐화하는 일관성 경계이다.
  4. 마이크로서비스에서는 각 서비스 내에서 애그리거트를 식별하는 것이 필수적
  5. 애그리거트 경계 내에서 데이터가 일관성을 유지하고 도메인 모델과 상호 작용할 수 있는 명확한 인터페이스를 제공할 수 있다.

    이벤트 중심 아키텍쳐

  6. 이벤트를 활용하면 마이크로서비스가 비동기적으로 통신하여 느슨한 결합과 확장성을 촉진할 수 있다.
  7. 이벤트는 도메인별 발생을 나타내며 여러 마이크로서비스에서 일관성을 유지하는 데 도움이 된다.

공유 커널

  • 마이크로서비스에서는 도메인 모델의 특정 부분을 서비스 간의 공유해야하는 상황이 있을 수 있다.
  • 컨텍스트 간 공통 코드 또는 도메인 모델을 가리키는 개념이다.
  • 공유커널을 식별하고 생성하면 일관성을 유지하면서 개별 서비스를 개별적으로 발전시킬 수 있다.

컨텍스트 매핑

  • 경계가 있는 컨텍스트 간의 관계와 상호 작용을 정의하는 데 사용하는 DDD 기술이다.
  • 마이크로서비스에서 컨텍스트 매핑은 서로 다른 서비스 간의 통신 패턴과 통합을 설정하는 데 도움이 된다.

최종 일관성

  • 마이크로서비스는 아키텍쳐의 분산된 특성으로 인해서 즉각적인 일관성 대신 최종 일관성에 의존하는 경우가 많다.
  • DDD는 서로 다른 컨텍스트가 자체 일관성 모델을 가질 수 있도록 허용함으로써 이를 인정한다.
  • 이벤트와 최종 일관성은 마이크로 서비스 간에 데이터 무결성을 동기화하고 유지하는 데 사용 가능하다.