Slide 1

Slide 1 text

Hosting Capabilities OnPrem or Public-Cloud? Kubernetes, PaaS, or Serverless Thorsten Hans @ThorstenHans Cloud-Native Consultant

Slide 2

Slide 2 text

Consultant @ Thinktecture #Azure #Kubernetes #CloudNative #Docker [email protected] thinktecture.com thorsten-hans.com @ThorstenHans Microsoft MVP | Docker Captain Thorsten Hans

Slide 3

Slide 3 text

What we won’t cover • Managing virtual machines • Both On-Premises and in some sort of cloud • This includes solutions like Hyper-V, vSphere, etc • Azure Functions • Opinionated serverless programming model that could be used as additive platform for dedicated workloads of a bigger system Non-Scope

Slide 4

Slide 4 text

• Introduction • Implementing a decision model • Hosting Guidance • Conclusion Agenda

Slide 5

Slide 5 text

• Introduction • Implementing a decision model • Hosting Guidance • Conclusion Agenda

Slide 6

Slide 6 text

The goal of this talk is to provide you with enough information to choose the correct hosting platform for your (cloud-native) application.* * In this talk, public cloud means Azure Introduction – The Goal

Slide 7

Slide 7 text

Developers and Architects should choose the desired application platform wisely, because altering the infrastructure and application platform later in the project lifecycle will become cumbersome, pricey, and time intense. Introduction

Slide 8

Slide 8 text

Questions raised in the context of hosting cloud-native apps • Do I have to use the public cloud? • Should I use Containers, or am I good without Containers? • Cloud-Native means Kubernetes, right? Introduction

Slide 9

Slide 9 text

How to digest through the vast amount of platforms, services, abstractions, and products especially those, offered by public cloud-vendors? Introduction

Slide 10

Slide 10 text

• Introduction • Implementing a decision model • Hosting Guidance • Conclusion Agenda

Slide 11

Slide 11 text

• Introduction • Implementing a decision model • Hosting Guidance • Conclusion Agenda

Slide 12

Slide 12 text

• Every team / decision maker should implement a model to verify & compare potential hosting platforms to host their application(s) • Finding and selecting the best hosting platform is not a one-time- shot Implementing a decision model

Slide 13

Slide 13 text

Ask yourself if your decision could be affected by regulatory compliance? • Regulatory Compliance may be introduced by: • Your actual application • Your domain (vertical) • Your organization • Your customers • Regulatory Compliance will impact / limit selection process Implementing a decision model

Slide 14

Slide 14 text

Identify key criterias that drive your decision • Location (OnPrem|Cloud) • Expenditure Model (CapEx|OpEx) • Infrastructure Security Responsibility (User|Vendor) • Platform Upgrades (User|Vendor) Implementing a decision model

Slide 15

Slide 15 text

Identify key criterias that drive your decision • Maintenance • Responsibility • Control • Deployment Model • Complexity • Vendor Lock-In • Scalability • Availability • Automation • Freshness Implementing a decision model

Slide 16

Slide 16 text

Identitfy actual Hosting opportunities • Mixed-Mode (Containers & Binaries) • Docker-Compose • Self-Hosted Kubernetes • Managed-Kubernetes • Platform as a Service • Serverless Implementing a decision model

Slide 17

Slide 17 text

Hosting Platform Decision Model - Let’s do a Demo in 🤯 Excel (sorry 😁) Demo

Slide 18

Slide 18 text

• Introduction • Implementing a decision model • Hosting Guidance • Conclusion Agenda

Slide 19

Slide 19 text

• Introduction • Implementing a decision model • Hosting Guidance • Conclusion Agenda

Slide 20

Slide 20 text

Cloud-Native apps On-Premises • First of all, it is possible • Actually, your apps and/or components are not complicated to run/host, the dependencies are • Dependencies use different technology stacks which you may not want to maintain • E.g. Python, Go, Rust, Ruby, .NET, Scala, … • Leveraging Containers makes running those dependencies a easier • Your apps and/or components could still be hosted on metal (IIS | Self-Host | Service) Hosting Guidance

Slide 21

Slide 21 text

Kubernetes On-Premises • You can install and run Kubernetes On-Premises (obviously) • You should do that only if you’ve an experienced Ops-Team • It is smart to use a managed Kubernetes distribution (like Tanzu, Rancher) if you really want to run Kubernetes on your metal • It is even smarter to rent Kubernetes in a private datacenter (check with your private cloud vendor, we see more and more managed Kubernetes offerings in private clouds) Hosting Guidance

Slide 22

Slide 22 text

Hosting Cloud-Native apps in Azure Let’s digest through some Azure Services that we could use to run cloud-native applications • Azure App Services • Azure Web App • Azure Web App for Containers • Azure Kubernetes Service (AKS) • Azure Container Instance (ACI) • Azure Container Apps (ACA) Hosting Guidance

Slide 23

Slide 23 text

