Azure Compute & Container Services
Azure Cloud Service Model
In this section, we will learn about Azure Compute and its hosting Model. We will also get overview of Azure Compute Products like Azure VM, Service Fabric, APP Service, Azure Function and Hosting Model.
Azure Cloud Model is based on below principles:
Iaas (Infrastructure as a Service): This is the very earliest Cloud Model, where Software application executes on standalone or Virtual Server. OS runs on Server and server is connected to Network. In this Microsoft is responsible for managing the Hardware and its Virtualization, while OS and other essential required for Software is customer responsibility.
Microsoft provides the chosen compute power (CPU) and Memory, Storage and ensure its connectivity to Network.
Below figure describes Cloud Service Models and their responsibilities.
CaaS (Container as Service): It is one of the newest Cloud Models on Azure. It provides all benefits of IaaS and provides the OS management. It provides Container as Service, product like Docker, which allow bundling of software, dependent libraries, and configuration into a single package. That package can be deployed into container hosting model.
Azure Kubernetes Service, Azure Container Service, Azure Service fabric provides containerized package service on Azure.
PaaS (Platform as Service): In this Model, all hardware, OS, Container, run time is managed by Azure, where Customer responsibility is only Application. A runtime is library of code, that application is dependent on, Example: .NET Framework, .NET Core, Java, PHP, Python.
FaaS (Function as Service): This model is referred as Serverless Computing, and Azure Function provides this service. FaaS does not require creation of compute instance, here you simply create an Azure Function and deploy your code to it. Now the platform is responsible to allocate enough compute to execute the code.
Choosing Right Hosting Model:
It is very essential to understand your application and its requirement, before you allocate Azure resources. Example: Can your code can be run using Azure Function, or you need to choose other Compute Model like IaaS, PaaS.
Below diagram provides the process to choose, which model you need to choose for your Azure Compute.
In above figure, there are seven possible compute options presented, which will helps you reduce the number of options to two or three, based on customer requirement.
Now Let’s discuss about it. Now Let’s suppose customer wants to migrate an existing Application, so in Decision tree: it will follow path “NO” in Create NEW decision box. Now next decision point is Migrate. Now here, lift and shift option is chosen by customer with no cloud optimization (Cloud Optimized – NO).
Now once you choose this option, you have now reduced the number of recommendation options to three Azure compute products.
- Azure Containers Instances
- Azure Virtual Machines
- Azure APP Service
Now can your Solution run on Container, can it be containerized? if Yes, then use the Azure Compute product for your Application Code and proceed towards Azure Container instances. If No, is the product a Web Application or a Web API? If Yes then the best option for Azure Compute would be an Azure App Service. If the code being migrated to Azure is not Web/Internet based, then your best choice is an Azure VM.
Now lets suppose you choose yes for Cloud Optimized, (using this feature, it will increase number of available compute option) . Now you have to choose for HPC (big compute, which is IT solution that uses a large amount of CPU , GPU and memory to perform its function). These types of workloads are mostly used in Finance, genomics, and weather Modeling.
If your application falls in to HPC category, then Azure Batch is to be used. And HPC is not your choice, so can your application run in a Serverless context, if yes then Azure function is to be used.
The difference between Azure Batch and Azure Function is the Size and scale required for processing. The program triggered from Azure batch job can be small and compact, but amount of compute power required to run would likely consume more CPU and memory than is available from an Azure Function.
In both cases, HPC and Serverless are scaled dynamically for you so that the program will successfully complete.
Now remaining three compute options are focused primarily on orchestration of containerized workload. Most of the legacy enterprise application cannot simply containerized and orchestrated without significant investment in both application re-design and IT training.
If the Application does not require Full Orchestration, then you should use Azure Container Instances. Azure Service fabric is mostly used on Microsoft Stack (.NET and Windows) and AKS is focused on open source stacks ( PHP , Python , Node.js, Linux).
Azure Container Service
Azure Container Service (ACI) is container service from Microsoft, for those customers, who want to run their application in isolated containers.
Containers is an application or program that has all dependencies deployed in to a server, which are required to run a customer Application.
Below are some benefits, for running application code in containers.
- Containers are Portable means it your code can be run from anywhere, on local Environment, On-Premises Server, or in the Cloud.
- Containers are Lightweight because it reuses Operating System of the host and there is no need to have separate OS along with containers.
- Containers are Flexible because all kinds of Code, can it be small, simple, Complex, large, all can be easily run in to containers.
- Containers are Scalable because you can add any numbers of servers to run containers, to provide more compute power when usage increases.
When a Container package is deployed in ACI, it receives a public facing IP address and domain name with the extension *. . azurecontaier.io, where * is name of ACI container, that must be unique for given region.
ACI service is still not available to all regions, however its deployment globally is on going and will be available worldwide soon.