Microsoft Compute Services:
Microsoft Azure Compute consists of 9 services: Virtual Machines, Virtual Machine Scale Sets, Batch, Cloud Services, Service Fabric, Kubernetes Service, Container Instances, Azure Functions and Azure App Service.
Virtual Machines, Virtual Machine Scale Sets, and Azure Batch make up the IaaS compute functions, while Cloud Services, Service Fabric, Kubernetes Service, Container Instances, Azure Functions and Azure Web Apps make up the PaaS compute function.
Each of these functions have their own set of features and functionality that could be used to host and deliver applications and services to end users.
Microsoft Azure Virtual Machines are hosted on an underlying Hyper-V infrastructure at a datacenter of your choice. These virtual machines are one of the many types of on-demand scalable resources that Azure offers. Being able to run just the virtual machine means that there are no additional costs of having to buy and maintain the underlying physical hardware.
Virtual Machines running in the cloud are part of the Infrastructure as a Service suite. Virtual machines contain virtual hard disk files which are stored as Azure page blob files in a VHD format. These page blob files are stored in an Azure storage account.
Depending on the deployment model that was used to deploy the virtual machine, you may be required to place your virtual machine on a network in order for it to be able to communicate with other devices. Access to virtual machines can be secured by configuring endpoints on the virtual machine to allow or deny access. There are a number of different workloads that can be hosted on Azure virtual machines, for example, development and testing, disaster recovery testing or even extending your own datacenter into Azure.
Virtual Machine Scale Sets:
Azure Virtual Machine Scale Sets is a compute resource that is used to deploy and manage a set of identical VMs. It is designed to support true auto scale of IaaS VM’s with no pre-provisioning. With earlier versions of virtual machines, the virtual machines themselves had to exist before they could be auto scaled.
Azure VMSS can leverage the benefits of Azure Load Balancers, and Application Gateways at ease. With increase in scale, a new virtual machine is spun up along with all the features and configurations mirroring the original.
Hosting multiple virtual machines can sometimes require high availability. This is built-in with virtual machine scale sets. With increase in size of the VMs, it is automatically taken case in VMSS by adjusting the fault and update domains to make sure to provide utmost availability reducing the downtime. Support for manual roll outs of OS image updates without downtime is another feature of VMSS.
Azure Batch is a compute resource which at its core is a high scale job scheduling engine that is available as a managed service. This includes running a large volume of similar tasks to get some desired result, for example, software testing, engineering stress analysis or financial risk modeling and so on.
At a high level, this service ensures the ability to spin up and manage virtual machines and schedule jobs and tasks that can be run by them.
The Azure Batch platform can be communicated with by means of Batch API’s, Batch PowerShell cmdlets, Azure CLI & the Batch Management dot NET framework. This service allows to execute your applications in parallel, and at scale. Scheduled jobs can be performed without any manual intervention at any point in time including creation, configuration or setting up VMs, VNets or handling any infra related jobs. Everything is automatically taken care by the service itself.
Azure Service Fabric:
Azure Service Fabric is a compute resource that is Microsoft’s next generation Platform as a Service offering. It provides software developers with a platform on which they can develop their applications composed of microservices.
Microservices are not a new concept and have been in existence since 2005. They are tiny, individual snips that talk with one another to create a more complex application. The idea is to move away from developing a monolithic application which has its components closely tied together and to instead break up the application into smaller independent components known as microservices. This approach has multiple benefits including testing, maintenance and so on. All of which can be done at a component level as opposed to an application level.
The service fabric platform consists of a number of underlying components; for example, virtual machines, operating systems, networking, storage and so on, all of which are managed by Microsoft and are transparent to the developer.
Azure Kubernetes Services:
With changing trends in application development process, the need to move to a different approach is looked like an important aspect. Azure Kubernetes Services is looked upon as a leading floor that enabled the chance to develop a more sustainable and tolerant workload for the developed applications.
This service is designed to reduce complexity and make the process simple to use. This is further simplified and segregated as two components:
– Cluster Master
Cluster master helps with the more important aspect of orchestration of the application.
Nodes assists with workload management of the developed applications.
As every other Azure service, we only pay for the service we use and nothing more with very limited responsibility to deploy and maintain. For example, as a user we only take care of the agent nodes. Rest of it including the Kubernetes master are taken case by Azure itself.
Azure Container Instances:
When compared to AKS, for instances where we need a complete hold over the orchestration including the upgrades, custom updates, scaling up and down as per the traffic Azure containers instance also is a best option where jobs can be automated without much intervention. These also have a great advantage over Azure VMs, as in this service can be spun up with out spending any time in creating any manual VMs.
It is a serverless compute service, as the name suggests a job can be run using this service without having to take or make an effort to provision any infrastructure to have the job run. It acts when there is a trigger to enable the job to run. This is a lightweight service that is supported in any language the developer prefers. As mentioned always we only pay for the time the job will be run as there is no infrastructure.
Azure App services:
This service is used to host web-based applications. Applications which are web based developed using Azure will run under this service and this ensures a fully manageable floor to host websites which are cloud based and applications based on web. This also supports any language also support scripts and PowerShell commands.