Slide 1

Slide 1 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Christian Weyer https://thinktecture.com/christian-weyer @christianweyer Co-Founder & CTO Thorsten Hans https://thinktecture.com/thorsten-hans @thorstenhans Consultant & Cloud-Native-Enthusiast

Slide 2

Slide 2 text

Cloud-Native Consultant @ Thinktecture AG #Cloud-Native #Kubernetes #Azure #Terraform Thorsten Hans Moderne End-to-End-Architekturen in der Praxis Cloud-Native-Workshop [email protected] thinktecture.com thorsten-hans.com @ThorstenHans

Slide 3

Slide 3 text

§ 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 Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Christian Weyer Co-Founder & CTO @ Thinktecture AG 3

Slide 4

Slide 4 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Four Blocks – approx. break down Intro Story … a bit booring stuff … Please bear with us! Architecture Technology Code Architecture Technology Code Architecture Technology Code Recap & Final Q&A 09.00 – 10.30 11.00 – 12.30 13.30 – 15.00 15.30 – 17.00 4

Slide 5

Slide 5 text

BLOCK I Introduction Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 5

Slide 6

Slide 6 text

D E M O Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 6

Slide 7

Slide 7 text

Myth Busting & Definitions Aka “WTF?” Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 7

Slide 8

Slide 8 text

Cloud-Native What is it NOT Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 8 Myth Busting & Definitions

Slide 9

Slide 9 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 9 Myth Busting & Definitions

Slide 10

Slide 10 text

Cloud-Native What is it Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 10 Myth Busting & Definitions

Slide 11

Slide 11 text

”… is highly distributed, must operate in a constantly changing environment, and is itself constantly changing.” Cornelia Davis, Author of Cloud Native Patterns: Designing change-tolerant software Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Cloud-Native Software 11 Myth Busting & Definitions

Slide 12

Slide 12 text

Yes, it is all about Linux. Windows is more expensive and resource-intensive. Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Cloud-Native Software 12 Myth Busting & Definitions

Slide 13

Slide 13 text

Myth Busting & Definitions Cloud-Native Candidate Applications Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 13

Slide 14

Slide 14 text

§ Strategic enterprise systems that need to constantly evolve business capabilities/features § Application that requires a high release velocity - with high confidence § System where individual features must release without a full redeployment of the entire system § Application developed by teams with expertise in different technology stacks § Application with components that must scale independently § ℹ Smaller, less impactful LOB applications might fare well with a simple monolithic architecture hosted in a Cloud PaaS environment Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Candidates for Cloud-Native 14 Myth Busting & Definitions

Slide 15

Slide 15 text

Cloud-Native & Microservices Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 15 Myth Busting & Definitions

Slide 16

Slide 16 text

Cloud-Native Attributes What & why Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 16

Slide 17

Slide 17 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 17 Availability Scalability Resilience Configurability Observability Cloud-Native Applications Cloud-Native Attributes

Slide 18

Slide 18 text

Cloud-Native Landscape Complex affairs Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 18

Slide 19

Slide 19 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Our Brainstorming… 19 … there is a lot of infrastructure- related stuff ! Cloud-Native Landscape

Slide 20

Slide 20 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 20 https://landscape.cncf.io/ Cloud-Native Landscape

Slide 21

Slide 21 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 21 https://twitter.com/GeertBaeke/status/1577704842541285379 Cloud-Native Landscape

Slide 22

Slide 22 text

Cloud-Native & Cloud What’s in a name? Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 22

Slide 23

Slide 23 text

"Cloud is about where we're computing. Cloud-Native is about how.” Cornelia Davis, Author of Cloud Native Patterns: Designing change-tolerant software Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 23 Cloud-Native & Cloud

Slide 24

Slide 24 text

From Build vs. Buy to Run vs. Rent Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 24 Cloud-Native & Cloud

Slide 25

Slide 25 text

Cloud Agnosticism Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 25 Cloud-agnostic Cloud vendor-coupled More complex Complex Cloud-Native & Cloud

Slide 26

Slide 26 text

Cloud Agnostism Going fully cloud-agnostic leads to re-implementing stuff that’s already there Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 26 Cloud-Native & Cloud

Slide 27

Slide 27 text

Hosting Options Running Cloud-Native applications Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 27

Slide 28

Slide 28 text

§ We can choose and mix from the continuum Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Cloud Compute Continuum PaaS IaaS On-Premises Serverless 28 Managed Kubernetes Hosting options

Slide 29

Slide 29 text

§ Cloud-Native is not “just using” Kubernetes § Kubernetes is a powerful platform (orchestrator) to build and run cloud-native applications § Leverage Kubernetes patterns and capabilities to address certain cloud-native “ilities” § Kubernetes is a driver to become cloud-agnostic Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Cloud-Native & Kubernetes 29 Hosting options

Slide 30

Slide 30 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Comparison 30 Hosting options

Slide 31

Slide 31 text

BLOCK II Applying proven techniques to .NET applications Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 31

Slide 32

Slide 32 text

“It’s simply that the application has to give up a lot of control, to the platform - and has to be cleanly integrable from the outside.” Thorsten Hans, Cloud-Native-Enthusiast Thinktecture Consultant Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Main Metaphor for Cloud-Native Code 32 Techniques & Practices

