This blog post is designed as “Initial brainstorming points” for technical leaders weighing the trade-offs between event-driven systems and workflow engines.
Introduction
Event-Driven Architecture (EDA) is widely used to build loosely coupled microservices. Services publish events, others react, and the system can scale and evolve independently. For fast, stateless reactions, EDA works beautifully.
But even in today’s world of real-time platforms, not every business process can be completed in a single API call. Some workflows last tens of seconds or a few minutes just long enough to introduce complexity. To handle these cases, teams often build custom persistence mechanisms to track state, retries, and timeouts. Over time, these grow into what I call “bespoke process databases.”
This blog post explains what bespoke process databases are, why they emerge in event-driven systems, and how workflow engines like Temporal solve the problem.
What Do We Mean by “Bespoke”?
Bespoke means tailor-made or handcrafted. In software, it describes custom solutions teams create when standard patterns fall short.
For workflow management, bespoke often looks like:
-
Custom tables such as
checkout_stateorpending_actions -
State machine columns tracking workflow progress
-
Cron jobs or schedulers to enforce retries and timeouts
-
Scattered rollback or compensation logic across multiple services
These tables and jobs start small but eventually resemble a homegrown workflow engine built inside your database one that is costly to maintain and difficult to evolve.
Why Do Bespoke Process Databases Appear in EDA?
EDA excels when events are instantaneous:
-
Updating inventory counts
-
Sending customer notifications
-
Logging data for analytics
But cracks appear when workflows extend beyond a single synchronous call. In modern digital sales services, this often means seconds-to-minutes workflows, such as:
-
Holding inventory for 30–60 seconds while a customer finalizes payment
-
Retrying a failed card authorization a few times over the next 2–3 minutes
-
Waiting 20–40 seconds for a credit, fraud, or KYC system to respond
-
Giving a customer 1–2 minutes to complete an e-signature
Even though these durations are short, they are still long enough that you need:
-
Durable persistence of process state across services
-
Intelligent retries with exponential backoff
-
Automatic timeouts if nothing happens
-
Consistent compensation when failures occur
With pure EDA, the fallback is almost always a bespoke process database.
Temporal: A Cleaner Alternative
Workflow engines like Temporal remove the need for these handcrafted persistence layers. Instead of building your own state management system, Temporal provides it natively.
With Temporal:
-
Workflows are code: The business process is modeled directly in code
-
Durable state is built-in: Progress is automatically persisted by the Temporal cluster
-
Retries and timers are first-class: No need for Quartz jobs or cron hacks
-
Compensations are explicit: Saga rollbacks live in Activities and run consistently
-
Resilience is guaranteed: Workflows survive crashes, redeploys, and failovers
Practical Example
Without Temporal (EDA + bespoke process DB):
-
Customer begins checkout → event emitted
-
A “process manager” service listens and writes state into a
checkout_statetable -
Quartz or cron jobs enforce timers (for example, 60-second hold expiry)
-
Retry counters are tracked manually in DB columns
-
Refunds and compensations are scattered across services
-
Operations dashboards are stitched together from multiple tables and logs
With Temporal:
-
Customer begins checkout → workflow starts
-
Workflow orchestrates inventory, payments, credit checks, and confirmations
-
Temporal automatically manages retries, timeouts, and persistence
-
Compensations live in Activities and are consistently applied
-
Operations teams can query workflow state directly — no custom DB required
The Takeaway
When you hear someone say “we built a bespoke process DB,” it usually signals that EDA has been stretched beyond its natural limits. Even in modern real-time platforms, many business workflows last long enough to require orchestration that EDA does not natively provide.
Instead of relying on custom tables, schedulers, and retries, a workflow engine like Temporal makes orchestration explicit, durable, and reliable.
Bespoke databases may help you patch gaps in the short term, but workflow engines are the sustainable solution for long-term scalability.