/ arquitectura de software

Event-Driven Architecture: Introducción

Imagina que trabajas en una empresa de transportación terrestre, en la que se generan constantemente situaciones a las que debes darle cierta prioridad o actuar en consecuencia.

NopalFlets es una empresa internacinal de transportación terrestre que en promedio tiene 10,000 tractocamiones recorriendo toda América Latina 24/7 365 días del año.

Tiene como política que ningún conductor que esté transportando mercancía puede ir a más de 80 km/h y ha puesto GPS que mandan información de la velocidad de cada tractocamión a la central de tráfico. Este envio, puede (o no) detonar una acción. Esto les provoca un problema puesto que central tiene que enviar una notificación al conductor para que reduzca la velocidad.

vanveenjf-mS2ngGq6VO4-unsplash

¿Cómo creamos software que pueda reaccionar ante esta cantidad masiva de eventos y darles una respuesta adecuada?

Este ejemplo nos sirve para definir varios conceptos interesantes.

Event-driven architecture

También llamada arquitectura dirigida por eventos, es una solución de software y hardware que reacciona en tiempo real ante el aviso de un evento, ejecutando una acción.

¿Qué es un evento?

Es algo importante que ocurre en un punto concreto del tiempo y que requiere de atención. Puede venir de cualquier lugar y ocurre asíncronamente. La cantidad y el tiempo entre un evento y otro generan un flujo: un streaming de datos.

Streaming de datos

Son flujos de datos que se generan constantemente desde miles de fuentes. Como la información de redes sociales que vemos todos los días, las operaciones bancarias que hacemos o los datos que generan ciertos sensores... como en nuestro caso hipotético del GPS.

Súper fácil y en nuestro ejemplo lo tenemos claro:

  • Nuestro streaming de datos lo generan los 10000 GPS.
  • Los datos, la velocidad del tractocamión
  • Nuestro evento, el exceso de velocidad.
  • Nuestra reacción: la notificación desde la central de tráfico para que haga la reducción.

Bueno, ya tenemos identificada cada parte del problema... ¿cómo creamos una solución?

Siguenos en nuestras siguientes entradas para conocer más acerca de esta arquitectura y como implementarla.

Eduardo Montalvo

Eduardo Montalvo

Programador con intereses en machine learning, clean code, arquitecturas de software y formación de equipos técnicos.

Read More