Motores de Ejecución Duradera: De Transacciones Distribuidas a Temporal
Este artículo explora la evolución de los motores de ejecución duradera (como Temporal), comenzando con las transacciones de bases de datos iniciales, las transacciones distribuidas y las arquitecturas de RPC/microservicios tolerantes a fallos. El autor analiza el ejemplo "Six Little Lines of Fail" de Jimmy Bogard, destacando los desafíos en el manejo de llamadas de funciones entre servicios, como la reversión de transacciones y los mecanismos de reintento. El artículo revisa las limitaciones de las transacciones distribuidas (como el commit de dos fases), y explora los intentos en el mundo Java con JSR-95 (Activity Service) y los estándares de servicios web (como WS-AtomicTransaction), señalando finalmente su adopción limitada. El autor analiza además el reciente auge de las arquitecturas de microservicios y los mecanismos correspondientes de tolerancia a fallos, junto con el sourcing de eventos, la orquestación y la coreografía. Finalmente, el artículo compara motores de ejecución duradera modernos, como Temporal, Restate y DBOS, incluyendo sus modos operativos, métodos de almacenamiento de datos e integración con arquitecturas serverless, destacando su importancia en la resolución de problemas de fiabilidad en sistemas distribuidos.