Ship more features, faster
Temporal eliminates recovery logic, callbacks, and timers from your code so you can spend more time building features.
Code more reliable systems
Temporal makes your software durable and fault tolerant by default, reducing failures by 10-100X.
Gain visibility into execution
Temporal records every execution, its progress and state, providing new insights into errors and app performance.
Event-Driven Architectures
Event-driven architectures and queue-driven design promise ease of deployment and scale, but are a development nightmare. Without Temporal, event-driven applications are loosely coupled at runtime, but highly coupled at build time. This creates great complexity for error handling and propagation of state across disparate services. With Temporal, application state, retries, and error handling are abstracted away so that you no longer have to code for them. System testing is a breeze because Temporal eliminates common failure scenarios.
SAGA & Distributed Transactions
The saga pattern ensures safe and consistent state across distributed services so that the failure of one operation within a sequence results in prior operations being reversed using compensating transactions. Without Temporal, saga typically requires significant forethought as there is no central system to manage coordination and visibility. Debugging unexpected failure modes can be treacherous. With Temporal, workflow definitions allow you to more easily understand, debug, and modify sagas. Tighter coupling for compensations increases and your application code remains clean.
State Machines
State machines are often used to define and manage valid state and transitions for entities within your application and depending on your application, they can be quite complex. Without Temporal, state machine code grows in complexity and length with the addition of each new state and maintenance and testing of them can be a challenge. With Temporal, complete state of your function and workflow is captured, so you no longer need to automate, track and validate state so you can eliminate or avoid state machines.
Batch Processing
Batch Processes are created to execute a well-defined function across large or even small sets of data. Without Temporal, often, batch processes can be quite large and when they fail, you have limited or no insight into where they failed, what completed and what hasn't. With Temporal, each execution within the batch process becomes a Workflow Execution with state captured, so that upon failure, you have insight into what completed and where to restart the process.
Scheduled Jobs & Cron
For years, we have relied on Cron to schedule jobs to be executed at a certain time or regular interval. Without Temporal, Cron is a largely manual process that can be unreliable and provides limited to no controls over execution. With Temporal, you can replace Cron with Scheduled Workflows to be reliably executed. You can start and pause them and even set up signals to start them on command for a Workflow.