Updated June 16, 2020
Compare the compute services that Microsoft and Google provide in their respective cloud environments. Compute services are typically offered under four service models:
- Infrastructure as a service (IaaS), in which users have direct, on-demand access to virtual machines, as well as a suite of related services to automate common tasks.
- Platform as a service (PaaS), in which the machine layer is abstracted away completely, and users interact with resources by way of high-level services and APIs.
- Containers as a service (CaaS), an IaaS/PaaS hybrid that abstracts away the machine layer but retains much of the flexibility of the IaaS model.
- Functions as a service (FaaS), in which users can create serverless PaaS-style microservices without having to build out full applications.
This article focuses on the IaaS services offered by Google and Microsoft.
For IaaS, Microsoft Azure offers Azure virtual machines (VMs), and Google Cloud Platform offers Compute Engine. Google and Microsoft take similar approaches to their IaaS services: both are fundamental to their respective cloud environment, and almost every type of customer workload runs on them.
At a high level, Azure's IaaS terminology and concepts map to those of Google Compute Engine as follows:
|Virtual machines||Virtual machines||Virtual machine instances|
|Images||Image (both boot-disk-only and full machine)||Image (boot-disk-only)|
|Custom images||Generalized Azure VMs||Custom images|
|VM templates||Resource Manager templates||Instance templates|
|Automatic instance scaling||Azure Autoscale||Compute Engine autoscaler|
|Supported VM import formats||VHD||RAW, OVA, VMDK, and VHD|
|Deployment locality||Regional (equivalent to Cloud Platform zones)||Zonal|
Compute Engine VM instances and Azure VMs share many of the same features. On both services, you can:
- Create instances from boot disk images.
- Launch and terminate instances on demand.
- Manage your instances without restrictions.
- Tag your instances.
- Install a variety of available operating systems on your instance.
On both Compute Engine and Azure, you can access your Windows machines through standard methods like the Windows Remote Management service and Remote Desktop Protocol (RDP).
For Linux machines, Compute Engine and Azure approach SSH-based machine access in slightly different ways. With Azure, you must include your own SSH key if you want SSH-based access to your VM. In contrast, on Compute Engine, you can create the key when you need it, even if your VM instance is already running.
Compute Engine also provides SSH from the Browser, which provides a browser-based SSH terminal for a given VM instance. In contrast to Azure Cloud Console and Google Cloud Shell, which provide an ephemeral command-line interface to their respective platforms, SSH from the Browser provides direct access to a specific VM instance from your browser. If you choose to use this feature, which is available in the Google Cloud Console, you can avoid storing keys on your local machine.
Azure and Compute Engine both offer a variety of predefined virtual machine configurations with specific amounts of virtual CPU, RAM, and network capacity. In addition, Compute Engine allows you to depart from the predefined configurations, customizing your VM instance's CPU and RAM resources to fit your workload.
The following table lists the machine types for both services as of June 2020.
|Machine Type||Azure||Compute Engine|
|Basic||Basic A0 - Basic A4||f1-micro (shared-core)
Standard_A1_v2 - Standard_A8m_v2|
Standard_D2a_v4 - Standard_D96a_v4
Standard_D2as_v4 - Standard_D96as_v4
Standard_DC1s_v2 - Standard_DC8_v2
Standard_D1_v2 - Standard_D5_v2
Standard_DS1_v2 - Standard_DS5_v2
Standard_D2_v3 - Standard_D64_v3
Standard_D2s_v3 - Standard_D64s_v3
Standard_D2_v4 - Standard_D64_v4
Standard_D2s_v4 - Standard_D64s_v4
Standard_D2d_v4 - Standard_D64d_v4
Standard_D2ds_v4 - Standard_D64ds_v4
|e2-standard-2 - e2-standard-16
n1-standard-1 - n1-standard-96
n2-standard-2 - n2-standard-80
n2d-standard-2 - n2d-standard-224
e2-highcpu-2 - e2-highcpu-16
n1-highcpu-1 - n1-highcpu-96
n2-highcpu-2 - n2-highcpu-80
n2d-highcpu-2 - n2d-highcpu-224
e2-highmem-2 - e2-highmem-16
n1-highmem-1 - n1-highmem-96
n2-highmem-2 - n2-highmem-80
n2d-highmem-2 - n2d-highmem-96
|Compute-optimized||Standard_F2s_v2 - Standard_F72s_v2||c2-standard-4 - c2-standard-60|
|Memory-optimized||Standard_D11_v2 - Standard_D15_v2|
Standard_DS11_v2 - Standard_DS15_v2
Standard_E2a_v4 - Standard_E96a_v4
Standard_E2as_v4 - Standard_E96as_v4
Standard_E2_v3 - Standard_E64i_v3
Standard_E2s_v3 - Standard_E64is_v3
Standard_E2_v4 - Standard_E64_v4
Standard_E2s_v4 - Standard_E64s_v4
Standard_E2d_v4 - Standard_E64d_v4
Standard_E2ds_v4 - Standard_E64ds_v4
Standard_M8ms - Standard_M128ms
Standard_M32ls - Standard_M64ls
Standard_M64s - Standard_M128
Standard_M208ms_v2 - Standard_M416s_v2
|m1-ultramem-40 - m1-ultramem-160
|Storage-optimized||Standard_L8s_v2 - Standard_L80s_v2||N/A|
|GPU||Standard_NC6 - Standard_NC24
Standard_ND6s - Standard_ND24rs
Standard_NV6 - Standard_NV24
Standard_NV12s_v3 - Standard_NV48s_v3
Standard_NV4as_v4 - Standard_NV32as_v4
|Attachable to any non-shared-core machine type|
|Ability to customize VM resource configuration||No||Yes|
|Shared-core machine types||N/A||e2-micro, e2-small, e2-medium
Azure provides OS images, which are boot-disk-only, and Azure VM images, which also include the VM's swap disks or data disks. Compute Engine machine images are boot-disk-only.
Azure and Compute Engine both provide a variety of platform- or community-supported images for commonly used operating systems such as Windows, Ubuntu, or Red Hat Enterprise Linux, as well as images that have various common server applications preinstalled, such as SQL Server. On both platforms, if you choose an image that uses a premium operating system that requires a license, you must pay a license fee in addition to normal VM costs.
Both platforms also have marketplaces which feature a variety of preconfigured end-to-end solutions. Azure has the Azure Marketplace, and Cloud Platform has the Cloud Launcher. These channels allow you to launch common applications on one or more VMs with minimal configuration.
Custom image import
Azure and Compute Engine both provide methods for importing existing machine images to their respective environments:
- On Azure, your uploaded machine image must be a VHD that is compatible with Azure's version of Hyper-V. You store VHDs in a storage account as page blobs.
- The Compute Engine import tool supports RAW, OVA, VMDK, and VHD machine
images. You upload your image to Google Cloud Storage and then use the
gcloudcommand line tool or Cloud Console to import the image into Compute Engine. For more details about importing images and other virtual assets into Compute Engine, see Choosing an import method.
If you build your own custom operating systems and plan to run them on Compute Engine, ensure that they meet the hardware support and kernel requirements for custom images.
Azure offers low-priority VMs as part of Azure Batch, a service designed for high-performance batch processing. Low-priority VMs are temporary VMs that become available when resources aren't being fully utilized. These VMs are cheaper than standard VMs, but can be reclaimed by their respective compute services with little notice. Due to their ephemeral nature, these VMs are most useful when applications have tasks that can be interrupted or that can use, but don't need, increased compute power.
Low-priority VMs are available only through Azure Batch, and are limited to 50 cores per Batch account by default. As of May 2017, low-priority VMs are in Preview.
Similarly, Compute Engine offers preemptible VM instances, which serve the same purpose as Azure's low-priority VMs. In contrast to low-priority VMs, preemptible VM instances are not tied to a specific service, giving them slightly more flexibility. Preemptible VM instances last a maximum of 24 hours. For more information, see Preemptible VM Instances.
Both Compute Engine and Azure support autoscaling, in which instances are created and removed according to user-defined policies. Autoscaling can be used to maintain a specific number of instances at any given point, or to adjust capacity in response to certain conditions. Autoscaled instances are created from a user-defined template.
Compute Engine and Azure implement autoscaling in similar ways:
- Azure Autoscale scales instances within a VM scale set. The VM scale set creates and removes instances according to your chosen autoscaling policy. Each new instance within the group is created from a single-instance Resource Manager template.
- Compute Engine's autoscaler scales instances within a managed instance group. The autoscaler creates and removes instances according to your chosen autoscaling policy. Each new instance within the instance group is created from an instance template.
Azure Autoscale allows for two types of autoscaling: scheduled and dynamic. With scheduled autoscaling, you configure VM scale sets to scale up or down at scheduled times. With dynamic autoscaling, you configure the VM to scale up and down according to a metric threshold such as CPU utilization or message queue length.
Both Compute Engine and Azure provide methods by which you can perform additional configuration automatically after an instance has been deployed. On Azure, you can add Azure VM Extensions to help facilitate VM configuration after deployment. On Compute Engine, you can add startup scripts to perform automated tasks each time your instance boots up, such as installing software, performing updates, or turning on services.
Compute Engine and Azure both automatically connect new VMs to an internal virtual network. In addition, you can create additional networks and launch instances into those networks in both services. For a full comparison of Cloud Platform networking and Azure networking, see the Networking article.
Azure and Compute Engine both support networked and locally attached block storage. For a detailed comparison of their block storage services, see Block storage.
This section compares the pricing models for Compute Engine and Azure VMs.
Compute Engine and Azure have similar on-demand pricing models for running VMs. Each service charges by the minute. Compute Engine has a minimum charge of ten minutes of usage. Both services allow you to run your VM indefinitely.
Compute Engine and Azure approach discount pricing in very different ways.
Microsoft offers its most substantial VM discounts through Microsoft Enterprise Agreements. These agreements allow you to get discounted pricing by committing to a base-wide installation of one or more Microsoft Server and Cloud technologies with full Software Assurance coverage. If you don't have a Microsoft Enterprise Agreement, you might also be able to get discounted rates through a reseller.
In contrast, Compute Engine provides both a sustained-use discount model and a committed-use discount model.
- Sustained-use discounts: Compute Engine automatically applies discounts to your instances depending on how long the VM instances are active in a given month. The longer you use an instance in a given month, the greater the discount. Sustained-use discounts can save you as much as 30% of the standard on-demand rate.
- Committed-use discounts: You commit to reserving some number of virtual CPUs for either a one-year or a three-year period, and are billed for usage whether or not the CPUs are fully utilized. This model is appropriate for predictable and steady state usage where you will use a specific amount of cores and memory for future workloads. Committed-use discounts can save you as much as 57% of the standard on-demand rate.
For more details about Compute Engine pricing, see Compute Engine Pricing.