Como parte esencial de la arquitectura nativa de la nube, los microservicios son aplicaciones creadas a partir de servicios acoplados de manera débil, que se pueden implementar de forma independiente. Los microservicios normalmente se comunican entre sí mediante protocolos ligeros como HTTP, colas de mensajería o streams de eventos. La arquitectura basada en eventos suele ser la mejor forma de implementar microservicios, ya que fomenta una mayor modularidad, tolerancia a fallos y escalabilidad.
La arquitectura basada en eventos (EDA) es un patrón de diseño de software que permite a los sistemas detectar, procesar, comunicar y responder a eventos en tiempo real. La EDA comunica los eventos en cuanto se producen, lo que permite que cualquier persona, servicio o aplicación basada en eventos que necesite conocer un evento responda en tiempo real.
La mensajería asíncrona y el acoplamiento débil son dos aspectos importantes de la arquitectura basada en eventos. La comunicación asíncrona sustituye a la arquitectura tradicional de “solicitud y respuesta”, en la que los servicios deben esperar una respuesta antes de pasar a realizar una tarea. Esto permite una integración más sencilla y hace que los sistemas sean más escalables, ya que pueden gestionar mayores volúmenes de datos en tiempo real con baja latencia. También permite que los sistemas relacionados se desacoplen o acoplen de forma débil. Esto significa que las aplicaciones y los servicios pueden comunicarse entre sí mediante la publicación y el consumo de eventos sin tener que saber mucho más sobre el otro sistema. Como resultado, los sistemas basados en eventos se pueden ampliar rápidamente y son muy resilientes a los fallos, ya que el sistema puede seguir funcionando incluso si un componente no está disponible. La EDA también es muy adecuada para el procesamiento y la gestión de grandes volúmenes de datos en tiempo real, ya que los componentes pueden reaccionar a los eventos y procesar los datos a medida que llegan sin tener que esperar a un conjunto de datos completo.
¿Qué es un evento?
Un evento es cualquier cambio en el estado de algo dentro de un sistema empresarial: un objeto añadido a un depósito, un nuevo registro agregado a una base de datos, un elemento colocado en un carro de la compra o una contraseña que se ha restablecido. Es algo que ha sucedido en el pasado, normalmente en formato JSON o YAML.
¿Por qué es necesaria una arquitectura basada en eventos?
Todos los procesos empresariales se basan eventos, y la capacidad de reaccionar rápidamente ante los eventos es esencial para la productividad, la eficiencia y la competitividad. Cuanto más rápido puedan obtener las aplicaciones, los servicios y las personas información sobre los eventos, más eficaz será el funcionamiento de una organización.
En este entorno, la arquitectura basada en eventos es importante porque comunica los eventos tan pronto como se producen, en contraste con los enfoques arquitectónicos como las API, que esperan a que los sistemas se actualicen periódicamente.
¿Cuáles son los componentes de la arquitectura basada en eventos?
La arquitectura basada en eventos incluye componentes de software y hardware que se implementan y conectan para proporcionar comunicación y mensajes en tiempo real sobre eventos. Estos componentes incluyen:
- Editores de eventos: estas fuentes de eventos, también conocidas como productores de eventos, generan un evento y luego lo publican en un canal de eventos o bus de eventos.
- Bus de eventos: incluye intermediarios de eventos, colas de mensajes y un canal de eventos. Es la ruta a través de la cual los productores de eventos comunican los eventos a los consumidores de eventos. Los canales de eventos permiten la naturaleza asíncrona y desvinculada de la EDA, lo que mejora la flexibilidad y escalabilidad de los sistemas, así como la organización de los grupos de mensajería relacionados.
Suscriptores de eventos: también conocidos como consumidores de eventos o también como oyentes de eventos, los suscriptores de eventos reciben, procesan y responden a los eventos. Las respuestas pueden implicar aspectos como la actualización de una base de datos, la realización de una tarea, el inicio de un proceso o la generación de nuevos eventos.
¿Cómo funciona la arquitectura basada en eventos?
Estos son los pasos necesarios para comunicar eventos dentro de una arquitectura basada en eventos:
- Un editor de eventos produce un evento y publica esos datos en un canal (o canales) del bus de eventos.
- El suscriptor del evento “escucha” los eventos en el canal o canales que le interesan y responde cuando se publica un evento relevante. Puede desencadenar otros flujos de trabajo, acciones o eventos.
La arquitectura basada en eventos se implementa normalmente en un modelo de publicación/suscripción (pub/sub) o en un modelo de streaming de eventos.
- Pub/sub: en este modelo, también conocido como modelo de mensajería de eventos, los consumidores de eventos se suscriben a una clase de mensajes publicados por los productores de eventos. Cuando los productores publican un evento, la información se comunica a todos los suscriptores que desean consumirla. Esto se realiza normalmente a través de un agente de mensajes que recibe mensajes de eventos, los traduce si es necesario, administra el orden de los mensajes, los pone a disposición de los suscriptores y elimina los mensajes una vez que se han consumido.
- Streaming de eventos: en este modelo, los consumidores de eventos se suscriben a streams de eventos que los editores envían a los agentes y que se registran en registros. En lugar de recibir y consumir cada evento a medida que se publica, los consumidores pueden entrar en el stream en cualquier momento y consumir únicamente los eventos que les interesan. Los eventos se pueden conservar durante un periodo de tiempo, lo que permite a los consumidores recibirlos en cualquier momento. Algunos procesos de streaming de eventos utilizan una plataforma de transmisión de datos como Apache Kafka para gestionar la ingesta, el procesamiento y la transformación del stream de eventos. El streaming de eventos también se puede utilizar para el procesamiento de eventos complejos, en el que los consumidores procesan un gran número de eventos simultáneamente.
¿Cuáles son las ventajas de la arquitectura basada en eventos?
La arquitectura basada en eventos ofrece muchas ventajas a organizaciones de todos los sectores.
- Mayor flexibilidad del sistema: la naturaleza de acoplamiento débil de la arquitectura basada en eventos permite a las organizaciones modificar, añadir o eliminar componentes fácilmente sin que esto afecte a todo el sistema, lo que lo hace adaptable a los continuos cambios de requisitos. Para los desarrolladores, la EDA reduce la complejidad, ya que les permite desglosar los flujos de trabajo monolíticos en una serie de servicios sencillos y desacoplados que se pueden gestionar de manera independiente y comunicar de forma asíncrona mediante mensajes de eventos.
- Escalabilidad mejorada: la EDA admite un escalado horizontal sencillo, lo que permite a las empresas gestionar un aumento de las cargas de trabajo o el tráfico mediante la adición de más instancias de componentes o servicios según sea necesario.
- Mayor resiliencia del sistema: la comunicación asíncrona y los componentes desacoplados de la EDA contribuyen a mejorar la tolerancia a los fallos, ya que un fallo en un componente no provoca necesariamente una interrupción en todo el sistema.
- Capacidades de procesamiento en tiempo real: la EDA permite el procesamiento en tiempo real de grandes volúmenes de datos y patrones de eventos complejos, lo que la hace adecuada para empresas que requieren información o respuestas inmediatas a las condiciones del mundo real que cambian rápidamente.
- Uso optimizado de recursos: al reaccionar a los eventos solo cuando se producen, la EDA ayuda a optimizar la utilización de los recursos y reduce la necesidad de ejecutar continuamente los procesos, lo que puede traducirse en un ahorro de costes y en una mejora de la eficiencia.
- Velocidad más rápida: la EDA puede acelerar sus sistemas, ya que los distintos componentes no tienen que esperarse unos a otros.
¿Cuáles son los casos de uso de la arquitectura basada en eventos?
Entre los casos de uso más comunes de la arquitectura basada en eventos se incluyen:
- Supervisión en tiempo real: en lugar de esperar a los resultados de las comprobaciones y actualizaciones periódicas, la EDA permite a las aplicaciones, los servicios y los equipos recibir alertas inmediatas sobre cualquier anomalía, cambio y actualización de los sistemas.
- Réplica de datos: la EDA facilita el uso compartido de un solo evento entre varios servicios, que pueden copiar sus datos de eventos en varias bases de datos. La EDA también puede coordinar sistemas que operan en diferentes regiones y cuentas.
- Redundancia: cuando un servicio deja de funcionar, los eventos pueden mantenerse dentro de un router hasta que el servicio vuelva a estar activo y pueda consumir eventos de nuevo.
- Procesamiento en paralelo: con la EDA, un solo evento puede activar varios procesos a la vez.
- Integración e interoperabilidad: la arquitectura basada en eventos permite que los sistemas que se ejecutan en diferentes pilas compartan información sin necesidad de estar estrechamente acoplados.
¿Cuáles son algunos ejemplos de arquitectura basada en eventos?
La arquitectura basada en eventos se utiliza en una amplia gama de sectores y sistemas.
- Comercio electrónico: la EDA permite a las empresas de comercio electrónico responder inmediatamente cada vez que se pone un artículo en un carro de la compra, se realiza una compra, se procesa un pago o se envía un paquete.
- IoT: la arquitectura basada en eventos es fundamental para recopilar datos en los sistemas del Internet de las cosas (IoT), lo que activa acciones cuando los dispositivos del IoT detectan determinadas condiciones o métricas.
- Mercado de valores: cuando las condiciones del mercado cambian, la EDA puede activar estrategias de trading automatizadas.
- Análisis en tiempo real: la EDA puede activar instantáneamente el análisis de eventos en tiempo real para detectar fraudes, supervisar el tráfico y tomar mejores decisiones basadas en las condiciones en tiempo real.
- Videojuegos online: la EDA permite que los videojuegos online identifiquen y respondan a eventos como acciones de los jugadores, personajes en movimiento o la finalización de tareas.
- Domótica: los sensores y los dispositivos inteligentes domésticos pueden responder a los cambios de temperatura, movimiento, iluminación y otros eventos.
- Automatización del flujo de trabajo: la EDA permite a las organizaciones automatizar muchos pasos en un flujo de trabajo complejo, donde un evento activa nuevos pasos en un proceso.
Preguntas frecuentes
En los sistemas basados en eventos, el desacoplamiento y el acoplamiento débil son conceptos relacionados. El desacoplamiento es el proceso de eliminar dependencias entre los diferentes componentes del sistema, de modo que ninguno de los componentes depende de otro. Esto permite que los componentes sean más independientes y crea un sistema más flexible y resiliente. El acoplamiento débil es una forma de desacoplamiento que minimiza la dependencia al tiempo que no separa completamente los componentes. Los componentes todavía pueden interactuar entre sí, pero de formas que no crean una dependencia duradera.
La informática sin servidor es un paradigma de computación en el que los desarrolladores pueden acceder a servicios de back-end bajo demanda, lo que les permite centrarse en programar sin tener que preocuparse por la gestión de los servidores y la infraestructura subyacentes. Se basa en una arquitectura basada en eventos, en la que las funciones se activan mediante eventos como solicitudes HTTP, cargas de archivos y actualizaciones de bases de datos para simplificar la arquitectura de la aplicación y mejorar la escalabilidad.
Por qué los clientes eligen Akamai
Akamai es la empresa de ciberseguridad y cloud computing que potencia y protege los negocios online. Nuestras soluciones de seguridad líderes en el mercado, nuestra inteligencia ante amenazas consolidada y nuestro equipo de operaciones globales proporcionan una defensa en profundidad para proteger los datos y las aplicaciones empresariales. Las soluciones integrales de cloud computing de Akamai garantizan el rendimiento y una buena relación calidad-precio en la plataforma más distribuida del mundo. Las grandes empresas confían en Akamai por su fiabilidad, escalabilidad y experiencia inigualables en el sector, idóneas para crecer con seguridad.