Visão Geral
Este curso ensina, de forma prática e aplicada, como unir os princípios de Domain-Driven Design (DDD) com arquiteturas orientadas a eventos utilizando Apache Kafka como backbone. Você aprenderá a modelar domínios complexos, criar bounded contexts, definir eventos de domínio, projetar agregados consistentes e construir sistemas distribuídos altamente desacoplados, escaláveis e evolutivos.
Conteúdo Programatico
Module 1 — Introduction to DDD & Event-Driven Architecture
- DDD strategic vs tactical layers
- EDA fundamentals
- Why DDD and Kafka work well together
Module 2 — Strategic DDD: Understanding the Domain
- Domain discovery techniques
- Subdomains: core, supporting, and generic
- Bounded contexts and context maps
Module 3 — Event Modeling and Event Storming
- Event Storming fundamentals
- Discovering domain events
- Mapping commands, aggregates, and policies
Module 4 — Designing Domain Events for Kafka
- Domain events vs Kafka events
- Event naming conventions
- Event versioning and evolution
- Designing schemas using Schema Registry
Module 5 — Aggregates and Consistency Boundaries
- Aggregate roots and invariants
- Transaction boundaries
- Event-based aggregate persistence
Module 6 — Implementing DDD Tactical Patterns
- Entities, value objects, and domain services
- Factories and repositories
- Domain-centric validation rules
Module 7 — Integrating Bounded Contexts via Kafka
- Context mapping with event streams
- Anti-corruption layer patterns
- Message translation between contexts
Module 8 — Handling Commands & Business Logic
- Command validation patterns
- Generating events from domain logic
- Ensuring idempotency and consistency
Module 9 — Event Publishing & Subscription Patterns
- Outbox pattern for reliability
- CDC-driven event publishing with Debezium
- Choreography vs orchestration
Module 10 — Event Processing with Kafka Streams
- Building projections
- Creating materialized views
- Implementing sagas with Kafka Streams
Module 11 — Resilience and Error Handling
- DLQs and retry strategies
- Managing schema evolution
- Ensuring fault tolerance and reprocessability
Module 12 — Observability in DDD + Kafka Systems
- Tracing domain events end-to-end
- Metrics for aggregates and streams
- Event auditing and replay tracking
Module 13 — Evolving the Domain
- Refactoring bounded contexts
- Business-driven event evolution
- Maintaining backward compatibility
Module 14 — Capstone Project
- Full DDD + Kafka domain design
- Event Storming → bounded context → aggregates
- Implementing command → event → projection flow
- Deploying a production-ready domain-driven event system