Un poco sorprendente ver que el uso de los brokers de mensajería, siguiendo una arquitectura basada en eventos, no está muy extendida en el mundo empresarial. Como es sabido, cuando más grande es una compañía más inercia tiene para cambiar la arquitectura de sus sistema, pero cada vez está mas claro que un broker de mensajería tiene que formar el “sistema nervioso” de la IT de una empresa, y el cambio es inevitable.

Artículos como éste de Confluent (la compañía que más está impulsando el uso de Apache Kafka) sobre el cambio en el famoso periódico NYT es muy ilustrativo.

Evidentemente, aunque estamos hablando de la T.I. de un gran periódico los conceptos que aquí se explican son de aplicación en otros muchos tipos de empresas (¿en cuales no, me preguntaría yo?).

Cambio de paradigma

Como todos los cambios de paradigma, pasar de sistemas basados en el veterano concepto de request-response al de mensajes, requiere un cambio de mentalidad, una “recalibración” del modo de pensar… y el primer aspecto que hay que cambiar es el concepto que tenemos de las bases de datos.

Como se explica en el artículo, las bases de datos han sido tradicionalmente la “fuente de la verdad” en muchos sistemas. Sin embargo, estas bases de datos no están preparadas para el tratamiento de datos como un flujo continuo de datos (streams).

A diferencia de una base de datos tradicional, donde se guarda el resultado de un evento, el estado de la aplicación, los “almacenes de logs” guardan el evento mismo, y por lo tanto se tiene el conocimiento no sólo del estado actual del sistema si no de de toda la cadena de eventos por los que ha pasado previamente. Como si fuera una máquina del tiempo, un sistema basado en logs puede “rebobinar” a cualquier momento del pasado y ver cómo estaba el sistema en ese momento.

Particularmente interesante para, por ejemplo, una empresa de seguros. Imaginemos un juicio de algo ocurrido hace tres años, se necesita saber exactamente qué que coberturas tenía la póliza de seguros en ese momento, esto es trivial en un sistema de logs y muy difícil en una base de datos tradicional, donde nos obligamos a tener tablas “históricas” que acumulan todos los cambios.

Datos siempre actualizados

Por otra parte, un sistema de logs nos permite disponer de la información, no como una foto fija, si no como un stream de datos continuamente actualizado. Nuestra aplicación podría estar interesada, por ejemplo, en la contratación de pólizas del “opel corsa”. Con un stream, tendríamos en tiempo real, una vista (una especie de tabla) de todos los coches de ese modelo que se tienen contratados o ese momento, o los que están siendo remolcados por una grúa en ese preciso instante. Sin que nuestra aplicación tenga que hacer consultas continuas, simplemente recibe los datos como un stream en tiempo real.

El procesamiento del flujo de datos (stream processing) es un paradigma diferente del procesado de datos que ve los datos, no como algo estático, si no que como algo que fluye y que se procesa de manera continua. Forzando un poco el símil, es la diferencia entre comprase un disco y ponerlo en cadena de música o escucharlo en Spotify.

Esto para las aplicaciones de negocio tienen una ventaja fundamental, el procesamiento y el análisis de los datos se hace en tiempo real… ¿veremos algún día el final de los batch nocturnos? 😉 es posible que no vivamos lo suficiente para ello, pero por favor, antes de hacer otro batch, piénsalo dos veces.

Desde el punto de vista de la tecnología, la orientación a eventos produce un software más desacoplado y autónomo que puede evolucionar libremente sin depender del resto de aplicaciones y que como resultado, ofrece software más escalable y extensible.

Creo que no podría resumirlo mejor que Nada Narkhede en el prólogo de “Kafka Streams in action” así que ahí va:

“Creo que la arquitectura dirigida por eventos, centrada en los streams de eventos en tiempo real y el procesado de estos streams, se convertirá en ubicua en los próximos años. Compañías tecnológicamente sofisticadas como Netflix, Uber, Goldman Sachs, Bloomber y otras hace construido este tipo de plataformas de streaming de eventos a gran escala..”

Anuncios