Slide 1

Slide 1 text

§ Was SIE ERWARTET § Pragmatische Sicht auf Cloud-Native § Was? Warum? Wie? Wo? § 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 ERWARTET § Einführung in Docker, Kubernetes oder Azure § Deep Dives in Docker, Kubernetes oder Azure § Windows 🙈 § Klicki-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 Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 1

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

§ Distributed Systems with ASP.NET Core § .NET internals § Cloud-native & serverless architectures [email protected] @feO2x https://www.thinktecture.com Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Kenny Pflug Consultant @ 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 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

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

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

Slide 13

Slide 13 text

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

Slide 14

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

From 3-Tier to Cloud Native 16 ASP.NET Core Backend Web Frontend Databa se Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 17

Slide 17 text

From 3-Tier to Cloud Native 17 ASP.NET Core Backend Web Frontend Databa se ASP.NET Core Backend ASP.NET Core Backend Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 18

Slide 18 text

From 3-Tier to Cloud Native 18 ASP.NET Core Backend Web Frontend Databa se ASP.NET Core Backend ASP.NET Core Backend Containerization & Configuration Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 19

Slide 19 text

From 3-Tier to Cloud Native 19 ASP.NET Core Backend Web Frontend Databa se ASP.NET Core Backend ASP.NET Core Backend Load Balancer Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 20

Slide 20 text

From 3-Tier to Cloud Native 20 ASP.NET Core Backend Web Frontend Databa se ASP.NET Core Backend ASP.NET Core Backend Load Balancer Databa se Databa se Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 21

Slide 21 text

From 3-Tier to Cloud Native 21 ASP.NET Core Backend Web Frontend Databa se ASP.NET Core Backend ASP.NET Core Backend Load Balancer Databa se Databa se Database Clustering Run or Rent? Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 22

Slide 22 text

From 3-Tier to Cloud Native 22 ASP.NET Core Backend Web Frontend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 23

Slide 23 text

From 3-Tier to Cloud Native 23 ASP.NET Core Backend Web Frontend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer Ausfallsicherheit, Zero Downtime Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 24

Slide 24 text

From 3-Tier to Cloud Native 24 ASP.NET Core Backend Web Frontend Databa se Cluster ASP.NET Core Backend Load Balancer Ausfallsicherheit, Zero Downtime Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 25

Slide 25 text

From 3-Tier to Cloud Native 25 ASP.NET Core Backend Web Frontend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer Ausfallsicherheit, Zero Downtime Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 26

Slide 26 text

From 3-Tier to Cloud Native 26 Web Frontend ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend Load Balancer Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Service A Service B

Slide 27

Slide 27 text

From 3-Tier to Cloud Native 27 Web Frontend ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend Load Balancer Message Broker Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Service A Service B

Slide 28

Slide 28 text

From 3-Tier to Cloud Native 28 Web Frontend ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend Load Balancer Message Broker Publish-Subcribe or Queueing for Runtime Decoupling Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Service A Service B

Slide 29

Slide 29 text

From 3-Tier to Cloud Native 29 Web Frontend ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend Load Balancer Message Broker Sidecar Sidecar Sidecar Sidecar Sidecar Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Service A Service B

Slide 30

Slide 30 text

From 3-Tier to Cloud Native 30 Web Frontend ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend Load Balancer Message Broker Sidecar Sidecar Sidecar Sidecar Sidecar Declarative Communication Resiliency and Tracing Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Service A Service B

Slide 31

Slide 31 text

From 3-Tier to Cloud Native 31 Web Frontend ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend Load Balancer Message Broker Sidecar Sidecar Sidecar Sidecar Sidecar Gateway Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Service A Service B

Slide 32

Slide 32 text

From 3-Tier to Cloud Native 32 Web Frontend ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend Load Balancer Message Broker Sidecar Sidecar Sidecar Sidecar Sidecar Gateway Auth Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Service A Service B

Slide 33

Slide 33 text

From 3-Tier to Cloud Native 33 Web Frontend ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend Load Balancer Message Broker Sidecar Sidecar Sidecar Sidecar Sidecar Gateway Auth JSON Web Tokens (JWT) Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis

Slide 34

Slide 34 text

From 3-Tier to Cloud Native 34 Web Frontend ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend ASP.NET Core Backend Load Balancer ASP.NET Core Backend Databa se Cluster ASP.NET Core Backend Load Balancer Message Broker Sidecar Sidecar Sidecar Sidecar Sidecar Gateway Auth Cluster-wide Services Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis Service A Service B

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

Docker Desktop for Windows: https://docs.docker.com/desktop/install/windows-install/ Docker Desktop for Mac OS X: https://docs.docker.com/desktop/install/mac-install/ Docker on Linux: https://docs.docker.com/desktop/install/linux-install/ Cloud-Native Sample: git clone https://github.com/thinktecture-labs/cloud-native-sample/ Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 46

Slide 47

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

Slide 48

Slide 48 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 48 Demo / Hands - On Patterns

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 50 Demo / Hands - On Patterns

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 52 Demo / Hands - On Patterns

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 56 Hands - On Patterns

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

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

Slide 63

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

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

Slide 67

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 74 Hands - On Patterns

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

Q&A Cloud-Native-Workshop Moderne End-to-End-Architekturen in der Praxis 76

Slide 77

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