Slide 1

Slide 1 text

Cloud-Native Microservices für alle: On-Premises oder Cloud - mit Dapr Christian Weyer https://thinktecture.com/christian-weyer @christianweyer 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 On-Premises oder Cloud - mit Dapr Cloud-Native Microservices für alle 2

Slide 3

Slide 3 text

§ Microservices - revisited § Cloud-native applications § Dapr § Basics § Components § Cloud-native building blocks § Hosting - on-premsies & Cloud § Recap § Q&A Agenda Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 3

Slide 4

Slide 4 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Three themes Right Thing Right Focus Right Place 4

Slide 5

Slide 5 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Three themes Right Thing Right Focus Right Place 5

Slide 6

Slide 6 text

Microservices - revisited Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 6

Slide 7

Slide 7 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 7

Slide 8

Slide 8 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 8 ❌

Slide 9

Slide 9 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 9 ❌

Slide 10

Slide 10 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… Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 10

Slide 11

Slide 11 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 choose Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Microservices … 11

Slide 12

Slide 12 text

Single Responsibility § Focused on business domain § ‘Small’ Isolation § Well-defined, technology-agnostic API § Possible choice of technology § ‘Mobility’ Autonomy § Exclusive state (data storage) § Isolated build and deployment § ‘Team’ Decoupling § Asynchronous communication (Really, always!?) Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Central principles of Microservices 12 P

Slide 13

Slide 13 text

Cloud-native Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 13

Slide 14

Slide 14 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 Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Cloud-native applications 14

Slide 15

Slide 15 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Sample Cloud-Native application scenario – with Dapr (original sketch 😇) 15

Slide 16

Slide 16 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? Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Cloud-native applications: Some tedious parts 16

Slide 17

Slide 17 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Three themes Right Thing Right Focus Right Place 17

Slide 18

Slide 18 text

Dapr Basics Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 18

Slide 19

Slide 19 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 Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Dapr: Distributed Application Runtime – for Cloud-native applications 19 https://dapr.io/

Slide 20

Slide 20 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Cloud-native building blocks 20

Slide 21

Slide 21 text

• Dapr bets on sidecar architecture • “Not your concern!” • daprd will do this • Talk to sidecar • Use HTTP or gRPC • Use an SDK Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Sidecar pattern: separating concerns 21 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 22

Slide 22 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Dapr applications: utilizing platform features 22 Service A Observability Bindings & Triggers State Management Secret Management PubSub Messaging Virtual Actors Service Invocation Service B My App

Slide 23

Slide 23 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Dapr components 23 My App Observability Prometheus AppInsights Jaeger Zipkin Bindings & Triggers State Stores Secret Stores PubSub Brokers https://github.com/dapr/components-contrib

Slide 24

Slide 24 text

§ Dapr CLI § Can be integrated into any IDE § Focus on Dapr infrastructure aspects § Docker containers for infra- sturcture components § Runtime config via YAML files § Config § Components § Etc. Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Getting started with Dapr 24

Slide 25

Slide 25 text

Dapr Select scenarios Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 25

Slide 26

Slide 26 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Cloud-native building blocks 26

Slide 27

Slide 27 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 Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Service invocation 27

Slide 28

Slide 28 text

§ Each app/service needs an ID § Sidecars talk to each other Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Service invocation 28 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 29

Slide 29 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Input triggers 29 My App Twitter POST http://10.0.0.2:8000/newtweet {"data":“📢 We are excited to announce the …"}

Slide 30

Slide 30 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Output bindings 30 My App Twilio POST http://localhost:3500/v1.0/bindings/twilio {"data":"Hello World"} Hello World

Slide 31

Slide 31 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Sample Cloud-Native application scenario – with Dapr 31

Slide 32

Slide 32 text

§ At-least-once semantics for message delivery Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Publish & subscribe 32 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 33

Slide 33 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Observability 33 OpenTelemetry collector Logging & tracing extensions My App Redis Cache Twitter Service B Service A

Slide 34

Slide 34 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Three themes Right Thing Right Focus Right Place 34

Slide 35

Slide 35 text

Hosting Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 35 P

Slide 36

Slide 36 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 (any Cloud) § Azure Container Apps § Dapr built-in § Fixed version Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Hosting anywhere 36

Slide 37

Slide 37 text

Recap Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr 37

Slide 38

Slide 38 text

Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Three themes Right Thing Right Focus Right Place 38

Slide 39

Slide 39 text

§ Cloud-native applications can be very complex § Need to elimainate parts of the complexity § Choose wisely – be pragmatic § LOLA: sometimes abstractions just leak § E.g., different pub-sub systems behave differently in semantics § E.g.: State management building block § Limited use cases § Key/value API - no relational or graph storage § Custom API for querying § IMHO: too much of an abstraction Cloud-Native Microservices für alle On-Premises oder Cloud - mit Dapr Dapr-all-the-things? 39

Slide 40

Slide 40 text

Recap Cloud-Native Microservices für alle On-Premises oder Cloud - mit 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 Reminder: No technology, framework, runtime can solve business domain problems Dapr 🤔 § Some features seem incomplete § Docs and samples need to be improved § Might be overhead for you

Slide 41

Slide 41 text

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