Slide 1

Slide 1 text

Cloud-na)ve microservices – with Dapr? Right {thing, focus, place} Chris&an Weyer @christianweyer Thinktecture AG, Co-Founder & CTO

Slide 2

Slide 2 text

§ Co-Founder & CTO at Thinktecture AG § Personal focus on § Cloud-native & serverless architectures § Pragmatic end-to-end solutions § Mobile & web-based application architectures § Independent Microsoft Regional Director § Microsoft MVP for Developer Technologies & Azure ASPInsider, AzureInsider § Google GDE for Web Technologies [email protected] @christianweyer https://www.thinktecture.com Christian Weyer Cloud-native microservices - with Dapr? Right {thing, focus, place} 2

Slide 3

Slide 3 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Three themes Right Thing Right Focus Right Place 3

Slide 4

Slide 4 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Three themes Right Thing Right Focus Right Place 4

Slide 5

Slide 5 text

Microservices - clarified Right {thing, focus, place} Cloud-native microservices - with Dapr? 5

Slide 6

Slide 6 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? 6

Slide 7

Slide 7 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? 7 ❌

Slide 8

Slide 8 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? 8 ❌

Slide 9

Slide 9 text

§ Docker § Kubernetes § Azure § Serverless § NoSQL § Service Fabric § Dapr § gRPC § … no more than 20 lines of code per service … § … further BS … Microservices do not mean… Right {thing, focus, place} Cloud-native microservices - with Dapr? 9

Slide 10

Slide 10 text

§ … implement domain boundaries based on business capabilities & data § This is not a technical thing § This is a very hard job to do right § No programming language or framework helps here § … are subject to & influence organization structure (teams etc.) § Conway’s law § … are just one style of architecture § We can mix and match § We can – and should! - be pragmatic to chose Right {thing, focus, place} Cloud-native microservices - with Dapr? Microservices … 10

Slide 11

Slide 11 text

Cloud-native Right {thing, focus, place} Cloud-native microservices - with Dapr? 11

Slide 12

Slide 12 text

§ Let’s not talk about Microservices – but about Cloud-native applications § These may be microservices § Built with aspects in mind to be able to run them in the Cloud § But should be runnable anywhere § Typical attributes for architectures and applications – on a use-case-based spectrum § Configurability § Resiliency § Availability § Scalability § Observability Right {thing, focus, place} Cloud-native microservices - with Dapr? Cloud-native applications 12

Slide 13

Slide 13 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Sample application scenario (original sketch) 13

Slide 14

Slide 14 text

§ Execution independence / Hosting-agnostic § Different programming / tech stacks § Running anywhere § Resiliency § Location transparency § Error handling, retries § Decoupling § Robustness § Async business processes § Observability § Seeing everything end-to- end § Tracing, logging, metrics ➡ Would be nice to have some help here § Proven patterns § By hand – OR Library, SDK, runtime? Right {thing, focus, place} Cloud-native microservices - with Dapr? Cloud-native applications: Some tedious parts 14

Slide 15

Slide 15 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Three themes Right Thing Right Focus Right Place 15

Slide 16

Slide 16 text

Dapr Basics Right {thing, focus, place} Cloud-native microservices - with Dapr? 16

Slide 17

Slide 17 text

§ Portable, event-driven runtime for building distributed applications across Cloud and edge § Open-source, community-driven, vendor-neutral § Best practices building blocks § Consistent, portable, open APIs § Extensible & pluggable components § Adopt standards § Platform-agnostic for edge and Cloud § Any language and framework Right {thing, focus, place} Cloud-native microservices - with Dapr? Dapr: Distributed Application Runtime - for Cloud-native applications 17

Slide 18

Slide 18 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Cloud-native building blocks 18

Slide 19

Slide 19 text

• “Not your concern!” • daprd will do this • Talk to sidecar • Use HTTP or gRPC • Use an SDK Right {thing, focus, place} Cloud-native microservices - with Dapr? Sidecar pattern: separating concerns 19 My App Dapr API POST http://localhost:3500/v1.0/invoke/cart/method/neworder GET http://localhost:3500/v1.0/state/inventory/item67 POST http://localhost:3500/v1.0/publish/shipping/orders GET http://localhost:3500/v1.0/secrets/keyvault/password HTTP/gRPC Application Sidecar

Slide 20

Slide 20 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Dapr applications: utilizing platform features 20 Service A Observability Bindings & Triggers State Management Secret Management PubSub Messaging Virtual Actors Service Invocation Service B My App

Slide 21

Slide 21 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Dapr components 21 My App Observability Prometheus AppInsights Jaeger Zipkin Bindings & Triggers State Stores Secret Stores PubSub Brokers https://github.com/dapr/components-contrib

Slide 22

Slide 22 text

§ Start right away with CLI § Can be integrated into any IDE § Focus on Dapr infrastructure aspects § VS Code tooling available § Configuration via YAML files § Config § Components § Etc. Right {thing, focus, place} Cloud-native microservices - with Dapr? Getting started with Dapr 22

