¿Qué es la arquitectura basada en eventos?

Sistemas desacoplados que se ejecutan en respuesta a eventos

La arquitectura basada en eventos utiliza eventos para desencadenar y establecer comunicación entre servicios desacoplados, y es común en las aplicaciones modernas creadas con microservicios. Un evento es un cambio de estado, o una actualización, como un elemento que se coloca en un carro de compras de un sitio web de comercio electrónico. Los eventos pueden llevar el estado (el elemento comprado, su precio y una dirección de entrega) o pueden ser identificadores (una notificación de que se envió una orden).

Las arquitecturas impulsadas por eventos tienen tres componentes clave: procedimientos de eventos, enrutadores de eventos y consumidores de eventos. Un productor publica un evento para el enrutador, que filtra y envía los eventos a los consumidores. Los servicios del productor y los servicios del consumidor se desacoplan, lo que les permite escalarse, actualizarse e implementarse de manera independiente.

AWS Online Tech Talks

How to use Amazon EventBridge to build decoupled, event-driven architectures | Serie de videos de demostración

Conozca los fundamentos de las arquitecturas basadas en eventos y comience a utilizar EventBridge, incluida la creación de un bus de eventos, configuración de orígenes de eventos SaaS y mucho más.

Beneficios de una arquitectura basada en eventos

Escalado y errores por separado

Al desacoplar los servicios, estos solo conocen el enrutador de eventos, no los demás. Esto significa que sus servicios son interoperables, pero si un servicio tiene un error, el resto seguirá funcionando. El enrutador de eventos actúa como un búfer elástico que se adapta a los aumentos repentinos de las cargas de trabajo.

Desarrollar con agilidad

Ya no es necesario escribir código personalizado para sondear, filtrar y enrutar eventos; el enrutador de eventos filtrará y enviará automáticamente los eventos a los consumidores. El enrutador también elimina la necesidad de una fuerte coordinación entre los servicios productores y consumidores, acelerando su proceso de desarrollo.

Auditar con facilidad

Un enrutador de eventos actúa como una ubicación centralizada para auditar su aplicación y definir políticas. Estas políticas pueden restringir quién puede publicar y suscribirse a un enrutador, y controlar qué usuarios y recursos tienen permiso para acceder a sus datos. También puede cifrar sus eventos tanto en tránsito como en reposo.

Reducción de costos

Las arquitecturas basadas en eventos son de tipo push, por lo que todo ocurre bajo demanda cuando el evento se presenta en el enrutador. De este modo, no tiene que pagar por el sondeo continuo para comprobar si hay un evento. Esto significa menos consumo de ancho de banda de la red, menos consumo de CPU, menos capacidad de flota ociosa y menos handshakes SSL/TLS.

Cómo funciona: arquitectura de ejemplo

Este es un ejemplo de arquitectura basada en eventos para un sitio de comercio electrónico. Esta arquitectura permite que el sitio reaccione a los cambios procedentes de diversas fuentes durante los momentos de mayor demanda, sin que se bloquee la aplicación ni se sobreaprovisionen recursos.

Cuándo utilizar esta arquitectura

Replicación de datos entre cuentas y regiones

Puede utilizar una arquitectura basada en eventos para coordinar sistemas entre equipos que operan y se implementan en diferentes regiones y cuentas. Al utilizar un enrutador de eventos para transferir datos entre sistemas, puede desarrollar, escalar e implementar servicios independientemente de otros equipos.

Supervisión del estado de los recursos y alertas

En lugar de comprobar continuamente los recursos, puede utilizar una arquitectura basada en eventos para supervisar y recibir alertas sobre cualquier anomalía, cambio o actualización. Estos recursos pueden incluir buckets de almacenamiento, tablas de bases de datos, funciones sin servidor, nodos de computación, etc.

Procesamiento en paralelo y distribución ramificada

Si tiene muchos sistemas que necesitan operar en respuesta a un evento, puede utilizar una arquitectura basada en eventos que permita distribuir el evento sin tener que escribir código personalizado para enviarlo a cada consumidor. El enrutador enviará el evento a los sistemas, cada uno de los cuales puede procesar el evento en paralelo con un propósito diferente.

Integración de sistemas heterogéneos

Si tiene sistemas que se ejecutan en diferentes pilas, puede utilizar una arquitectura basada en eventos para compartir información entre ellos sin acoplarse. El enrutador de eventos establece la indirección y la interoperabilidad entre los sistemas, para que puedan intercambiar mensajes y datos sin dejar de ser independientes.


¿Debe utilizar una arquitectura basada en eventos?

Las arquitecturas basadas en eventos son ideales para mejorar la agilidad y moverse con rapidez. Se encuentran habitualmente en las aplicaciones modernas que utilizan microservicios o en cualquier aplicación que tenga componentes desacoplados. Al adoptar una arquitectura basada en eventos, es posible que tenga que replantearse la forma de ver el diseño de su aplicación. Para prepararse para el éxito, considere lo siguiente:

• La durabilidad de su fuente de eventos. La fuente de eventos debe ser fiable y garantizar la entrega si necesita procesar cada uno de los eventos. 

• Los requisitos de control del rendimiento. La aplicación debe ser capaz de manejar la naturaleza asíncrona de los enrutadores de eventos. 

• El seguimiento del flujo de eventos. La indirección que introduce una arquitectura basada en eventos permite el seguimiento dinámico a través de servicios de supervisión, pero no el seguimiento estático a través del análisis del código. 

• Los datos de su fuente de eventos. Si necesita reconstruir el estado, su fuente de eventos debe estar deduplicada y ordenada.

¿Por dónde comenzar?

Existen dos tipos principales de enrutadores que se utilizan en las arquitecturas basadas en eventos: los buses de eventos y los temas de eventos. En AWS, ofrecemos Amazon EventBridge para crear buses de eventos y Amazon Simple Notification Service (SNS) para crear temas de eventos.

Amazon EventBridge se recomienda cuando desee crear una aplicación que reaccione a los eventos de las aplicaciones SaaS, los servicios de AWS o las aplicaciones personalizadas. EventBridge usa un esquema predefinido para los eventos y le permite crear reglas que se aplican a todo el cuerpo del evento para filtrarlo antes de enviarlo a los consumidores.

Amazon SNS se recomienda cuando quiera crear una aplicación que reaccione a eventos de alto rendimiento y baja latencia publicados por otras aplicaciones, microservicios o servicios de AWS, o para aplicaciones que necesiten una gran difusión (miles o millones de puntos de conexión). Los temas de SNS son independientes del esquema de eventos que se publiquen.

Regístrese para obtener una cuenta gratuita

Obtenga acceso instantáneo a la capa gratuita de AWS. 

Registrarse