Monday, January 7, 2019

Azure Containers Offerings Comparison

Updates: This was last updated 1/7/2019. Azure Containers offerings are constantly changing and services are moving from PREVIEW to GA all the time.
  • *GA = Generally Available, backed by SLAs and guaranteed up-time. Meant for production workloads
  • *PREVIEW = available for beta use/early access use, but not backed by SLA or guaranteed up-time, not meant for production workloads yet
  • *SLA = Service Level Agreement
Note: Price estimates are for average workloads on the service and could be less than or exceed the estimate depending on how you utilize the service.

Service Ease of Use / Cost / OS Support Scalability General Use Case
Azure Container Instances (PaaS) Easiest and quickest Container solution to setup.

Very cheap price for most workloads ($0-10, or under $100 per month on average for most workloads). More on pricing here.

Windows and Linux in GA
It is not possible to vertically scale a specific ACI instance to have more CPU/Memory, you would need to redeploy that container in order to get more. You can horizontally scale by adding more containers, however, ACI does not support load balancing so you would need to manage it yourself. Azure Container Instances offers the fastest and simplest way to run a container in Azure, without having to provision any virtual machines or learning new tools—it's just your application, in a container, running in the cloud. With Azure Container Instances, you can easily run containers with a single command. Wide spectrum of scenarios including batch processing, continuous integration, and event-driven computing. We hear consistently from customers that ACI is uniquely suited to handle their burst workloads. ACI supports quick, cleanly packaged burst compute that removes the overhead of managing cluster machines. Some of our largest customers are also using ACI for data processing where source data is ingested, processed, and placed in a durable store such as Azure Blob Storage. By processing the data with ACI rather than statically provisioned virtual machines, you can achieve significant cost savings due to ACI’s granular per-second billing.

Can also be used in conjunction with AKS to elastically burst from your Azure Kubernetes Service (AKS) cluster into ACI.
App Services: Containers (PaaS) Free option available for test workloads. Moderate price for most workloads (10's to 100's per month on average for most workloads. 1000's for Isolated Service Plan Tiers). More on pricing here.

Linux fully supported in GA. Windows supported in PREVIEW mode.
Built-in auto-scaling (vertically and horizontally) and load balancing available. Just pull container images from Docker Hub or a private Azure Container Registry, and Web App for Containers will deploy the containerized app with your preferred dependencies to production in seconds. The platform automatically takes care of OS patching, capacity provisioning, and load balancing. Can be used for simple Web Apps that require scaling, do not require orchestration, and have great cost savings.
Azure Container Service (ACS) (IaaS) To be depreciated in 2020 - Do not create new applications on ACS anymore. Azure Container Service Will Retire on January 31, 2020 -- --
Azure Kubernetes Service (AKS) (PaaS) Difficult. Need to learn to use Docker and command line, Kubernetes architecture and kubectl command line, and most likely Azure command line. More on pricing here.

AKS the service has no cost. AKS master nodes also have no cost. Cost is from the VMs utilized for the worker/minion nodes. Expensive for most workloads (100's to 1000's per month on average).

Linux fully supported in GA. Windows supported in PREVIEW mode.
The cluster autoscaler (CA) (PREVIEW 01/2019) can scale your agent nodes based on pending pods. It scans the cluster periodically to check for pending pods or empty nodes and increases the size if possible. By default, the CA scans for pending pods every 10 seconds and removes a node if it's unneeded for more than 10 minutes. When used with the horizontal pod autoscaler (HPA), the HPA will update pod replicas and resources as per demand. If there aren't enough nodes or unneeded nodes following this pod scaling, the CA will respond and schedule the pods on the new set of nodes.

Currently you can setup autoscale on Kubernetes itself on AKS without worry about the PREVIEW mode cluster autoscaler (CA).
Best suited for: large enterprise micro-service architectures that need to be able to be scaled on demand quickly and need as close to 100% up-time as possible and want to be able to have rolling updates with no downtime. Usually front-facing customer applications. At the moment, best for .NET Core (cross platform) on Linux containers or other general Linux container workloads.
Reference: https://azure.microsoft.com/en-us/overview/containers/

Additional Notes and Resources
  • Container Security in Microsoft Azure - August 2018
  • AKS FAQ
  • Azure automatically applies security patches to the nodes in your AKS cluster on a nightly schedule. However, you are responsible for ensuring that nodes are rebooted as required.
  • You can connect AKS to ACI, and use Kubernetes to handle orchestration and scale.
  • Docker Swarm and DC/OS will no longer supported as orchestrators on Azure and will be depreciated in Jan 2020.