
The example above is a way to modernisation of a single-tenant .Net Framework application (with limited changes to the code). The example above consist of WebApp, API and a background service that is deployed individually for every single customer. These can easily be run on App Services as a WebApp, API App and WebJob. However, if you manage 100's of customers the process of deploying and managing each of them individually can quickly become cumbersome and expensive.
In the architecture above, I have made a few assumptions
- Your application can be containerised (running .NET 3.5/4.x, see: net-container-os-targets)
- API is only used by WebApp and Jobs internally (if you need external access it will be fairly easy to integrate if you require services to be exposed externally (see: api-management-kubernetes)
- Windows service is converted to console application running in docker
Below is a GitHub walkthrough to deploy AKS with windows Cluster and App Gateway as Ingress below:
Preview - Greenfield Deployment (Windows cluster)
Azure/application-gateway-kubernetes-ingress
This is an ingress controller that can be run on Azure Kubernetes Service (AKS) to allow an Azure Application Gateway to act as the ingress for an AKS cluster. - Azure/application-gateway-kubernete...