Containerization with Azure

One of the key considerations for cloud computing is selecting the right technology to meet customers and system requirements.

What is Containerization?

Containerization is an approach to software development in which an application or service, its dependencies, and its configuration (abstracted as deployment manifest files) are packaged together as a container image. The containerized application can be tested as a unit and deployed as a container image instance to the host operating system (OS).

One benefit of containerization is scalability. You can scale out quickly by creating new containers for short-term tasks. From an application point of view, instantiating an image (creating a container) is similar to instantiating a process like a service or a web app.

Cloud platforms support scalability, it is really easy to manage dynamic workloads with automatic scaling. Containers is fundamental if you need scalability in your solution.

Azure Technologies for Containers

A quick overview of the various options to support containers.

Simplify the deployment, management, and operations of KubernetesAzure Kubernetes Service (AKS)
Quickly create powerful cloud apps for web and mobileApp Service
Easily run containers on Azure without managing serversContainer Instances
Develop microservices and orchestrate containers on Windows or LinuxService Fabric
Fully managed microservice development with built-in service discovery for Java Spring BootAzure Spring Cloud
Store and manage container images across all types of Azure deploymentsContainer Registry
Comparing the Capabilities

Other than Container Registry which is used to manage container images, the rest support similar capabilities. How do you select the appropriate service for your solution? Let us look at the different capabilities of these technologies.

CapabilitiesKubernetes ServiceSpring CloudService FabricApp ServiceContainer Instances
Service TypeCaaSPaaSPaaSPaaSPaaS
Azure Costs$$$$$$$$$$$$
Auto-ScalingCluster AutoscalerAutoscaleAutoscaling PoliciesAutoscale
Settings
Yes
Load-BalancingLoad BalancerTraffic Manager, Front Door,
App Gateway
Cluster BalancingTraffic Manager,
Front Door
No
Multi-RegionYesYesYesYesNo
Azure AD integrationYesYesYesYesYes
On-PremiseYesNoYesNoNo

Selecting a Compute Service

If you are comparing containerized services against other compute services, there is a useful decision flowchart here to help you get started.

Most Flexible

Azure Kubernetes Service is the most flexible cloud native service, and provides a lot of options and capabilities for your use. It is most suitable for complex projects.

Easiest to Use

Azure Container Instances is a low cost full-fledged orchestration service that enables you to quickly start and build a simple project.

Large-Scale Mission Critical App

Azure Service Fabric can scale up to thousands of machines, and is suitable for low latency high throughput workloads. It provides a fully supported Microsoft technology stack for .NET integration.

Global Web App

Azure App Service is a managed service that can quickly support multi-region websites and containerized backend. It is server-less, meaning there are no servers to maintain, which is useful for cutting down operational complexities.

Spring Boot on Cloud

Azure Spring Cloud is a managed service that can support Java-based Spring Boot apps with no code changes. If you already have a workload based on Java Spring Boot, it is easiest to migrate to Azure Spring Cloud. As a PaaS, Microsoft will manage the service, giving you time to focus on your applications and business.


Given that not all the capabilities are compared and there would be continuous improvement on the services, I hope this serves as a quick start for designing the cloud architecture of your solution.

Leave a comment