
Yu Li
Principal Architect, Director
Microsoft Azure offers a wide range of container services and serverless computing. Many cloud architects and public cloud leaders are therefore faced with the question of which services are suitable for their use case. In this blog I provide an overview of the services and scenarios and thus facilitate architectural decisions.
Author: Yu Li
The Microsoft Azure ecosystem offers a very wide range of services related to containers and serverless apps. The diversity of the public cloud offering brings flexibility, efficiency and innovation. But it also poses challenges for many cloud architects and public cloud managers when it comes to architectural decisions. It is not unusual for me to have the feeling that I can no longer see the forest for the trees. A decision tree can provide clarity and an overview.
Which service makes sense when depends on the deployment scenario and the core function. To provide a clear overview, I show six relevant Microsoft Azure services in the context of containers and serverless, their core functions and the deployment scenarios in Figure 1.
The selected six Azure services cover one or more of the following core functions:
On the services and under the different scenarios, I can make the following recommendations on when to apply them:
Azure Red Hat Openshift. Openshift is one of the most popular Kubernetes variants and is used by many companies for their private cloud. For some time now, Openshift has also been available on Azure in a managed version. Openshift offers out-of-the-box many enterprise-friendly features such as monitoring, logging, CI/CD that do not come with Kubernetes. With Azure Kubernetes Service, these have to be covered, for example, with services such as Azure DevOps (CI/CD) or Azure Monitor. However, Openshift also charges a corresponding price for this. In addition to the infrastructure costs (VMs), license costs (e.g. $124 for a D4s v3 VM) must also be paid. In comparison, AKS does not incur any license costs in addition to the infrastructure costs (VMs) [2][3]. Moreover, AKS is already fully integrated into the Azure ecosystem, such as Azure DevOps or Azure Monitor Security Center. In this regard, an informed consideration is essential.
Recommendation 6 → Consider Azure Red Hat Openshift if you are already using Openshift for private cloud and on-prem and have a hybrid cloud strategy.
Azure Functions is the serverless offering from Microsoft Azure. When using Azure Functions, Microsoft Azure handles the operation and scaling of code logic, allowing the DevOps team to focus on functional requirements. Azure Function provides built-in integration with Application Insights for logging and monitoring. For CI/CD, many options are supported, such as Azure Pipelines or GitHub Actions. With numerous triggers and bindings, you can integrate other services like Azure Storage Account with little effort. Depending on your needs, Azure Functions scale automatically and scaling is completely handled by cloud providers. However, there are also disadvantages such as vendor lock-in or latency when using Serverless. I have reflected more details on advantages and disadvantages of Serverless in this deep dive blog.[4]
Recommendation 7 → Serverless is not suitable for every scenario. Deploy Azure Functions for the appropriate scenario like event-based architecture.
Azure Container Instance + Virtual Nodes. The combination enables AKS to scale in seconds and with ease. Azure Container Instances (ACI) are managed services for running short-lived container instances. For example, ACI caches the base operating system image to accelerate the deployment of short-lived container workloads. ACI enables faster scaling compared to Azure App Service for Containers or VMs. Azure Virtual Nodes - as a super complement to Azure Container Instance - integrates AKS with Azure Container Instance at the network level. Thus, the Kubernetes API is extended to support Azure Container Instance. The combination of Azure Container Instance and Virtual Nodes allows faster response to peak loads because no VMs need to be created to scale up. This combination is considered Microsoft's approach to evolve AKS to Serverless Kubernetes.
Recommendation 8 → Consider combining Azure Container Service and Virtual Nodes for applications with many peak loads vs. occasional calls.
To help make architectural decisions, I've summarized the six Azure Container and Serverless Services and their core tasks in a decision tree below. This provides a clear overview and I can find the appropriate Azure Container & Serverless Apps service depending on the situation.
Azure's wide range of services related to containers and serverless can make it hard to see the forest for the trees. It's a matter of finding the right service for different scenarios to take advantage of them. This is also critical to project success. Imagine choosing an "aircraft carrier" service for a "rubber boat" problem. This makes the cost and complexity skyrocket, but the return is the same. Get a clear overview of Azure services and visualize their pros and cons. This will help you make the right architectural decision. The decision tree is one way to keep everything in perspective so you can make the right decision for your challenge.
[1] Microsoft App Service Easy Auth. easyauth/index.html at master · cgillum/easyauth (github.com)
[3] Pricing Azure Kubernetes Service