Aplicaciones orientadas a eventos

Desarrollo de aplicaciones en AWS

Ricardo Sueiras

Principal Technologist

¿Qué es un evento?

 

aplicaciones orientadas a eventos frente a mensajes

  • Un mensaje es una unidad de trabajo entre componentes.
  • Un evento registra que algo ya ocurrió.
  • Los servicios se comunican publicando eventos.
  • Otros servicios reaccionan a esos eventos de forma independiente.
  • El desacoplamiento reduce dependencias y mejora la escalabilidad.
Desarrollo de aplicaciones en AWS

Productores de eventos

 

productores de eventos

  • Los productores crean y publican eventos cuando hay acciones.
  • Tanto servicios de AWS como apps personalizadas pueden producir eventos.
  • Subir un archivo a Amazon S3 es un ejemplo.
  • Luego Amazon S3 emite un evento de objeto creado.
Desarrollo de aplicaciones en AWS

Consumidores de eventos

 

consumidores

  • Los consumidores reciben y procesan eventos de forma asíncrona.
  • Las fuentes de eventos usan distintos modelos de entrega.
  • Push: los eventos se entregan al instante.
  • Poll: los consumidores recuperan eventos al sondear.
Desarrollo de aplicaciones en AWS

Mapeo de fuentes de eventos

  • AWS Lambda es un consumidor común de eventos.
  • Sondea fuentes y recupera lotes de registros automáticamente.

 

mapeo de fuentes de eventos

Desarrollo de aplicaciones en AWS

Ajuste de mapeos de fuentes en Lambda

  • Ajusta los mapeos para mejorar el rendimiento.
  • Modifica el tamaño de lote para controlar registros por invocación.
  • Configura reintentos para registros con fallo.
  • Usa respuestas parciales de lote en fuentes compatibles.
  • ReportBatchItemFailures evita reprocesar los registros correctos.

 

mapeo de fuentes de eventos

Desarrollo de aplicaciones en AWS

Amazon EventBridge

  • EventBridge enruta eventos entre servicios y aplicaciones.
  • Permite enrutado dinámico sin acoplar en exceso los servicios.
  • Las aplicaciones publican sus eventos en EventBridge.
  • Las reglas deciden qué destinos reciben cada evento.

 

event bridge

Desarrollo de aplicaciones en AWS

Capacidades de EventBridge

 

capacidades

  • EventBridge ofrece varias capacidades de enrutado.
  • Las reglas difunden un evento a muchos destinos.
  • Las reglas programadas evitan servidores cron.
  • Los horarios admiten expresiones rate(), at() y cron().
  • Pipes ofrece integración punto a punto.
  • Pipes también permite filtrado y transformación.
Desarrollo de aplicaciones en AWS

Buses de eventos

 

bus de eventos

  • Distintos buses optimizan cómo se enrutan los eventos.
  • El bus predeterminado recibe eventos de servicios de AWS.
  • Los buses personalizados llevan eventos específicos de la aplicación.
  • Los buses de partners reciben eventos de terceros.
  • Las reglas se sitúan entre cada bus y sus destinos.
Desarrollo de aplicaciones en AWS

Descubrimiento de esquemas

 

esquema y registro de eventos

  • Productores y consumidores suelen evolucionar de forma independiente.
  • Entender la estructura del evento es esencial.
  • El descubrimiento de esquemas captura la estructura de eventos entrantes.
  • Úsalo para inspeccionar cargas de eventos.
  • Úsalo para validar integraciones.
  • Úsalo para generar enlaces para lenguajes compatibles.
Desarrollo de aplicaciones en AWS

Registro de esquemas

  • El registro de esquemas almacena los esquemas de tus eventos.
  • Ayuda a entender la estructura y a generar enlaces.

 

esquema y registro de eventos

Desarrollo de aplicaciones en AWS

Filtrado de eventos

  • Filtrar reduce procesamiento innecesario.
  • Define coincidencias con patrones de eventos JSON.
  • Los patrones solo casan los eventos que quieres.
  • Los sistemas posteriores procesan solo los relevantes.

 

filtrado de eventos

Desarrollo de aplicaciones en AWS

Orden de eventos

  • El orden de eventos no siempre está garantizado.
  • Algunos servicios pueden procesar eventos fuera de secuencia.
  • Usa controles de orden para imponer la secuencia explícitamente.

 

orden de eventos

Desarrollo de aplicaciones en AWS

Archivado y reproducción de eventos

 

archivo y repetición

  • EventBridge puede archivar y reproducir eventos después.
  • Reprodúcelos para recuperarte de fallos.
  • Reprodúcelos para probar nuevos consumidores.
  • Reprodúcelos para reconstruir sistemas posteriores.
Desarrollo de aplicaciones en AWS

Gestión de errores

 

gestión de errores

  • Las apps orientadas a eventos deben gestionar errores con seguridad.
  • Los fallos incluyen eventos duplicados.
    • Procesamiento fallido.
    • Consumidores no disponibles.
  • Diseña consumidores idempotentes siempre que puedas.
Desarrollo de aplicaciones en AWS

DLQ y destinos

 

gestión de errores

  • Usa DLQs para aislar eventos que fallan repetidamente.
  • En EventBridge, las DLQ se configuran por destino de regla, no por función.
  • Lambda Destinations amplía este enrutado.
  • Destinations enruta resultados de éxito y de fallo.
Desarrollo de aplicaciones en AWS

Pruebas y validación de eventos

  • Probar apps orientadas a eventos valida el enrutado.
  • También valida el filtrado.
  • También valida los reintentos.
  • Confirma el procesamiento en sistemas distribuidos.
  • Usa AWS SAM para generar eventos de prueba.
  • Los eventos de muestra replican el JSON exacto.

 

pruebas

Desarrollo de aplicaciones en AWS

Qué probar

  • SAM te permite probar en local antes de desplegar.
  • Valida la coincidencia de patrones de eventos.
  • Valida el comportamiento de reintentos.
  • Valida escenarios de limitación (throttling).
  • Valida la entrega de eventos duplicados.
  • Valida el comportamiento idempotente del consumidor.

 

pruebas

Desarrollo de aplicaciones en AWS

¡Vamos a practicar!

Desarrollo de aplicaciones en AWS

Preparing Video For Download...