Lidar com a complexidade dos negócios em um microsserviço com padrões DDD e CQRSTackle Business Complexity in a Microservice with DDD and CQRS Patterns

Crie um modelo de domínio para cada microsserviço ou contexto limitado que reflita o entendimento do domínio da empresa.Design a domain model for each microservice or Bounded Context that reflects understanding of the business domain.

Esta seção concentra-se em microsserviços mais avançados que você implementa quando precisa lidar com subsistemas complexos ou com microsserviços derivados do conhecimento de especialistas no domínio com mudanças constantes nas regras de negócio.This section focuses on more advanced microservices that you implement when you need to tackle complex subsystems, or microservices derived from the knowledge of domain experts with ever-changing business rules. Os padrões de arquitetura usados nesta seção são baseados nas abordagens DDD (design controlado por domínio) e CQRS (Segregação de Responsabilidade de Comando e Consulta), conforme é ilustrado na Figura 7-1.The architecture patterns used in this section are based on domain-driven design (DDD) and Command and Query Responsibility Segregation (CQRS) approaches, as illustrated in Figure 7-1.

Diagrama comparando padrões de arquitetura externa e interna.

Diferença entre arquitetura externa: padrões de microsserviço, gateways de API, comunicação resilientes, pub/sub etc. e a arquitetura interna: controlado por dados/CRUD, padrões de DDD, injeção de dependência, várias bibliotecas etc.Difference between external architecture: microservice patterns, API gateways, resilient communications, pub/sub, etc., and internal architecture: data driven/CRUD, DDD patterns, dependency injection, multiple libraries, etc.

Figura 7-1.Figure 7-1. Arquitetura externa de microsserviço versus padrões de arquitetura interna para cada microsserviçoExternal microservice architecture versus internal architecture patterns for each microservice

No entanto, a maioria das técnicas de microsserviços controlados por dados, incluindo como implementar um serviço de API Web do ASP.NET Core ou como expor metadados com Swashbuckle ou NSwag, também se aplica aos microsserviços mais avançados implementados internamente com padrões DDD.However, most of the techniques for data driven microservices, such as how to implement an ASP.NET Core Web API service or how to expose Swagger metadata with Swashbuckle or NSwag, are also applicable to the more advanced microservices implemented internally with DDD patterns. Esta seção é uma extensão das seções anteriores, pois a maioria das práticas de explicadas anteriormente também se aplicam aqui ou para qualquer tipo de microsserviço.This section is an extension of the previous sections, because most of the practices explained earlier also apply here or for any kind of microservice.

Esta seção primeiro fornece detalhes sobre os padrões CQRS simplificados usados no aplicativo de referência eShopOnContainers.This section first provides details on the simplified CQRS patterns used in the eShopOnContainers reference application. Posteriormente, você obterá uma visão geral das técnicas de DDD que permitem encontrar padrões comuns que podem ser reutilizados em seus aplicativos.Later, you will get an overview of the DDD techniques that enable you to find common patterns that you can reuse in your applications.

O DDD é um tópico grande com um conjunto avançado de recursos de aprendizagem.DDD is a large topic with a rich set of resources for learning. Você pode iniciar com guias como Domain-Driven Design (Design controlado por domínio) do Eric Evans e os materiais adicionais dos autores Vernon, Jimmy Nilsson, Greg Young, Udi Dahan, Jimmy Bogard e muitos outros especialistas em DDD/CQRS.You can start with books like Domain-Driven Design by Eric Evans and additional materials from Vaughn Vernon, Jimmy Nilsson, Greg Young, Udi Dahan, Jimmy Bogard, and many other DDD/CQRS experts. Mas, sobretudo, você precisa tentar aprender como aplicar as técnicas de DDD das sessões de conversa, de quadro de comunicações e de modelagem com os especialistas em seu domínio de negócio concreto.But most of all you need to try to learn how to apply DDD techniques from the conversations, whiteboarding, and domain modeling sessions with the experts in your concrete business domain.

Recursos adicionaisAdditional resources

DDD (design controlado por domínio)DDD (Domain-Driven Design)
Guias sobre DDDDDD books
Treinamento em DDDDDD training
  • Julie Lerman e Steve Smith. Conceitos básicos de design controlado por domínio Julie Lerman and Steve Smith. Domain-Driven Design Fundamentals
    https://bit.ly/PS-DDD