¿Qué significa "controlado por eventos" y qué tan rápido es el "tiempo real"?
Si lo pensamos, podemos identificar muchos escenarios controlados por eventos. Muchos de ellos requieren una reacción en tiempo real.
¿Qué queremos decir en tiempo real?
Una reacción en tiempo real se puede ver como una respuesta inmediata. Tomemos un ejemplo de un cajero en una cafetería que le pregunte qué quiere beber.
El cajero espera una respuesta instantánea, o al menos una respuesta que se da muy pronto. De lo contrario, el cajero podría reformular la pregunta o sospechar que fueras grosero. Se solicita una respuesta rápida y también es adecuada. El tiempo de respuesta puede variar ligeramente, pero todavía se ve como "en tiempo real". Por lo tanto, devolver un saludo debería ocurrir rápidamente, pero está bien pensar brevemente sobre su orden de responder a la pregunta del cajero.
Si traduce ese escenario a sistemas de software, todo lo que le interesa son los tiempos de respuesta: Tiempo de respuesta, Tiempo de finalización, Hora de acceso, Horas de inicio, etc. El usuario o la aplicación de acceso definen esos intervalos.
Nota:
En tiempo real, las tareas de los sistemas realizan su función dentro de las fechas límite prescritas.
Siempre debe tener en cuenta lo que ocurre en el sistema. Así que asegúrese de no olvidar lo obvio, que es el registro, la supervisión y la medición de los tiempos.
Importante
Asegúrese de especificar las fechas límite y los intervalos de antemano y de configurar una solución de supervisión sin bloqueo para la comprobación.
En resumen, estamos de acuerdo en que en tiempo real significa muy rápido, en un instante. La rapidez exacta es especificada por su escenario determinado.
Aplicaciones controladas por eventos
Cuando piensas en un evento de clic, te viene a la mente otra cosa. Las aplicaciones controladas por eventos usan el principio enviar y olvidar. El evento se envía o se dispara hacia el siguiente sistema, que puede ser otro servicio, un centro de eventos, una secuencia o un agente de mensajes como Kafka. No esperamos necesariamente la respuesta del siguiente en el sistema. El acoplamiento flexible se logra a costa de la consistencia eventual, que debe gestionarse en otro nivel.
Para identificar la naturaleza de las aplicaciones controladas por eventos, echemos un vistazo a los patrones de arquitectura principales mediante el ejemplo de un cliente, llamado Alex, comprar un café y un capuchino.
Notificación de evento
La notificación de eventos es la notificación de un acontecimiento específico. Cada evento se ve por separado. El ejemplo de un cliente llamado Alex que compra un café y un capuchino podrían tener este aspecto:
1. Evento: Alex compra un café.
2. Evento: Alex compra un capuchino.
Un barista tendría que escuchar cuidadosamente todos los detalles para obtener todo el pedido de Alex. Pero dos baristas también podrían preparar y servir las bebidas de forma independiente.
Transferencia de estado transportado por eventos
Con la transferencia de estado llevada a cabo por el evento, toda la información necesaria se almacena en un solo evento. Esto resulta útil si se pierde un evento o su servicio no escucha todos los eventos. En nuestro ejemplo, los eventos tendrían el siguiente aspecto:
1. Evento: Alex compra un café.
2. Evento: Alex compra, además del café, un capuchino.
Con un camarero, escuchar solo el segundo evento podría ser suficiente. Con dos baristas, el segundo tendría que mirar al primero. La orden podría notificarse conjuntamente, pero el proceso podría llevar más tiempo que hacerlo completamente desvinculado.
Aprovisionamiento de eventos
Con el aprovisionamiento de eventos, el almacenamiento de eventos pasa a ser el elemento principal. Como puede ver, los eventos son los mismos que en el primer ejemplo. Pero el barista es crucial para este concepto cuando recibe un evento y luego considera todos los eventos relacionados para determinar el estado actual de todos los pedidos realizados por Alex.
Con la segunda orden, el barista sabe que el pedido de Alex consiste en un café, al recordar la primera orden, y un cappuccino, porque esta bebida se acaba de pedir. Trabajar en paralelo con un segundo barista no es lo más fácil posible.
Cuando agregamos un cajero para recibir los pedidos y servir las bebidas, los baristas pueden trabajar de forma independiente para preparar las bebidas. No necesitan saber nada sobre los clientes. El cajero es el denominado almacén de eventos, donde se registran los eventos de manera permanente. El aprovisionamiento de eventos agrega otra capa de complejidad, pero también agrega desacoplamiento.
1. Evento: Alex compra un café.
Cajero: (Primer) pedido (para Alex): Café
2. Evento: Alex compra un capuchino.
Cajero: (Segundo) pedido (para Alex): Cappuccino
Los datos de telemetría son eventos en tiempo real
También hay otros ejemplos de los que podemos pensar. Imagine el escenario de ejecutar un sistema de refrigeración, por ejemplo, para fabricantes de alimentos o medicamentos. Necesita un control constante de la temperatura y de otros datos relevantes del sistema. Conocer los datos de telemetría y controlarlos automáticamente sería fundamental para el éxito. Medir la telemetría cada dos segundos y enviarla hacia el sistema de control donde se analizan, procesan y controlan los datos es un sistema controlado por eventos. Además, los datos deben procesarse en tiempo real porque es fundamental reaccionar rápidamente para evitar consecuencias trágicas para la empresa.