Arquitetura: domínio de DDD
O curso trata de Domain-Driven Design aplicado a um monolito Rails, com a base de código de um LMS como exemplo ao longo das aulas. Começa pela linguagem ubíqua e pela diferença entre DDD estratégico e tático. Depois passa por bounded contexts e mapas de contexto, entidades, objetos de valor e agregados, e pela separação entre serviços de domínio e de aplicação. As aulas seguintes mostram a camada anticorrupção, namespaces com Zeitwerk, um banco compartilhado e rotas por domínio. A última compara CRUD, service objects, monolito modular e microsserviços para decidir quando o DDD faz sentido.
O que você vai aprender
- ✓Linguagem ubíqua, bounded contexts e mapas de contexto
- ✓Entidades, objetos de valor e agregados
- ✓Serviços de domínio e serviços de aplicação
- ✓Camada anticorrupção na comunicação entre contextos
- ✓Namespaces, Zeitwerk e banco compartilhado num monolito Rails
- ✓Como escolher entre CRUD, service objects, monolito com DDD, monolito modular e microsserviços
O que é domain-driven design?
Você já construiu aplicações Rails, já escalou essas aplicações, já projetou sistemas que atendem milhões de requisições. Mesmo assim, toda base de código que cresce acaba batendo na mesma parede: o código deixa de refletir o negócio.
Ler a aula completa grátis →Currículo
7 aulasO que é domain-driven design?
Apresenta o DDD como forma de fazer o código espelhar o negócio, com linguagem ubíqua e design estratégico e tático.
Bounded contexts e mapas de contexto
Explica bounded contexts, os sinais que indicam suas fronteiras e os padrões de mapeamento entre os nove contextos do LMS.
Entidades, objetos de valor e agregados
Diferencia entidades, objetos de valor criados com Data.define e agregados cuja raiz garante as invariantes dos filhos.
Serviços de domínio e serviços de aplicação
Separa serviços de domínio, donos das regras, dos serviços de aplicação, que ordenam os passos de um caso de uso.
Camada Anticorrupção e comunicação cross-context
Mostra como query objects e serviços funcionam como camada anticorrupção nas leituras e escritas entre contextos.
DDD em um monólito Rails
Trata de namespaces com módulos, regras de autoload do Zeitwerk, banco compartilhado com prefixos opcionais e rotas por domínio.
Quando DDD é exagero (e quando não é suficiente)
Situa o DDD num espectro que vai do CRUD puro aos microsserviços e lista os sinais de cada etapa.