DDD 및 CQRS 패턴을 사용하여 마이크로 서비스에서 비즈니스 복잡성 처리

이 콘텐츠는 eBook, 컨테이너화된 .NET 애플리케이션을 위한 .NET 마이크로 서비스 아키텍처에서 발췌한 것이며, .NET 문서에서 제공되거나 오프라인 상태에서도 읽을 수 있는 PDF(무료 다운로드 가능)로 제공됩니다.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

비즈니스 도메인에 대한 이해를 반영하는 각 마이크로 서비스 또는 제한된 컨텍스트를 위한 도메인 모델을 디자인하세요.

이 섹션에서는 복잡한 하위 시스템 또는 끊임없이 변화하는 비즈니스 규칙을 사용하는 도메인 전문가의 지식에서 파생된 마이크로 서비스를 처리해야 할 때 구현하는 고급 마이크로 서비스에 중점을 둡니다. 이 섹션에서 사용된 아키텍처 패턴은 그림 7-1에 나와 있는 것처럼 DDD(도메인 기반 디자인) 및 CQRS(명령과 쿼리의 역할 분리) 접근 방식을 기반으로 합니다.

Diagram comparing external and internal architecture patterns.

마이크로 서비스 패턴, API 게이트웨이, 복원력 있는 통신, 게시자/구독자 등의 외부 아키텍처와 데이터 기반/CRUD, DDD 패턴, 종속성 삽입, 여러 라이브러리 등의 내부 아키텍처 간 차이입니다.

그림 7-1. 각 마이크로 서비스에 대한 외부 마이크로 서비스 아키텍처 및 내부 아키텍처 패턴

그러나 ASP.NET Core Web API 서비스를 구현하는 방법 또는 Swashbuckle 또는 NSwag를 사용하여 Swagger 메타데이터를 표시하는 방법과 같은 대부분의 데이터 기반 마이크로 서비스 기술은 DDD 패턴을 사용하여 내부적으로 구현된 고급 마이크로 서비스에도 적용할 수 있습니다. 이 섹션은 이전 섹션의 확장입니다. 이전에 설명한 대부분의 방법이 여기 또는 모든 종류의 마이크로 서비스에도 적용되기 때문입니다.

이 섹션에서는 먼저 eShopOnContainers 참조 애플리케이션에 사용되는 간소화된 CQRS 패턴에 대한 세부 정보를 제공합니다. 이후에는 애플리케이션에서 다시 사용할 수 있는 일반적인 패턴을 찾을 수 있도록 지원하는 DDD 기술에 대해 간략히 설명합니다.

DDD는 다양한 학습 리소스 집합이 있는 큰 주제입니다. Eric Evans의 Domain-Driven Design과 같은 서적 및 Vaughn Vernon, Jimmy Nilsson, Greg Young, Udi Dahan, Jimmy Bogard와 그 밖의 여러 DDD/CQRS 전문가의 추가 자료로 시작할 수 있습니다. 그러나 무엇보다도 구체적인 비즈니스 도메인 전문가와 함께 하는 대화, 화이트 보드 및 도메인 모델링 세션에서 DDD 기술을 적용하는 방법을 알아보려고 노력해야 합니다.

추가 리소스

DDD(도메인 기반 디자인)
DDD 서적
DDD 교육