Skip to content
Go back

The Five Waves of Distributed Resilience

Published:  at  06:45 PM

The Five Waves of Distributed Resilience

This post is the first in a multi-part series exploring the evolution and future of resilient distributed systems. It serves as a primer on the abstractions that have shaped event-driven and workflow-based architectures over the last three decades. In upcoming posts, we’ll shift gears into practical territory — demonstrating how to use Temporal and .NET Aspire to build durable workflows in modern, cloud-native applications.

Over the past 30 years, distributed systems have undergone a quiet revolution. From crude polling loops to language-native durable execution engines, the way we build and orchestrate resilient business logic has advanced through a series of distinct technological waves.

Each wave introduced a new level of abstraction. Each promised to make distributed systems simpler, safer, and more scalable. And each came with its own set of trade-offs.

This post charts the five waves of distributed resilience — what drove them, where they fell short, and how we arrived at the current frontier: durable execution as code.


Wave 1: Databases as Queues (1990s–2005)

Pattern: Use of RDBMS tables to simulate queues, with polling mechanisms.

Why it happened: In the absence of mature messaging infrastructure, relational databases were the only available tool with durability and transactional guarantees.

How it worked:

Limitations:

Key Innovators & Tools:


Wave 2: Durable Messaging Infrastructure (2005–2013)

Pattern: Event-driven messaging using message brokers.

Why it mattered: Dedicated infrastructure (e.g., RabbitMQ, Kafka, MSMQ) introduced reliable delivery, pub/sub patterns, and back-pressure.

What changed:

Limitations:

Key Innovators & Tools:


Wave 3: Declarative Orchestration (2013–2018)

Pattern: Workflows modeled as DAGs or state machines using visual tools or DSLs.

Examples: Camunda BPMN, AWS Step Functions, Azure Durable Functions.

What changed:

The promise:

Business users could “own” their workflows, and developers would merely implement steps.

Why it struggled:

Key Innovators & Tools:


Wave 4: Code-Defined DAGs (2018–2020)

Pattern: Developers define workflows using code-like syntax, but orchestration still occurs externally.

Examples: Netflix Conductor, Dapr Workflows, AWS CDK + Step Functions.

What changed:

Limitations:

Key Innovators & Tools:


Wave 5: Durable Execution as Code (2020–Present)

Pattern: Business logic is written as ordinary code, with durable state, retries, timeouts, and replays managed by the platform.

Examples: Temporal, Cadence.

What changed:

Benefits:

Key Innovators & Tools:

Temporal doesn’t orchestrate services — it executes durable logic, abstracting queues, state, and retries directly into the code layer.


Summary Table

WaveEraDescriptionExample TechKey Contributors
11990–2005Databases as makeshift queuesSQL + pollingMartin Fowler, early enterprise devs
22005–2013Event-driven with message brokersRabbitMQ, Kafka, MassTransit, NServiceBusGregor Hohpe, Jay Kreps, Udi Dahan, Chris Patterson, Dru Sellers
32013–2018Declarative workflows, BPMN, DSLsCamunda, Step Functions, Durable FunctionsBernd Rücker, Clemens Vasters, Chris Gillum
42018–2020Code-defined workflows via orchestratorsNetflix Conductor, Dapr WorkflowsNetflix OSS, Microsoft Dapr
52020–NowDurable execution in native codeTemporal, CadenceMaxim Fateev, Samar Abbas

Final Thoughts

Each wave represented a shift in who owns resilience:

Temporal, in particular, emerges not just as a tool — but as a new mental model for writing distributed systems. Durable logic is now just… code and that’s testable.

What’s even more important is that it leaves developers to focus on the business features they need to deliver, and not the underlying resillience patterns of old.

And like all powerful abstractions, once you see it, it’s hard to unsee.


If you’re exploring Temporal, Cadence, or building event-driven SaaS systems — let’s talk. I’m actively working with these ideas in production and exploring the real-world implications of the fifth wave.

This post is part of a multi-part series on modern durable workflows and distributed systems design. In the next installment, we’ll get hands-on with Temporal and .NET Aspire to show how these ideas come to life in real-world applications.

Stay tuned.


Suggest Changes
Share this post on:

Previous Post
Upgrading AstroPaper from v4 to v5 - What You Need to Know
Next Post
Deploying .NET applications to Coolify