Orchestration Communication Service-to-service communication HA / Failover Resilience, Security, Tracing Decoupling Events Competing Consumer Pattern Retry / Poisonous message detection State Handling Single state across multiple instances Stateful services Virtual Actors, Workflows Different Target Environments Local dev environment vs. cloud environment Different persistency services
▪ Portable APIs ▪ Building blocks applying best practices ▪ Use the blocks you need ▪ No big bang framework ▪ Platform agnostic ▪ Extensible and pluggable components
• Executable or Docker Image Kubernetes • Sidecar container in your pod, uses localhost interface • Usually injected based on attributes Serverless • Integrated in Azure • i.e. Container Apps
Sentry) ▪ Resiliency including retries ▪ Tracing and metrics with observability ▪ Access control (policies) ▪ Namespace scoping ▪ Load balancing (round robin with mDNS) ▪ Pluggable service discovery https://docs.dapr.io/developing-applications/building-blocks/service-invocation/service-invocation-overview/
consumer group ▪ Same app id = same consumer group ▪ Dapr delivers each message to only one instance of that application https://docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-overview/
last-write-wins concurrency pattern) ▪ Optimistic concurrency with ETag ▪ Time to live (TTL) ▪ State encryption ▪ Querying state https://docs.dapr.io/developing-applications/building-blocks/state-management/state-management-overview/
with identity ▪ Encapsulate state and behavior within a distributed system ▪ Actor state store ▪ Actor timers and reminders https://docs.dapr.io/developing-applications/building-blocks/actors/actors-overview/
Partition 2 My App App Instance 1 MyActor A Placement Service POST /v1.0/actors/MyActor/A/method/update App Instance 2 MyActor B Pod 1 Pod 2 MyActor C OtherActor A 1 1 2 3
protocols ▪ Used with service invocation and pub/sub APIs ▪ Sidecar health ▪ App health checks ▪ Unsubscribing Pub/Sub ▪ Stop input binings ▪ Short-circuiting all service-invocation requests https://docs.dapr.io/developing-applications/building-blocks/observability/tracing-overview/
your development on proven best practices ▪ Focus on your application, not on re- inventing the wheel ▪ Ideal, if portability is key (different environments / clouds, local, etc.)
do not hesitate to contact us: 4tecture GmbH Marc Müller Industriestrasse 25 Principal Consultant CH-8604 Volketswil www.4tecture.ch www.powerofdevops.com