Kaique Mitsuo Silva Yamamoto
Arquitetura software

Arquitetura Orientada a Eventos (EDA)

Visão consolidada do ecossistema de Event-Driven Architecture: padrões, brokers, plataformas cloud e estudos de caso. Baseado em documentação oficial e práticas de mercado.


Conceito

Arquitetura orientada a eventos é um padrão em que serviços desacoplados publicam, consomem ou roteiam eventos (mudanças de estado ou atualizações) em vez de se comunicarem por requisições diretas.

Componentes: producers, routers (brokers/buses), consumers.

Benefícios: escalabilidade independente, tolerância a falhas, processamento em tempo real, auditoria centralizada, maior agilidade.


Padrões principais

PadrãoDescrição
Event SourcingEstado da aplicação modelado como sequência imutável de eventos em um log. Histórico completo, replay, auditoria. Confluent: conexão com Kafka
CQRSSeparação de comandos (escrita) e queries (leitura) em modelos distintos. Cada um otimizado para seu caso de uso.
SagaPadrão de coordenação para transações distribuídas. Orquestra transações locais e ações de compensação em caso de falha. Saga e Outbox (Medium)
Transactional OutboxGarante consistência: eventos gravados em tabela outbox na mesma transação do domínio; publicação assíncrona evita perda de eventos.
Change Data Capture (CDC)Captura mudanças em bancos de dados e publica como eventos. Ex.: Debezium.

Brokers e message buses

PlataformaModeloPontos fortesEstudo de caso
Apache KafkaLog distribuído, "smart consumer"Alto throughput, replay, streaming. Ideal para analytics, IoT, fraud detection.Walmart: replenishment em tempo real, Deutsche Bahn: informações a passageiros
RabbitMQFilas, "smart broker"Roteamento rico (direct, topic, fanout), menor overhead operacional. Bom para orquestração de microserviços.Event Sourcing + CQRS (SlideShare)
Apache PulsarBrokers + BookKeeperSeparação storage/compute, streaming e filas, tiered storage. Adequado para cloud-native.Benchmark Kafka vs Pulsar vs RabbitMQ (Confluent)
Redis StreamsLog leveSimplicidade, baixa latência. Bom para filas e pub/sub leves.
Apache EventMeshServerlessCloudEvents, conectores Kafka/Pulsar/RabbitMQ/Redis. Workflows serverless. Docs

Plataformas cloud (event buses)

ServiçoProvedorPropósito
Amazon EventBridgeAWSEvent bus serverless, roteamento de eventos AWS, SaaS e custom. Suporta CloudEvents. Estudo: MSK + EventBridge
Azure Event GridMicrosoftEventos de recursos Azure e custom. Suporta CloudEvents v1.0.
Google Cloud EventarcGCPEventos de serviços GCP e terceiros. Managed, duas edições.
Alibaba EventBridgeAlibabaEvent bus serverless, CloudEvents.
Tencent EventBridgeTencent CloudEvent management, CloudEvents.

Especificação CloudEvents

CloudEvents (CNCF) define um formato comum para dados de evento. Facilita interoperabilidade entre provedores e ferramentas.

  • SDKs: Go, Java, JavaScript, C#, Python, Ruby, PHP, Rust
  • Adotores: AWS EventBridge, Azure Event Grid, GCP Eventarc, Knative, Tekton, Debezium, Kafka, RabbitMQ (via conectores)

Frameworks e integrações

TecnologiaUso em EDA
Spring Cloud StreamAbstração sobre Kafka/RabbitMQ
Spring for Apache KafkaCliente Kafka nativo
Spring AMQPRabbitMQ
DebeziumCDC → eventos (CloudEvents)
Knative EventingEventos em Kubernetes, CloudEvents
Argo EventsAutomação event-driven em K8s
Serverless WorkflowOrquestração de workflows, CloudEvents

Quando escolher o quê

CenárioSugestão
Alto throughput, replay, analyticsKafka (ou Amazon MSK)
Roteamento rico, orquestraçãoRabbitMQ
Serverless, integração AWS/SaaSEventBridge
Kubernetes, CloudEventsKnative Eventing, Argo Events
CDC de bancos de dadosDebezium + Kafka

Nota: Combinar tecnologias é comum (ex.: Kafka para streaming + EventBridge para eventos de negócio).


Recursos