Slide 23

Slide 23 text

Dapr Select scenarios Right {thing, focus, place} Cloud-native microservices - with Dapr? 23

Slide 24

Slide 24 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Cloud-native building blocks 24

Slide 25

Slide 25 text

§ Discover and invoke methods on services § Call services securely with encryption and apply access control on the methods § Handle retries and transient errors § Use tracing to see call graph with metrics to diagnose issues in production Right {thing, focus, place} Cloud-native microservices - with Dapr? Service invocation 25

Slide 26

Slide 26 text

§ Each app/service needs an ID § Sidecars talk to each other Right {thing, focus, place} Cloud-native microservices - with Dapr? Service invocation 26 Service A My App mDNS Multicast DNS component for service discovery mTLS encryption POST http://localhost:3500/v1.0/invoke/servicea/method/neworder {"data":"Hello World"} POST http://10.0.0.2:8000/neworder {"data":"Hello World"}

Slide 27

Slide 27 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Input triggers 27 My App Twitter POST http://10.0.0.2:8000/newtweet {"data":“📢 We are excited to announce the …"}

Slide 28

Slide 28 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Output bindings 28 My App Twilio POST http://localhost:3500/v1.0/bindings/twilio {"data":"Hello World"} Hello World

Slide 29

Slide 29 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Sample application scenario (cleaned-up 😉) 29

Slide 30

Slide 30 text

§ At-least-once semantics for message delivery Right {thing, focus, place} Cloud-native microservices - with Dapr? Publish & subscribe 30 Service B My App Redis Cache Service A POST http://localhost:3500/v1.0/publish/orders/processed {"data":"Hello World"} POST http://10.0.0.2:8000/orders http://10.0.0.4:8000/factory/orders {"data":"Hello World"}

Slide 31

Slide 31 text

§ Logs § Immutable, timestamped record of discrete events that happened over time § Metrics § Numeric representation of data measured over intervals of time § Traces § Representation of a series of causally related distributed events that encode the end-to-end request flow through a distributed system Right {thing, focus, place} Cloud-native microservices - with Dapr? Observability 31

Slide 32

Slide 32 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Observability 32 OpenTelemetry collector Logging & tracing extensions My App Redis Cache Twitter Service B Service A

Slide 33

Slide 33 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Three themes Right Thing Right Focus Right Place 33

Slide 34

Slide 34 text

Hosting Right {thing, focus, place} Cloud-native microservices - with Dapr? 34

Slide 35

Slide 35 text

§ Self-hosted § dapr run all your services § Infrastructure services can be run in Docker (mixed mode) § Docker Compose § Everything running in Docker, on-prem § Lightweight orchestration § Kubernetes § Full power of k8s orchestration § On-prem or in cloud § Azure Container Apps § Dapr built-in § Fixed version Right {thing, focus, place} Cloud-native microservices - with Dapr? Hosting anywhere 35

Slide 36

Slide 36 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Kubernetes – on-prem or cloud 36 Any cloud or edge infrastructure Pod Actor partition placement Placement Pod Dapr runtime injector Injector Pod Cert authority and identity Sentry Pod Update component changes Operator Pod My App Kubelet Use components Inject Dapr sidecar into annotated pods Inject env variables Manage mTLS between services Assign spiffe identity Create mapping table of actor instances to pods Manage component updates Manage Kubernetes service endpoints Readiness and Liveness probe on healthz API to determine Dapr health state State Stores Pub/Sub Brokers Secret Stores Bindings & Triggers Observability Dapr Components Operator Deploys and manages Dapr

Slide 37

Slide 37 text

Recap Right {thing, focus, place} Cloud-native microservices - with Dapr? 37

Slide 38

Slide 38 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Three themes Right Thing Right Focus Right Place 38

Slide 39

Slide 39 text

§ Choose wisely – be pragmatic § LOLA: sometimes abstractions just leak § State management building block § Very limited use cases § Has custom API for querying § Too much of an abstraction Right {thing, focus, place} Cloud-native microservices - with Dapr? Dapr-all-the-things? 39

Slide 40

Slide 40 text

Recap Right {thing, focus, place} Cloud-native microservices - with Dapr? 40 YOU need to choose: Dapr abstraction or not Modern applications need to be Cloud-native Microservices are just one architecture style (and more) Dapr 😀 § Encapsulates proven patterns in building blocks § Pluggable components § Language-agnostic § Host-agnostic No technology, framework, runtime can solve business domain problems Dapr 🤔 § Some features seem incomplete § Docs and samples need to be improved § Might be overhead

Slide 41

Slide 41 text

Right {thing, focus, place} Cloud-native microservices - with Dapr? Last, but not least 41

Slide 42

Slide 42 text

Thank you! Christian Weyer https://thinktecture.com/christian-weyer @christianweyer [email protected] Demo: https://github.com/thinktecture/dapr-basics-demos Articles about Blazor, PWA, Web Components, Angular, .NET Core & more: https://www.thinktecture.com/en/newsletter 42