Skip to content
Back to Blog
1 min read

Dapr vs Service Mesh: Choosing the Right Approach

Key Differences

AspectDaprService Mesh
FocusApplication building blocksNetwork infrastructure
mTLSVia mesh integrationNative
State ManagementBuilt-inNot provided
Pub/SubBuilt-inNot provided
RetriesApplication-levelNetwork-level

When to Use Dapr

# Dapr provides application capabilities
apiVersion: apps/v1
kind: Deployment
metadata:
  name: order-service
spec:
  template:
    metadata:
      annotations:
        dapr.io/enabled: "true"
        dapr.io/app-id: "order-service"
    spec:
      containers:
      - name: order-service
        image: order-service:v1

Dapr usage:

// State management
await daprClient.SaveStateAsync("statestore", "order-1", order);

// Pub/sub
await daprClient.PublishEventAsync("pubsub", "orders", order);

// Service invocation
var result = await daprClient.InvokeMethodAsync<Order>("payment-service", "process", order);

When to Use Service Mesh

# Service mesh provides network capabilities
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: order-service
spec:
  hosts:
  - order-service
  http:
  - timeout: 10s
    retries:
      attempts: 3
    route:
    - destination:
        host: order-service

Using Both Together

Dapr can run with a service mesh for comprehensive capabilities:

annotations:
  dapr.io/enabled: "true"
  sidecar.istio.io/inject: "true"

Summary

Use Dapr for application building blocks, service mesh for network security and traffic management. They complement each other well.

Michael John Peña

Michael John Peña

Data & AI Director and Microsoft MVP based in Sydney. Writing about Microsoft Fabric, Azure, data engineering, and AI.