Azure Services Compared: Azure App Services • Most mature Azure service to run cloud-native workloads • Windows and Linux workloads supported • Linux-based App Services always run behind a reverse proxy and always leverage containers • Windows-based Azure App Services are twice as expensive as Linux-based • Does not support things like Dapr Hosting Guidance

Slide 24

Slide 24 text

Azure Services Compared: Azure App Services • Observability • Users typically intergrate workloads running in Azure App Services with Azure Application Insights and Azure Monitor (Azure Log Analytics Workspace) • Scalability • Users can configure custom scaling behavior ( using existing metrics exposed by Azure itself ) Hosting Guidance

Slide 25

Slide 25 text

Azure Services Compared: Azure Kubernetes Service • Managed Kubernetes offering • Microsoft runs the Kubernetes Control Plane for you • Control Plane is free with an optional fee (~ $80 per Month) to get SLA • Fasted growing Azure Service ever • Integrations with AzureAD, Microsoft Defender for Cloud, Azure Policy etc are Azure-specific Hosting Guidance

Slide 26

Slide 26 text

Azure Services Compared: Azure Kubernetes Service • Observability • AKS supports all popular observability stacks. • Altough your app runs in Azure, you don’t have to use Azure Monitor (Azure Log Analtytics integration) • Scalability • Horizontal Scaling on infrastructure level (AKS cluster itself) is configured on the level of the Node Pool • Actual scaling behavior can be customized • Horizontal Scaling of application components is achieved using standardized Kubernetes patterns e.g. HorizontalPodAutoscaler Hosting Guidance

Slide 27

Slide 27 text

Azure Services Compared: Azure Container Instances • Serverless Container Platform • Good to run background-jobs that are not time-intense • ACI can run Windows and Linux Containers • Configuration Data, Storage etc is linked to the container upon deployment Hosting Guidance

Slide 28

Slide 28 text

Azure Services Compared: Azure Container Instances • Observability • Users typically intergrate workloads running in Azure Container Instances with Azure Application Insights and Azure Monitor (Azure Log Analytics Workspace) • Scalability • Users can not scale containers in ACI • However multiple containers can be deployed at the same point in time Hosting Guidance

Slide 29

Slide 29 text

Azure Services Compared: Azure Container Apps • Serverless Cotnainer Runtime • Based on top of Azure Kubernetes Service, KEDA, DAPR, and Envoy Proxy • Hides Kubernetes complexity from the user • Consumption based pricing model • Seamless integration with many other Azure Services Hosting Guidance

Slide 30

Slide 30 text

Azure Services Compared: Azure Container Apps • Observability • Azure Container Apps stream service and application logs to Azure Log Analytics Workspace • Native Azure Monitor integration has just landed in public preview • Scalability • Users can configure individual scaling per container using KEDA scaling rules Hosting Guidance

Slide 31

Slide 31 text

Automate your Hosting Platform Demo

Slide 32

Slide 32 text

Categorize Azure Services by cloud layer • Platform as a Service • Azure App Services • Azure Web App • Azure Web App for Containers • Managed Kubernetes • Azure Kubernetes Service (AKS) • Serverless • Azure Container Instance (ACI) • Azure Container Apps (ACA) Hosting Guidance

Slide 33

Slide 33 text

Categorize Azure Serivces by type of distributable • Compilation Artifacts • Azure App Services • Azure Web App • Container Images • Azure App Services • Azure Web App for Containers • Managed Kubernetes • Azure Kubernetes Service (AKS) • Serverless • Azure Container Instance (ACI) • Azure Container Apps (ACA) Hosting Guidance

Slide 34

Slide 34 text

Cloud-Native apps in Azure • Use Kubernetes only if there is a actual need for it • For many applications Azure Container Apps is more than enough • Keep in mind, that non-Kubernetes opportunities lead to a cloud-vendor-lock-in • App Services with Containers (Azure Web App for Containers) may need some special treatment (sometimes) • There are quotas that constraint the number of container groups you can deploy to Azure Container Instances (ACI) per Hour (actually 300 -> could be increased by filing a support request) Hosting Guidance

Slide 35

Slide 35 text

Common Azure Service compared - Deploy .NET workloads to different Azure services Demo

Slide 36

Slide 36 text

• Introduction • Implementing a decision model • Hosting Guidance • Conclusion Agenda

Slide 37

Slide 37 text

• Introduction • Implementing a decision model • Hosting Guidance • Conclusion Agenda

Slide 38

Slide 38 text

• Check Regulatory Compliance as early as possible because they will affect your decision • If you have to do multi-cloud use Kubernetes • Use Kubernetes only if you have to! • Consider running Kubernetes on your own only when you’ve a team that knows Kubernetes and takes care about it • Consider building you app as cloud-agnostic as possible • Ask the “run vs rent” question for every dependency Conclusion

Slide 39

Slide 39 text

Thanks for your attention @ThorstenHans