This article discusses Google Cloud Platform's compute offerings and how they compare to traditional data center technologies. The article focuses on Google Compute Engine, Cloud Platform's Infrastructure-as-a-Service (IaaS) product.
Service model comparison
Typically, data centers use server virtualization, in which multiple virtual Unix/Linux or Windows servers can be run on a single physical machine. These virtual machines are created, provisioned, and managed through a software suite such as VMware vSphere or XenCenter.
Compute Engine uses this model as well, combining server virtualization and related management tools into an integrated suite. On Compute Engine, virtual machines are called virtual machine (VM) instances. You can create and manage these instances in several ways, including:
- The Google Cloud Console, a web UI that is comparable to management tools like vCenter or XenCenter.
- The Google Cloud SDK.
- The Compute Engine API, which allows you to interact with your Compute Engine resources from applications.
Compute Engine eliminates a great deal of the administrative overhead associated with virtual machine management. You no longer have to worry about provisioning physical server, network, or storage capacity, nor do you have to worry about setting up and configuring your physical network. On the software side of things, you no longer need to worry about installing and updating virtual management tools; handling automatic updates of virtual hypervisor software, server firmware, and related tools; or migrating your virtual machines during physical machine maintenance. All of these tasks are handled seamlessly, behind the scenes, by Google.
Capacity planning and resource provisioning
In traditional data centers, you typically spend cycles each quarter reviewing current resource requirements and forecasting future ones. You have to consider physical, logistical, and human-resource-related concerns such as rack space, cooling, electricity, bandwidth, cabling, procurement times, shipping times, and available engineers to actually rack and stack new gear. Beyond that, you have to actively manage the capacity and workload distributions so that resource-intensive jobs, such as Hadoop pipelines, don't interfere with services that must be highly available, such as web servers.
In contrast, when you use Compute Engine, you hand off the bulk of your capacity planning to Google. You can scale up and scale down your VM instances as needed. Because you pay for what you use on a per-second basis, you can optimize your costs without having to pay for excess capacity you don't need, or need only at peak traffic times. To help you save costs, the Cloud Console will even notify you if it detects that you have underutilized instances that can be resized or deleted.
In addition, when you create an instance, you are allocated the RAM and CPUs you specified for that instance. Your performance will not degrade due to other instances or services taking up additional resources on your instance's physical host machine.
Cloud Platform does require that you manage your quota, which specifies the number of resources you are allowed to consume on Cloud Platform. You can easily review and request additional quota in the Cloud Console. To help avoid hitting quota ceilings when using Cloud Platform's APIs, proactively request additional quota in advance, especially when you expect large increases. To manage your expenses, as well as to restrict people and processes from consuming too many resources, you can also request decreases to your quota.
Monthly uptime guarantees
Compute Engine provides a service level agreement (SLA) that provides a monthly uptime percentage of at least 99.95%, subject to certain limitations. For more details, see Google Compute Engine SLA.
Basic configuration and management
Compute Engine provides the same basic functionality and flexibility you have come to expect from popular hypervisor services such as VMware ESXi, KVM, and Xen. As with these services, you can:
- Customize the available CPU and RAM of your VM instances, or use one of Compute Engine's predefined machine types.
- Configure custom startup scripts and shutdown scripts for your VM instances.
- Store and retrieve custom metadata associated with a VM instance.
- Remotely access the serial console for troubleshooting.
- Rapidly provision and start VM instances
As with other virtual machines, you instantiate Compute Engine VM instances from disk images. Compute Engine supports several different approaches:
Use Compute Engine's predefined machine images. Compute Engine offers predefined images for several operating systems and related configurations, including:
- Red Hat Enterprise Linux (Premium)
- SUSE (Premium)
- Windows Server 2008 R2, 2012, 2016 (Premium)
- SQL Server on Windows Server (Premium)
Use a predefined image as a starting point, customize it to your needs, and then export the end result as a custom machine image.
Import an existing Linux image from a Virtualbox image, a raw disk image, or an Amazon Machine Image.
Create a custom image from scratch and configure it to be runnable on a Compute Engine instance.
Access and permissions
You can connect to your Compute Engine instances using SSH, RDP, or
The Cloud Console provides a browser-based SSH terminal, and the
gcloud command-line tool allows you to establish a connection through the
terminal of your choice. If you choose to enable static external IPs for your
instances, you can use traditional tools such as Windows Remote Desktop or
ssh as well.
A VM instance can connect to Cloud Platform resources by using a service account. A service account is a special Google account that can be used by applications to access Google services programmatically. This account belongs to your application or a VM instance instead of to an individual end user. Your application uses the service account to call the API of a service, so that the users aren't directly involved.
Cloud Platform provides Identity and Access Management (IAM) for federated identity management and granular access management. For a discussion of IAM as it pertains to Compute Engine, see Identity and Access Management Roles. For a more general discussion about identity management on Cloud Platform, see the Management article.
You can declaratively manage the provisioning and configuration of your compute resources—including VM instances, disks, networking, and nearly all other resources within your Cloud Platform project—with Google Cloud Deployment Manager. Deployment Manager lets you use simple data markup to customize and automate your deployments. For configuration management and automation within your VM instances, you can use the same tools you're already using, such as Chef, Puppet, Packer, or Vagrant.
For a more complete discussion of resource provisioning on Cloud Platform, see the Management article.
For tasks that can be preempted and continued on a different host, Cloud Platform offers preemptible VMs. Preemptible VMs are exactly like regular VMs, but they can be preempted: that is, they can’t run for more than 24 hours, and Google can preempt the VM earlier if the capacity is needed for other purposes. Preemptible VMs can be up to 80% less expensive than standard VM instances, depending on the instance type you choose.
Compute Engine VM instances use persistent disk, or virtualized block storage, for boot and storage disk volumes. Persistent disk comes in standard (HDD) and SSD volume types, and you can dynamically provision up to 128 persistent disks depending on your VM's machine type. For more information on Compute Engine persistent disk, see the Storage article.
Compute Engine provides software-defined networking, in which you can configure your private and public networks on Compute Engine at the software level. For a discussion of how Cloud Platform networking compares to traditional data center networking, see the Networking article.
Migration and recovery
By default, Compute Engine enables live migration, in which your instances are automatically and seamlessly migrated when the physical hardware requires maintenance.
As with standard hypervisor suites, Compute Engine also allows you to take live snapshots of VM instances. You can use these snapshots to create new instances within a zone or move an instance to a different zone.
If your Compute Engine VM instance is terminated due to issues with the underlying physical host, the instance will recover automatically on a different host within the same zone. You can also elect to have your machines stay down by turning off automatic restart.
See Compute Engine pricing for full pricing details.