Durable Execution Engines: From Distributed Transactions to Temporal

2025-05-23

This article explores the evolution of durable execution engines (like Temporal), starting with early database transactions, distributed transactions, and fault-tolerant RPC/microservice architectures. The author analyzes Jimmy Bogard's "Six Little Lines of Fail" example, highlighting challenges in handling cross-service function calls, such as transaction rollback and retry mechanisms. The article reviews the limitations of distributed transactions (like two-phase commit), and explores attempts in the Java world with JSR-95 (Activity Service) and web service standards (like WS-AtomicTransaction), ultimately noting their limited adoption. The author further analyzes the recent rise of microservice architectures and corresponding fault-tolerance mechanisms, along with event sourcing, orchestration and choreography. Finally, the article compares modern durable execution engines such as Temporal, Restate, and DBOS, including their operational modes, data storage methods, and integration with serverless architectures, highlighting their importance in addressing reliability issues in distributed systems.

Development