Dapr (Distributed Application Runtime) reached 1.8 in November 2022. The project, originally open-sourced by Microsoft in 2019, provides building blocks for microservices that abstract infrastructure dependencies.

What Dapr provides

Dapr's building blocks cover the common distributed system patterns: service invocation (with retry and circuit breaking), pub/sub messaging (abstracted from the specific broker), state management (abstracted from the specific store), secrets management, and configuration. Each building block has a consistent API regardless of the underlying infrastructure. You can swap from Redis to Cosmos DB for state management without changing application code.

Dapr vs service mesh

A service mesh (Istio, Linkerd) handles cross-cutting concerns at the network level through a sidecar proxy. Dapr handles them at the application level through an SDK and a sidecar. The key difference: Dapr's building blocks are application-aware APIs, not transparent network interception. This means they require SDK integration but provide more flexibility for application-level patterns like semantic pub/sub topics and state store queries.

Azure Container Apps integration

Azure Container Apps has first-class Dapr integration: enable Dapr on an ACA app with a configuration flag and the Dapr sidecar is automatically injected. The building block configuration is managed in the ACA environment, not in the application. This makes the infrastructure-portability promise of Dapr concrete: the same application code can run on ACA, on Kubernetes with Dapr installed, or locally with Dapr CLI, with the same building block APIs.

Adoption pattern

Dapr adoption is strongest in.NET and Java shops building on Kubernetes or Azure Container Apps. The building blocks provide immediate value for teams that would otherwise build their own abstractions for service invocation, pub/sub, and state management. The onboarding cost is a week of learning the Dapr concepts and API. The payoff is portable microservice code that does not bind to specific infrastructure choices.