Dapr — Overview#

Identity#

Purpose#

Dapr (Distributed Application Runtime) is a portable, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservice applications across cloud and edge environments. It solves the hard infrastructure problems in distributed systems — pub/sub messaging, state management, service-to-service invocation, secret management, workflow orchestration, and actors — by exposing them as standardized HTTP/gRPC APIs through a sidecar process. The sidecar model means any language or framework can use Dapr without importing a SDK or library.

Significance#

Dapr is a CNCF graduated project with broad industry adoption, particularly among platform engineering teams building internal developer platforms. Its sidecar architecture and language-agnostic API model make it influential as a reference design for “infrastructure as API” — abstracting away vendor-specific SDKs for messaging, storage, and secrets behind a stable, portable interface. With official SDKs for Go, Java, .NET, Python, JavaScript, Rust, and C++, it has one of the largest polyglot ecosystems among CNCF runtimes. Its pluggable component model (via the separate components-contrib repository) is widely cited as a pattern for vendor-neutral infrastructure integration.

Key metrics#

  • Go files: 2,339
  • Top-level directories: cmd, dapr, charts, docker, docs, grafana, img, pkg, swagger, tests, tools, utils
  • Direct dependencies: 83
  • Size tier: L (500–2000 .go files range; this project sits at the upper end)

Notable characteristics#

  • Sidecar architecture: The runtime runs as a separate process (or container) injected alongside each application instance, communicating via localhost HTTP or gRPC. This is the defining structural decision of the entire project.
  • Pluggable component system: Dapr’s building blocks (state stores, pub/sub brokers, secret stores, bindings) are implemented as pluggable components in the separate components-contrib repo, consumed via interface abstractions. This enables swapping Redis for CosmosDB without code changes.
  • Multiple transport protocols: Supports both HTTP and gRPC natively. The project uses connectrpc.com/connect alongside standard google.golang.org/grpc, and includes its own proto-defined API surface.
  • Actor model built-in: Implements virtual actors (similar to Orleans / Akka) with placement service, reminder scheduling via diagridio/go-etcd-cron, and durable workflow via dapr/durabletask-go — making it one of the few CNCF projects to ship a production actor runtime.
  • Deep Kubernetes integration: Ships its own Kubernetes operator, CRDs, and controller via sigs.k8s.io/controller-runtime, but also runs in self-hosted mode — the same binary serves both deployment targets, with configuration determining the hosting model.