Microsoft Azure Containers - An Architect Perspective
Firstly, designing a solution is often overlooked, underestimated and it is not just about creating a solution/diagram. It is the thoughts, the homework and the process involved to build at that solution/diagram.
So, we all know what a container is in Microsoft Azure, but how does it play a role in architecting the right solution for a startup, a small to mid-size business and an enterprise?
In this article, I would like to share my insights into this topic.
The different container technologies offered by Microsoft Azure are:
Let us briefly understand the 5 solutions at a high level with its pros and cons.
Azure?App Service is a?Platform-as-a-Service?(PaaS) offering originally?designed to run web applications, including websites and web APIs, later Container hosting was added.?
Pros:
Cons:
2. Azure Functions
The technical definitions can be found on the internet, but to me functions are like the quickies in Containerization. These are the serverless containers, what does it mean? It is all about on-demand compute. They are offline when not needed and come to life when we need execution.
Comes with 3 payment plans:
Pros:
Cons:
The last con,can be better explained if you see my github link to deploy functions. ContainersInAzure/DeployingContainersAzureFunctions at main · VishnuBharathR/ContainersInAzure (github.com)
3. Azure Container Instances (ACI).
Microsoft’s first?serverless container platform is?Azure Container Instances.?It is the fastest and simplest way to run both Linux and Windows containers in Azure. ACI even guarantees that your container is as isolated as it would be running in a VM. Unlike running a container in a VM, with ACI, you don’t have to manage any underlying operating system, hardware, or patching that comes with running servers. This is perfect for developers whose machines might not be up to the task of running multiple containers.
Pros:
Cons:
4. Azure Container Apps
Started in 2021, this Out-of-the-box Azure Container?Apps comes with?support for open source services such as?Kubernetes Event Driven Autoscaling?(KEDA),?Distributed Application Runtime?(Dapr), and a fully managed Ingress controller. This solution is not in GA atleast for now, but will be soon. So watch out.
Let us understand some of these terminologies to better explain Azure Container Apps.
KEDA is used to automatically scale?your workloads.It uses a concept of scalers, which include message queues, SQL queries, and even Azure DevOps pipelines.
Dapr is used to help?with communication?between workloads, publisher/subscriber messaging systems such as Azure Service Bus, and more.?
Envoy is used to enable Ingress?for your workload. You can think of an Ingress as the router that contains the rules that allow traffic to your workload. Traffic from the outside world to your solution needs to be controlled. An Ingress does just that.
Pods come from Kubernetes and are the smallest deployable unit.
领英推荐
Pros:
Cons:
5. Azure Kubernetes Service.
This is the Managed solution from Microsoft for Container Orchestration. The ones for the big bucks and all the features that containers can offer.
Pros:
Cons:
With a fair understanding of the solutions offered, let me try to fit in its use cases in real world scenarios.
If i am a solution architect for a startup, i would ask a couple of questions. The business requirements, the objective, the expected customers growth for next 6-12 months, green field or brown field and budget. Evaluate the pros and cons of all the 5 containers based on the requirement and come up with a solution.
My recommended solution would be to an average startup, Azure Container Apps which supports virtual network integration and is essentially a fully managed solution from Microsoft.?We can provide the Ops team with a lot of options without the management burden. Additionally, providing a set of container apps per customer also helps with scaling per customer and determining the infrastructure costs for customers. Also there is Security, financial cost savings incurred and gives room for future growth when it can make a unicorn without having to redeploy from scratch.
2. Small and Medium Sized Enterprises
Once a startup becomes more successful and business growing, its scaling up, and soon will be a small- or medium-sized business. This means there is a solid customer base and have been servicing those customers for some time now.
Now Governance and Security will need to be added to the solutions. Customers now need absolute isolation while providing services, network connectivity to the business unit for secure transactions.
This is where Azure Kubernetes Services will shine.
AKS can deliver on the security side, governance, traffic routing, scalability and beyond.
3. Enterprise Networks.
Now with all the features above Compliance will also be expected as a company becomes an Enterprise. This includes monitoring, logs, secure network connectivity including access via private networks along with Security, isolation between customers among many other features becomes a necessary.
Even if had 100 customers, that’s 200 Pods, By using Container insights, you?can store not only the AKS cluster logs in a central place but also your application logs. This makes troubleshooting a lot easier with Azure Monitor
Who is doing what, RBAC answers it and helps in all forms of audits.
Visualizing our solutions looks like this.
This makes Azure Kubernetes a reliable platform for an enterprise (customer) to run their containerized solutions on.
Well, the inputs provided here cannot be cut and paste anywhere as is, because the inputs to derive at a real-life solution will solely be on a situation-to-situation basis and the role of a solution architect and their expertise when given a chance, can make the right decisions in the first place for the organizations be it an upcoming startup, small-medium enterprises or large-scale enterprises and help in deploying along the way both for green field and brown field solutions accordingly.
Here is my github link with the Azure CLI commands to create the different container solutions discussed here. VishnuBharathR/ContainersInAzure: Here are the Azure CLI commands with example to create different containers in Microsoft Azure (github.com)
Please feel free to reach out if any questions i can answer with.