DEV Community

Eduardo Santos
Eduardo Santos

Posted on

1

Construyendo APIs Serverless Resilientes: Webhook Gateway con Amazon EventBridge

Las arquitecturas distribuidas tienen un componente fundamental, el webhook se convirtió en ese componente para la integración de sistemas en tiempo real. Sin embargo, representa varios desafíos: ¿Cómo manejamos los picos de tráfico?, ¿Cómo garantizamos la entrega confiable de los mensajes?, ¿Qué sucede cuando los sistemas downstream están caídos?

Exploraremos como construir un webhook serverless utilizando los servicios de AWS, que no solo resuelve los desafíos anteriormente listados, sino que también nos proporciona escalabilidad y tolerancia a los fallos.

Es importante mencionar que con la propuesta de esta arquitectura permitiremos que no se sobrepase el soft limit de la ejecución de lambdas que tiene por defecto AWS (1000 funciones lambdas ejecutándose al mismo tiempo).

¿Por qué una arquitectura Serverless para webhooks?
Los webhooks por su naturaleza son de trafico impredecible, por lo cual, las arquitecturas Serverless son particularmente idóneas para este caso de uso. Asimismo, no es necesario mantener servidores a la espera de eventos para manejar los picos ocasionales de tráfico, y solo pagamos por lo que usamos.

Arquitectura por desarrollar:

Image description

  1. API Gateway endpoint: Validara el payload y preparara los headers necesarios para llamar al EventBridge Bus.
  2. EventBridge Bus: Distribuye los eventos enviados por el API Gateway hacia las reglas de eventbridge.
  3. EventBridge Rule: Se evalúa cada evento recibido desde el EB Bus, y se determinan hacia donde debe de enviarse basado en los patrones del evento.
  4. Cola SQS Standard: Actúa como un buffer y garantiza el procesamiento de mensajes y el manejo de picos de tráficos.
  5. DLQ SQS Standard: Captura los eventos que fallan después de 3 reintentos, permite el análisis posterior de eventos fallidos y con posibilidad de reprocesamiento manual si es necesario.
  6. Función Lambda: Procesa los mensajes de la cola SQS de forma asíncrona y escalable de los eventos.

Explicación del código
API Gateway endpoint

Image description
Source: Este campo se valida como prefijo en las reglas de eventbridge para saber cuales deben dejar pasar el evento.

EventBridge Rule

Image description

Suscripcion Función Lambda

Image description

Beneficios de esta Arquitectura

  1. Resiliencia: El uso de SQS y DLQ garantiza que ningún mensaje se pierda
  2. Escalabilidad: La arquitectura serverless escala automáticamente
  3. Control de Costos: Solo pagamos por el procesamiento real
  4. Mantenibilidad: Cada componente tiene una responsabilidad única
  5. Observabilidad: Fácil monitoreo mediante CloudWatch

El código fuente completo lo podrás encontrar en el siguiente enlace: Repositorio de Github
Para el despliegue completo de esta solución se requiere tener:

  • Un bucket donde almacenar los stacks anidados.
  • Un parameter store con el nombre del bucket.
  • Los secretos necesarios de AWS para poder desplegar la solución.

Sentry blog image

How I fixed 20 seconds of lag for every user in just 20 minutes.

Our AI agent was running 10-20 seconds slower than it should, impacting both our own developers and our early adopters. See how I used Sentry Profiling to fix it in record time.

Read more

Top comments (0)

Billboard image

Deploy and scale your apps on AWS and GCP with a world class developer experience

Coherence makes it easy to set up and maintain cloud infrastructure. Harness the extensibility, compliance and cost efficiency of the cloud.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay