No history yet

Arquitectura Basada en Eventos

Arquitectura Basada en Eventos

En lugar de que los sistemas se llamen directamente entre sí, creando una cadena de dependencias, la Arquitectura Basada en Eventos (EDA, por sus siglas en inglés) funciona de manera diferente. Imagina que en lugar de llamar a alguien por teléfono y esperar a que responda, le dejas un mensaje en un buzón. La persona puede recoger el mensaje cuando esté disponible y actuar en consecuencia. Tú, mientras tanto, ya estás libre para hacer otras cosas.

En el software, este "mensaje" es un evento. Un evento es una señal que indica que algo ha ocurrido: un usuario se ha registrado, se ha subido un archivo o se ha procesado un pago. Los servicios reaccionan a estos eventos en lugar de esperar órdenes directas. Este enfoque crea sistemas más flexibles y , donde los componentes pueden evolucionar de forma independiente.

Productores y Consumidores

En una EDA, hay dos roles principales: productores y consumidores.

Un productor es cualquier servicio que origina un evento. No sabe (ni le importa) quién escuchará ese evento o qué sucederá a continuación. Su única responsabilidad es anunciar que algo ha pasado.

Un consumidor es un servicio que se suscribe a ciertos tipos de eventos y reacciona cuando ocurren. Puede haber múltiples consumidores para un solo tipo de evento, cada uno realizando una tarea diferente.

Un ejemplo clásico en AWS es un flujo de procesamiento de imágenes. Un usuario sube una foto a un bucket de Amazon S3. El servicio S3 actúa como el productor, emitiendo un evento ObjectCreated:Put. Un servicio como AWS Lambda puede actuar como consumidor, activándose automáticamente para redimensionar la imagen en varios tamaños.

El productor (S3) no invoca directamente a la función Lambda. Simplemente emite su evento a la plataforma de AWS. El sistema de eventos de AWS se encarga de dirigir ese evento a cualquier consumidor que se haya suscrito, en este caso, nuestra función Lambda. Podríamos añadir fácilmente un segundo consumidor, como una función que analice la imagen en busca de contenido inapropiado, sin tener que modificar nada en el lado del productor.

Escalabilidad y Resiliencia

Dos de los mayores beneficios de este modelo son la escalabilidad y la resiliencia.

Escalabilidad horizontal: Si de repente miles de usuarios suben fotos al mismo tiempo, el sistema no se colapsa. En su lugar, AWS puede ejecutar miles de instancias de la función Lambda en paralelo para procesar la avalancha de eventos. La capacidad de los consumidores aumenta para satisfacer la demanda sin afectar a los productores. Esto es mucho más eficiente que escalar un único servidor monolítico que tiene que hacer todo el trabajo.

Tolerancia a fallos: ¿Qué pasa si la función Lambda que redimensiona las imágenes falla por un error inesperado? En una arquitectura tradicional, la solicitud original del usuario podría fallar. En una EDA bien diseñada, el evento no se pierde. Servicios como Amazon SQS (Simple Queue Service) pueden actuar como un intermediario, guardando los eventos en una cola hasta que el consumidor esté listo y sea capaz de procesarlos correctamente. Si un procesamiento falla, el evento puede ser reintentado automáticamente.

Lesson image

Este enfoque convierte los fallos de un componente en simples retrasos, no en caídas catastróficas del sistema completo. La aplicación sigue funcionando y los datos no se pierden, lo que crea una base mucho más robusta para aplicaciones complejas.

Quiz Questions 1/5

En una Arquitectura Basada en Eventos (EDA), ¿cuál es la principal ventaja de que los servicios productores no llamen directamente a los servicios consumidores?

Quiz Questions 2/5

En el ejemplo del procesamiento de imágenes en AWS, un usuario sube una foto a S3, y una función Lambda la redimensiona. ¿Qué rol cumple el servicio Amazon S3 en este escenario?