engineering

Temporal for workflow orchestration — honest review

April 14, 2025

1 min read

Six months of using Temporal in production. What’s good, what’s annoying, and whether it’s worth it.

What it is

Temporal is a workflow orchestration platform. You write workflows as code — regular functions — and Temporal handles durability, retries, and state persistence automatically. If your process crashes mid-workflow, Temporal replays the execution from a durable event log.

This is genuinely magical the first time you see it work.

What’s actually good

Durable execution. Workflows survive process crashes, network failures, and deployments. You write code that looks synchronous but runs asynchronously and durably. This is worth a lot.

Visibility. The Temporal UI shows you every running workflow, its state, input, output, and history. Debugging distributed systems is normally miserable; Temporal makes it bearable.

Testing. You can unit-test workflows with simulated time, which is uncommon in workflow frameworks.

What’s annoying

The learning curve is real. Determinism constraints in workflows catch you off-guard. You can’t use time.now() directly, can’t use random numbers, can’t do anything non-deterministic in workflow code. This is conceptually sound but operationally jarring.

Self-hosting is a project. Running Temporal yourself means running Cassandra or PostgreSQL, the Temporal server, workers, and the UI. It’s doable but adds real operational overhead.

SDK verbosity. The Python SDK is more verbose than it needs to be. Simple things require boilerplate.

Verdict

Worth it if you’re building complex multi-step processes that need to be reliable. Not worth it for simple task queues — just use Celery or ARQ.

The managed Temporal Cloud offering is good if you don’t want to operate it yourself.