Llegamos a ustedes gracias a:



Columnas de opinión

Arquitecturas basadas en eventos: ¿Por qué son importantes?

Por: Isaac Sacolick, presidente de StarCIO

[14/06/2019] Las organizaciones de desarrollo que perciben el cambio de los patrones de acceso basados en el usuario a los controlados por la máquina en las APIs y los servicios, deben tomar en consideración las arquitecturas basadas en eventos. Estas arquitecturas permiten el desacoplamiento de los servicios basados en reglas, a microservicios que consumen y comparten datos basados en eventos. Son un enfoque capaz de manejar grandes volúmenes de transacciones complejas, en tiempo real, entre dispositivos IoT, flujos de datos, sistemas de flujo de trabajo y otros servicios que detectan y reaccionan ante condiciones cambiantes.

Haciendo un recuento de las últimas dos décadas de las arquitecturas basadas en Internet, puede comprender mejor por qué las arquitecturas basadas en eventos son más importantes hoy en día.

La mayoría de los desarrolladores están familiarizados con las arquitecturas web de dos y tres niveles, diseñadas para administrar las experiencias de los usuarios, procesar la lógica empresarial, e interactuar con las APIs del backend y las fuentes de datos. Para soportar este tipo de aplicaciones, existen patrones maduros como el model-view-controller (MVC), que cuentan con marcos implementados en muchas plataformas.

Los desarrolladores aprendieron rápidamente que separar la lógica de negocios de la presentación era importante para incrementar el desarrollo de aplicaciones. Muchas organizaciones evolucionaron hacia APIs de ingeniería como parte del desarrollo de aplicaciones móviles, y algunas introdujeron buses de servicio para ayudar a organizar transacciones de múltiples etapas, así como flujos de trabajo a través de estas APIs.

Estos son los primeros pasos para las demandas arquitectónicas de hoy en día, donde los usuarios ya no son los principales clientes de las APIs. Existen muchas más aplicaciones, servicios de datos y sensores, tanto internos como externos a la organización. Estos sensores son los principales clientes de las APIs y servicios. Cuando se diseñan como microservicios, capacitados para detectar y reaccionar ante eventos de un ecosistema de servicios integrados, estos servicios son más capaces y reutilizables para soportar necesidades comerciales nuevas y cambiantes. Es por esto por lo que las arquitecturas basadas en eventos son importantes hoy en día.

Definido: ¿Qué es una arquitectura dirigida por eventos?

Una manera fácil de entender las arquitecturas controladas por eventos es definir los servicios basados en patrones de eventos de input y output:

  • Servicios que generan nuevos eventos, como sensores, el input de los usuarios y los flujos de datos.
  • Servicios que generan eventos a través de cambios de estado. Los ejemplos incluyen transiciones basadas en la fecha, como la expiración de suscripciones o las alarmas de activación.
  • Servicios que en gran parte procesan y consumen eventos, como pantallas y paneles.

Martin Fowler proporciona descripciones más completas de los tipos de eventos que diferencian las capacidades realizadas por los servicios. Por ejemplo, las notificaciones de eventos se transmiten sin procesar la respuesta, los estados transportados del evento transmiten los detalles completos del evento, y los servicios de contratación de eventos registran los cambios de estado.

Luego existen diferentes topologías, dependiendo de cómo se distribuya la lógica empresarial. Por ejemplo, una topología de mediador puede ser apropiada si la arquitectura requiere que un sistema centralizado procese eventos no procesados para luego redistribuir los eventos de cambio posteriores.

Existen consideraciones operativas al diseñar arquitecturas basadas en eventos, incluidos los factores de escalabilidad, los requisitos de latencia, los niveles de servicio, los factores de rendimiento, los requisitos de seguridad y los requisitos de manejo de errores.

Los tipos de eventos, la topología y las consideraciones operativas son factores que influyen en el diseño de la arquitectura.

Ejemplos de casos de uso basados en eventos

Existen muchas oportunidades de negocios que se alinean bien con las arquitecturas basadas en eventos. Hablé con varios CTO líderes en empresas de tecnología sobre arquitecturas basadas en eventos, para comprender mejor los tipos de patrones y aplicaciones.

