다음을 통해 공유


DDD 및 CQRS 패턴을 사용하여 마이크로 서비스의 비즈니스 복잡성 해결

팁 (조언)

이 콘텐츠는 .NET Docs 또는 오프라인으로 읽을 수 있는 다운로드 가능한 무료 PDF로 제공되는 컨테이너화된 .NET 애플리케이션용 .NET 마이크로 서비스 아키텍처인 eBook에서 발췌한 내용입니다.

컨테이너화된 .NET 애플리케이션을 위한 .NET 마이크로서비스 아키텍처 eBook의 표지 썸네일.

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

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

외부 및 내부 아키텍처 패턴을 비교하는 다이어그램

외부 아키텍처의 차이점: 마이크로 서비스 패턴, API 게이트웨이, 복원력 있는 통신, pub/sub 등, 내부 아키텍처: 데이터 기반/CRUD, DDD 패턴, 종속성 주입, 여러 라이브러리 등

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

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

이 섹션에서는 먼저 eShopOnContainers 참조 애플리케이션에서 사용되는 간소화된 CQRS 패턴에 대한 세부 정보를 제공합니다. 나중에 애플리케이션에서 다시 사용할 수 있는 일반적인 패턴을 찾을 수 있는 DDD 기술에 대한 개요를 확인할 수 있습니다.

DDD는 학습을 위한 다양한 리소스 집합이 있는 큰 주제입니다. 에릭 에반스의 Domain-Driven 디자인 과 본 버논, 지미 닐슨, 그렉 영, 우디 다한, 지미 보가드 및 기타 많은 DDD/CQRS 전문가의 추가 자료와 같은 책으로 시작할 수 있습니다. 그러나 무엇보다도 구체적인 비즈니스 도메인의 전문가와 대화, 화이트보드 및 도메인 모델링 세션에서 DDD 기술을 적용하는 방법을 배워야 합니다.

추가 리소스

DDD (Domain-Driven 디자인)
DDD 책
DDD 학습