Slide 33

Slide 33 text

Configurability by Example with IConfiguration Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis .NET by Example https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/ 33 Techniques & Practices

Slide 34

Slide 34 text

Observability by Example Individual Health Checks Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks 34 Techniques & Practices

Slide 35

Slide 35 text

Configuration by Example Integrate with the network environment Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer 35 Techniques & Practices

Slide 36

Slide 36 text

Redefined Responsibilities E.g.: Application devs do not configure HTTPS in the application Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 36 Techniques & Practices

Slide 37

Slide 37 text

Observability by Example with ILogger Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/ 37 Techniques & Practices

Slide 38

Slide 38 text

Observability by Example with OpenTelemetry Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis https://opentelemetry.io/docs/instrumentation/net/getting-started/ 38 Techniques & Practices

Slide 39

Slide 39 text

Observability by Example with Prometheus Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis https://github.com/prometheus-net/prometheus-net 39 Techniques & Practices

Slide 40

Slide 40 text

Containerization Create & use Docker Images Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 40 Techniques & Practices

Slide 41

Slide 41 text

BLOCK III Cloud-Native Patterns & Implementations Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 41

Slide 42

Slide 42 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 💡 Nice to have help here § Proven patterns § Support by libraries, SDK, runtime Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Cloud-Native applications - Some tedious parts 42 Patterns & Implementations

Slide 43

Slide 43 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 § Adopting standards § Platform-agnostic for edge and Cloud § Any language and framework Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Dapr: Distributed Application Runtime - for Cloud-Native 43 Patterns & Implementations

Slide 44

Slide 44 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Dapr Building Blocks 44 Patterns & Implementations

Slide 45

Slide 45 text

• “Not your concern!” • daprd will do this • Talk to sidecar • Use HTTP or gRPC • Use an SDK Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Sidecar pattern: separating concerns 45 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 Patterns & Implementations

Slide 46

Slide 46 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Dapr applications: utilizing platform features 46 Service A Observability Bindings & Triggers State Management Secret Management PubSub Messaging Virtual Actors Service Invocation Service B My App Patterns & Implementations

Slide 47

Slide 47 text

Patterns & Implementations Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Dapr components 47 My App Observability Prometheus AppInsights Jaeger Zipkin Bindings & Triggers State Stores Secret Stores PubSub Brokers https://github.com/dapr/components-contrib

Slide 48

Slide 48 text

Patterns & Implementations § At-least-once semantics for message delivery Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Publish & subscribe 48 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 49

Slide 49 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Output bindings 49 My App Twilio POST http://localhost:3500/v1.0/bindings/twilio {"data":"Hello World"} Hello World Patterns & Implementations

Slide 50

Slide 50 text

BLOCK IV Automation in Cloud-Native Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 50

Slide 51

Slide 51 text

Automation in Cloud-Native The key to success! Automate EVERYTHING Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 51 Automation

Slide 52

Slide 52 text

“Everything that can be automated, should be automated.” Kevin Hoffman & Dan Nemeth, Author of Cloud Native Patterns: Designing change-tolerant software Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 52 Automation

Slide 53

Slide 53 text

“Anything you do more than once per day is a candidate for automation.” Kevin Hoffman & Dan Nemeth, Author of Cloud Native Patterns: Designing change-tolerant software Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 53 Automation

Slide 54

Slide 54 text

Inner-Loop Automate everything you need to do while developing locally Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 54 Automation

Slide 55

Slide 55 text

Infrastructure Automate your cloud-infrastructure by applying Infrastructure-as-Code Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 55 Automation

Slide 56

Slide 56 text

Continuous Integration Build, Test, and Package every application component independently and automatically Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 56 Automation

Slide 57

Slide 57 text

Deployment Deploy every component independently and automatically Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 57 Automation

Slide 58

Slide 58 text

Deployment Embrace either Continuous Deployment or GitOps Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 58 Automation

Slide 59

Slide 59 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Continuous-all-the-things 59 https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment Automation

Slide 60

Slide 60 text

Recap Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 60

Slide 61

Slide 61 text

§ Was Sie gesehen haben § Pragmatische Sicht auf Cloud-Native § Was? Warum? Wo? Wie? § Methodiken, Praktiken & Patterns § Verteilte Anwendungen mit Dapr § Automatisierung auf allen Ebenen § End-to-End Beispielanwendung § .NET-Code (und ein bisschen Go) § Lokal und in der Cloud § Terminal & CLIs § Was Sie nicht gesehen haben § Einführung in Docker, Kubernetes oder Azure § Deep Dives in Docker, Kubernetes oder Azure § Windows 🙈 § Klick-Bunti in Visual Studio 😇 § Businessaspekte, wie Business Domain Modeling oder SaaS § Cloud-Native Security Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Summary

Slide 62

Slide 62 text

https://www.thinktecture.com/ueber-uns/karriere/ Dankeschön! Christian Weyer https://thinktecture.com/christian-weyer Demos aus der Session: https://github.com/thinktecture-labs/ cloud-native-sample Cloud-Native @ Thinktecture: https://www.thinktecture.com/technologien/ cloud-native/ https://www.thinktecture.com/wissen/ Thorsten Hans https://thinktecture.com/thorsten-hans 62