Paul Butterworth, director de tecnología de Vantiq, proveedor de plataformas basada en eventos, sugiere que las empresas digitales aborden las oportunidades de negocio en tiempo real, mediante el desacoplamiento de los eventos de una unidad de negocios que puede tener valor para otros. Él afirma: "La empresa digital en tiempo real se modela naturalmente como eventos que ocurren en toda la empresa y las acciones tomadas en respuesta a esos eventos. La clave para la industria digital es que un evento puede ocurrir en una unidad de negocios, y a la vez una cantidad de unidades de negocios independientes respondan al evento de forma independiente y asincrónica.

Un ejemplo de esto es cuando varias empresas interactúan con segmentos de clientes comunes, pero venden productos y servicios diferentes. Cada punto de contacto del cliente con una unidad de negocio genera eventos que las unidades de negocio subscritas pueden consumir. Debido a que cada unidad puede determinar cómo usar la información de eventos de interés, el desacoplamiento facilita que las unidades de negocios mejoren las ventas o la experiencia del cliente. Una consideración importante de la implementación es determinar los derechos de acceso y los derechos sobre quién debe obtener acceso a qué eventos y con qué tipos de datos.

Una segunda necesidad empresarial es la de procesos empresariales complejos que gestionan los cambios de estado. Karthik Ramasamy, el cofundador de Streamlio, una plataforma de servicios de eventos, sugiere: "La arquitectura basada en eventos es valiosa para las aplicaciones donde la velocidad de respuesta a los eventos es crítica, o donde los eventos de procesamiento proporcionan una manera más eficiente de rastrear y actualizar el estado. Por ejemplo, la integración de microservicios a menudo se correlaciona con la arquitectura basada en eventos.

Considere las cadenas de abastecimiento complejas donde múltiples componentes se fabrican en diferentes ubicaciones y por distintos proveedores. Con una arquitectura basada en eventos:

  • Los sistemas del proveedor emiten información en tiempo real sobre su estado de producción.
  • Los sistemas de gestión capturan eventos de forma asíncrona y emiten órdenes de producción.
  • Los sistemas de flujos descendentes de los proveedores capturan las órdenes de producción y ajustan su producción.

Greg Luck, CTO de Hazelcast, proveedor de redes integradas en la memoria, afirma: "Las arquitecturas basadas en eventos invierten la práctica normal de acumular datos y consultarlos. Los eventos son los datos y se procesan en el momento. Esto requiere mensajería e infraestructura de transmisión para procesar esos datos. También puede acompañarse con una red de datos integrada en la memoria para un rápido enriquecimiento y almacenamiento de resultados.

Esto ilustra un conjunto de aplicaciones completamente nuevo, capaz de desarrollarse en función de eventos en tiempo real, donde los datos se transmiten a múltiples consumidores. Considere autos que se conducen por sí mismos, que transmiten y consumen eventos en tiempo real, y donde las decisiones de manejo no pueden permitirse la latencia de almacenar y recuperar información.

Creación de arquitecturas basadas en eventos en las empresas

Michael J. Morton, CTO del integrador de servicios en la nube, Dell Boomi, ofrece sugerencias sobre cómo las organizaciones más grandes deberían pensar en incorporar arquitecturas basadas en eventos: "Las organizaciones que crean una arquitectura dirigida por eventos para respaldar proyectos clave actuales, deberían dar un paso atrás y pensar en la integración, distribución y gestión de los eventos en toda la empresa. Donde alguna vez fue una práctica común que las empresas dirigieran su negocio mediante el procesamiento por lotes, hoy resulta insuficiente para tener éxito y completar su viaje de transformación digital.

La implicación es que las arquitecturas basadas en eventos pueden aplicarse con un alcance limitado cuando se instituyen en empresas que tienen procesamiento por lotes o integraciones con sistemas empresariales y plataformas SaaS que no están controladas por eventos.

Al igual que la mayoría de los cambios en la arquitectura, seleccionar las plataformas adecuadas, comenzar de a poco, demostrar valor y refactorizar colectivamente las capacidades es una buena forma de desarrollar de forma iterativa las arquitecturas basadas en eventos.

Isaac Sacolick es el autor de Driving Digital: The Leader's Guide to Business Transformation through Technology, que abarca muchas prácticas como metodología ágil, devops y ciencia de datos que son fundamentales para el éxito de los programas de transformación digital. Sacolick es uno de los CIO sociales más reconocidos, un bloguero de amplia trayectoria en Social, Agile and Transformation y CIO.com, también es presidente de StarCIO.