Actualmente llevo varios años trabajando con sistemas distribuidos y arquitecturas orientadas a eventos, desde el malentendido SOA (o su versión refurbished como son los Microservices), hasta Event Sourcing (indirectamente enlazado con CQRS).
Muchos de los conceptos vinculados con eventos como inmutabilidad, perpetuidad, idempotencia… son igualmente validos para realizar stream processing o flujo continuo de eventos. Si a esto le sumamos el proceso por lotes o batch processing, entramos en el terreno de lo que muchos llaman Big Data.
Big Data
Cuando pensamos en big data lo primero que nos viene a la cabeza es Hadoop para ejecutar procesos por lotes. Tenemos que pensar que Hadoop ofrece una gran capacidad para procesar una cantidad indecente de datos, pero a costa de una alta latencia en la respuesta. Aunque esta latencia puede ser de sobras aceptable para muchos casos de uso, no lo es para otros que tienen la necesidad de procesar una gran cantidad de datos en tiempo (casi) real.
Ahí es donde entra en juego lo que muchos llaman lambda architecture (Nathan Marz, ex-twitter).