Durable execution apps
Orchestrate persisted processes
Overview
Durable execution applications are an approach to running long-lived workflows to maintain reliable and consistent stateful processes across distributed systems, ensuring seamless operation despite failures, restarts, or maintenance activities. These applications enable the continuous progression of complex workflows by employing persistent state management and asynchronous, durable messaging between stateful entities. This architecture is critical for building robust, fault-tolerant systems that uphold data integrity and operational continuity in modern software systems.
What is a durable execution app?
A durable execution application is an approach to running long-lived processes that are persisted and can ensure reliable execution across distributed systems. These durable processes interact through asynchronous, durable messaging triggered by persistently recorded state changes. This design allows the application to withstand failures, restarts, and maintenance without losing state or interrupting the execution flow.
In such applications, when an entity's state changes, it emits events that other durable processes consume to trigger subsequent actions. This event-driven architecture enables the creation of complex, long-running workflows and supports patterns like orchestration and choreography sagas. By guaranteeing that all state changes and inter-entity communications are durable, Durable Execution Apps ensure that processes can resume seamlessly after any disruption, maintaining data integrity and operational continuity throughout the system.
Key properties of durable execution apps
Durable execution applications possess several core properties that enable them to maintain consistent and reliable operations in distributed environments. These properties ensure that applications can handle complex workflows, recover from interruptions seamlessly, and scale effectively.
State persistence
Asynchronous, durable messaging
Fault tolerance and recovery
Scalability and distribution
Workflow orchestration & choreography
Event-driven architecture
Akka components
- The client sends a request to an endpoint component (API).
- The endpoint component forwards the request to a workflow component.
- Step 1 in the workflow requests data from a view and then sends a command to an entity.
- In step 2 of the workflow, the result from step 1 is used to send a command to the second entity component.
How Akka enables durable execution apps
Akka provides comprehensive features and capabilities for building durable execution apps within distributed systems. The Akka SDK leverages advanced distributed systems technology to facilitate the creation of scalable, resilient, and high-performance applications. Two key components of the SDK, workflows, and consumers, are particularly crucial for implementing durable execution patterns.