La Event-Driven Architecture (EDA, por sus siglas en inglés) es uno de los más recientes pasos en la evolución de los microservicios y las tecnologías que no dependen de servidores. Es un paradigma de diseño computacional que se opone a la clásica arquitectura cliente/servidor y que podría acelerar de forma impetuosa procesos en marcos de operación como IoT e Inteligencia Artificial. ¿Pero qué la caracteriza y qué organizaciones pueden aprovecharla?
En pocas palabras, la EDA es una arquitectura en la que el software ejecuta una acción al recibir una o más notificaciones de “eventos”. No es la información, la data, la que está al centro de la lógica de operación del software, sino la concatenación de eventos que requieren una respuesta específica: es un paradigma completamente distinto a (y en condiciones ideales mucho más rápido que) la lógica secuencial del software que se utiliza masivamente en la actualidad.
Un programa orientado por eventos está diseñado para reaccionar. Dicha respuesta se da ante interacción específica del usuario, ya sea que este dé un click, que navegue por una lista y entre a una caja de diálogo, entre otras.
Este tipo de programación ofrece al usuario respuestas rápidas y adecuadas a lo que busca, lo que se traduce en una mejor experiencia para él. Al seguir lo que el usuario va haciendo y responder a su interacción se crea la sensación de que hay un entendimiento entre ambos y esto es benéfico para el negocio.
Los analistas Blueberry Consultants afirman que el futuro de los negocios digitales está una convergencia digital, inteligente y expandida compuesta por aplicaciones dirigidas por eventos, IoT, cloud, blockchain, almacenamiento en memoria e inteligencia artificial. Gartner concuerda con este pronóstico, y asegura que para 2020 los usuarios demandarán que 8% de las aplicaciones digitales de los negocios sean en tiempo real y con un enfoque basado en eventos.
Blueberry Consultants ejemplifica como eventos la recepción de un mensaje HTML (en un servidor web), cuando se presiona una tecla (en el editor de texto), cuando una solicitud de crédito se acepta o rechaza, cuando se tiene listo el nuevo rol de guardias en un hospital para distribuir al personal, o cuando en un juego de carreras de autos un vehículo golpea a otro.
Si bien, los programas event-driven pueden escribirse en cualquier lenguaje de programación, casi todos soportan orientación a objetos, como Visual Basic, Visual C++ y Java.
Entre las ventajas que tiene el modelo event-driven están el entendimiento de los programas en el mundo real, que su mantenimiento y expansión son fáciles y su documentación y diseño son accesibles. En contraparte, utiliza una gran cantidad de código y hay que anticiparse a posibles errores del usuario, ya que un error en la interacción usuario-programa puede echar todo por tierra.
Un ejemplo: un menú con los botones 1 y 2. Cuando un usuario pulsa botón 1, el programa se encarga de recoger ciertos parámetros que están almacenados en un fichero y calcular algunas variables. Al pulsar el botón 2, se le muestran las variables por pantalla al usuario. Si este oprime el segundo botón sin haber interactuado con el primero odría ser un error en el programa. La arquitectura basada en eventos obliga a prever esta situación y hacer inaccesible pasar al botón 2 si no se ha tocado primero el botón 1.
Mucha información, muy rápido
En la actualidad, las EDAs disponibles en el mercado controlan aplicaciones simples que no tienen un número complejo de eventos interactuando, pero se proyecta un crecimiento acelerado en los próximos años. En un panel reciente relativo al tema en la Emit Conference, Jason Polites, product manager de Google Cloud Functions, indicó que la empresa ve a las aplicaciones de EDA en rubros como Internet of Things y trabajos relacionados con Extración, Transformación y Carga. En la misma línea, la academia está adoptando esta tecnología por la gran cantidad de información que necesitan procesar y analizar en tiempos cortos.
Los expertos concuerdan en que los usos inmediatos de esta tecnología son aplicaciones web y el back-end de aplicaciones móviles, pero que su principal potencial está en el futuro de la inteligencia artificial, el machine learning y la analítica avanzada. Lamenteblemente, aún no existen herramientas ni frameworks que definan un marco operativo óptimo para las organizaciones.
La buena noticia: este crecimiento será exponencial una vez que los reglas se definan y exista un acuerdo de uso.
Un vistazo hacia el pasado de event-driven
El modelo no es para nada nuevo. En la página de Genbeta refieren que a fines de la década de los 70, los sistemas se desarrollaban de manera estructurada: “Se pensaban para trabajar como cadenas de ensamblaje donde un programa usaba una entrada y producía una salida que sería utilizada por otro programa como entrada para producir otra salida y así hasta finalizar el proceso. Todo se hacía de manera lineal y sin intervención del usuario en la ejecución. Por el contrario, en los programas creados para ser dirigidos por eventos, el flujo principal no es secuencial de principio a fin”.
Con la evolución de los lenguajes orientados a eventos, la interacción del software con el usuario mejoró y permitió la aparición de interfaces que, además de ser la vía de comunicación del programa con el usuario, son la propia apariencia del mismo. Estas interfaces gráficas (GUI por sus siglas en inglés) han acercado la informática a los usuarios, permitiendo en muchos casos, a principiantes utilizar de manera intuitiva y sin necesidad de grandes conocimientos, el software que ha colaborado a mejorar la productividad en muchas tareas.
Pero, también, uno de los periféricos que adquirió mayor importancia luego de que surgieran los programas orientados a eventos es el mouse, sobre todo luego de que aparecieran los sistemas operativos modernos con sus interfaces gráficas. Estas suelen dirigir directamente al controlador interior que va entrelazado al algoritmo.
Por otra parte, David Luckham, investigación y profesor en tecnología de software de la Universidad de Stanford, ha trabajado con lenguajes de procesamiento de negocio y multi proceso, sistemas dirigidos por eventos, procesamiento de eventos complejos, middleware comercial, verificación de programas, sistemas de arquitectura de modelado y simulación, así como inteligencia artificial (sistemas de razonamiento y deducción automatizada).
En su libro The Power of Events, Luckham parte de la idea de que los sistemas de información global son cada vez más poderosos, complejos y entrelazados, por lo que las empresas necesitan nuevas formas de aproximación para extraer la información, transformarla en inteligencia y actuar con ella.
Según la descripción del texto en Amazon, el autor introduce el Procesamiento de Eventos Complejos (CEP, por sus siglas en inglés) para “aprovechar el poder de eventos a administración automatizada sin comprometer el control de los administradores a través de conceptos como eventos, causalidad, jerarquías de eventos, modelos de evento y reglas”.