Aplicações orientadas a eventos

Desenvolvendo Aplicações na AWS

Ricardo Sueiras

Principal Technologist

O que é um evento?

 

event-vs-messages

  • Uma mensagem é uma unidade de trabalho enviada entre componentes.
  • Um evento registra que algo já aconteceu.
  • Os serviços se comunicam publicando eventos.
  • Outros serviços reagem a esses eventos de forma independente.
  • O desacoplamento reduz dependências e melhora a escalabilidade.
Desenvolvendo Aplicações na AWS

Produtores de eventos

 

event producers

  • Produtores criam e publicam eventos quando ações ocorrem.
  • Serviços AWS e apps personalizados podem produzir eventos.
  • Enviar um arquivo para o Amazon S3 é um exemplo.
  • O Amazon S3 então emite um evento de criação de objeto.
Desenvolvendo Aplicações na AWS

Consumidores de eventos

 

consumers

  • Consumidores recebem e processam eventos de forma assíncrona.
  • Fontes de eventos usam modelos de entrega diferentes.
  • Push: eventos são entregues imediatamente.
  • Poll: consumidores buscam eventos quando consultam.
Desenvolvendo Aplicações na AWS

Mapeamento de fonte de eventos

  • AWS Lambda é um consumidor de eventos comum.
  • Ele consulta fontes e recupera lotes de registros automaticamente.

 

event source mapping

Desenvolvendo Aplicações na AWS

Ajustando mapeamentos de fonte no Lambda

  • Ajuste mapeamentos para melhorar a vazão.
  • Ajuste o tamanho do lote para controlar registros por invocação.
  • Configure novas tentativas para registros com falha.
  • Use respostas parciais de lote em fontes compatíveis.
  • ReportBatchItemFailures evita reprocessar registros bem-sucedidos.

 

event source mapping

Desenvolvendo Aplicações na AWS

Amazon EventBridge

  • EventBridge roteia eventos entre serviços e aplicações.
  • Permite roteamento dinâmico sem forte acoplamento.
  • Aplicações publicam seus eventos no EventBridge.
  • Regras de roteamento decidem quais alvos recebem cada evento.

 

event bridge

Desenvolvendo Aplicações na AWS

Recursos do EventBridge

 

capabilities

  • O EventBridge oferece vários recursos de roteamento.
  • Regras distribuem um evento para muitos alvos.
  • Regras agendadas eliminam a necessidade de servidores cron.
  • Agendamentos suportam expressões rate(), at() e cron().
  • Pipes oferecem integração ponto a ponto.
  • Pipes também permitem filtragem e transformação.
Desenvolvendo Aplicações na AWS

Buses de eventos

 

event bus

  • Diferentes buses de eventos otimizam o roteamento.
  • O bus padrão recebe eventos de serviços AWS.
  • Buses personalizados carregam eventos específicos de aplicações.
  • Buses de parceiros recebem eventos de provedores terceirizados.
  • Regras ficam entre cada bus e seus alvos.
Desenvolvendo Aplicações na AWS

Descoberta de esquemas

 

event schema and registry

  • Produtores e consumidores costumam evoluir de forma independente.
  • Entender a estrutura do evento é essencial.
  • A descoberta de esquema captura a estrutura de eventos recebidos.
  • Use para inspecionar os payloads dos eventos.
  • Use para validar integrações.
  • Use para gerar bindings para linguagens compatíveis.
Desenvolvendo Aplicações na AWS

Registro de esquemas

  • O registro de esquemas armazena seus esquemas de eventos.
  • Ajuda desenvolvedores a entender a estrutura e gerar bindings.

 

event schema and registry

Desenvolvendo Aplicações na AWS

Filtragem de eventos

  • Filtragem reduz processamento desnecessário.
  • Defina correspondências com padrões de evento em JSON.
  • Padrões combinam só os eventos que você quer.
  • Sistemas a jusante processam apenas eventos relevantes.

 

event filtering

Desenvolvendo Aplicações na AWS

Ordenação de eventos

  • A ordem dos eventos nem sempre é garantida.
  • Alguns serviços podem processar fora de sequência.
  • Use controles de ordenação para impor a sequência.

 

event ordering

Desenvolvendo Aplicações na AWS

Arquivando e reproduzindo eventos

 

archiving and replaying

  • O EventBridge pode arquivar e reproduzir eventos depois.
  • Reproduza eventos para recuperar falhas.
  • Reproduza eventos para testar novos consumidores.
  • Reproduza eventos para reconstruir sistemas a jusante.
Desenvolvendo Aplicações na AWS

Tratamento de erros

 

handling errors

  • Apps orientadas a eventos devem tratar erros com segurança.
  • Falhas incluem eventos duplicados.
    • Processamento com falha.
    • Consumidores indisponíveis.
  • Projete consumidores idempotentes sempre que possível.
Desenvolvendo Aplicações na AWS

DLQs e destinations

 

handling errors

  • Use DLQs para isolar eventos que falham repetidamente.
  • No EventBridge, DLQs são configuradas por alvo da regra, não por função.
  • Lambda Destinations ampliam esse roteamento.
  • Destinations roteiam resultados de sucesso e falha.
Desenvolvendo Aplicações na AWS

Testando e validando eventos

  • Testar apps orientadas a eventos valida o roteamento.
  • Também valida a filtragem de eventos.
  • Também valida novas tentativas.
  • Confirma o processamento em sistemas distribuídos.
  • Use AWS SAM para gerar eventos de teste.
  • Eventos de exemplo replicam o JSON exato de saída.

 

testing

Desenvolvendo Aplicações na AWS

O que testar

  • O SAM permite testar localmente antes do deploy.
  • Validar correspondência de padrões de evento.
  • Validar comportamento de novas tentativas.
  • Validar cenários de limitação (throttling).
  • Validar entrega de eventos duplicados.
  • Validar comportamento idempotente do consumidor.

 

testing

Desenvolvendo Aplicações na AWS

Vamos praticar!

Desenvolvendo Aplicações na AWS

Preparing Video For Download...