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 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

The image part with relationship ID rId12 was not found in the file. The image part with relationship ID rId12 was not found in the file. Special Day Cloud-Native Business Applications Thema Sprecher Datum, Uhrzeit Cloud-Native-all-the-things: Definition, Praktiken & Patterns Thorsten Hans, Christian Weyer DI, 21. Februar 2023, 10.45 bis 11.45 Containerbasierte Entwicklung für .NET-Entwickler Tobias Fenster DI, 21. Februar 2023, 12.15 bis 13.15 Was guckst du? Observability von Cloud-Native-Anwendungen – mit OpenTelemetry Thorsten Hans DI, 21. Februar 2023, 15.30 bis 16.30 Cloud-Native Microservices: On-Premises oder in der Cloud – mit Dapr Christian Weyer DI, 21. Februar 2023, 17.00 bis 18.00 Serverless Containers mit Azure Container Apps Thorsten Hans DI, 21. Februar 2023, 19.00 bis 20.00

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis End-to-End Demo Application 8

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 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 13 Myth Busting & Definitions

Slide 14

Slide 14 text

Myth Busting & Definitions Cloud-Native Software Yes, it is all about Linux. Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 14

Slide 15

Slide 15 text

Disadvantages of Windows Containers • Bigger in size • longer push/pull times • Require more storage (affects Kubernetes & PaaS) • Higher resource consumption • Windows Containers & Hosts need more CPU & memory • Direct impact on infrastructure budged • Host & container OS must have same version (strict policy) • https://kubernetes.io/docs/concepts/windows/intro/#windows-os-version-support • Meaning you may end up with way more infrastructure Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Cloud-Native Software 15 Myth Busting & Definitions

Slide 16

Slide 16 text

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

Slide 17

Slide 17 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 17 Myth Busting & Definitions

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 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 26 Cloud-Native & Cloud

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 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 29 Cloud-Native & Cloud

Slide 30

Slide 30 text

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

Slide 31

Slide 31 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 31 Managed Kubernetes Hosting options

Slide 32

Slide 32 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 32 Hosting options

Slide 33

Slide 33 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Hosting Options - Comparison 33 Hosting options 0 = worst / 3 = best

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 35 D E M Patterns

Slide 36

Slide 36 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 36 Techniques & Practices

Slide 37

Slide 37 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/ 37 Techniques & Practices

Slide 38

Slide 38 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 38 Techniques & Practices

Slide 39

Slide 39 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 39 Techniques & Practices

Slide 40

Slide 40 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 40 Techniques & Practices

Slide 41

Slide 41 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/ 41 Techniques & Practices

Slide 42

Slide 42 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/ 42 Techniques & Practices

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 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 46 Patterns & Implementations

Slide 47

Slide 47 text

§ Portable, event-driven runtime for building distributed applications § Open-source, community-driven, vendor-neutral § Prevents developers reinventing the wheel, esp. complex wheels § Making developers lives easier with consistent approach / abstraction § Productivity tool, when having different § Generations of software types (greenfield and brownfield) § Languages & frameworks § Team formations ➡ Dapr as a common lingua franca Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Dapr: Distributed Application Runtime - for Cloud-Native 47 Patterns & Implementations

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

Cloud-Native-Workshop Dapr Sidecar: Separating Concerns Moderne End-to-End-Architekturen in der Praxis daprd 49 Patterns & Implementations

Slide 50

Slide 50 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 50 Components: Abstracting Access to “Things” Patterns & Implementations

Slide 51

Slide 51 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 51 https://github.com/dapr/components-contrib/tree/master/pubsub Patterns & Implementations

Slide 52

Slide 52 text

Cloud-Native-Workshop Service Invocation: Interception Moderne End-to-End-Architekturen in der Praxis 52 Patterns & Implementations

Slide 53

Slide 53 text

Cloud-Native-Workshop On-Premises oder in der Cloud – mit Dapr 53 Publish & Subscribe: Decoupling Patterns & Implementations

Slide 54

Slide 54 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Input / Output Bindings & Triggers 54 Patterns & Implementations

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 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 57 Automation

Slide 58

Slide 58 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 58 Automation

Slide 59

Slide 59 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Automation Layers Inner-Loop Infrastructure CI & CD Automation 59

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 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 67

Slide 68

Slide 68 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 68