Google Compute Engine: Hands-On Review

Google Compute Engine is a stable, reliable, and fast provider of on-demand computing resources. But it offers fewer features than rival Amazon Web Services.

Google on Thursday announced the Google Compute Engine (GCE), an Infrastructure-as-a-Service (IaaS) offering that allows users to launch virtual servers in Google's own data centers. The IaaS market is one that has been dominated by Amazon Web Services (AWS), but Microsoft's recent announcement that it would launch an IaaS offering with Azure earlier this month, combined with Google's announcement Thursday, indicate that Amazon's hold will loosen. Google brings a great deal of credibility to its IaaS offering, as users will be able to run their applications on the same infrastructure that Google uses for its Internet-scale, battle-tested Web services, like Gmail, Maps, and Search.

In my current role as VP, research and development for BuildFax, I have had the opportunity to work with GCE for more than a month, and to compare it to the other IaaS vendor offerings that I have used during the past four years. Overall, GCE is as stable, reliable, and fast a provider of on-demand computing resources as any, and provides more consistent real-world performance than any other public cloud I have tested. Whether users switch from AWS to GCE will be largely dependent upon whether they can forgo the additional services that AWS provides, and if GCE offers significant price or performance benefits over AWS.

Services

GCE offers a variety of machine types and, at present, several Ubuntu and CentOS images for those machine types. I anticipate that Google will add to both the machine type and image offerings, although it may take them a while to get to the kind of variety that AWS has today. Like other self-signup IaaS providers, GCE uses an API to launch and terminate servers. Unlike some other IaaS providers, GCE has a number of "advanced" cloud computing features: user-level access to individual servers; persistent, attachable storage; specifying the data center/zone in which to launch the virtual machine; and robust external firewall rules.

The Good Stuff

Even though GCE has been in private beta, it has been rock-solid for me as far as launching servers quickly on demand and delivering consistent server performance. I have had much worse experiences with a few public clouds that aren't in beta. Servers launch amazingly fast; even though my average server launch time on AWS has dropped from eight minutes four years ago to less than two minutes today, GCE smokes AWS here. I haven't had a server take more than one minute to launch with GCE.

GCE provides a very nice command-line utility for interacting with its API. Both the utility and the GCE API highlight annoyances that exist with Amazon's variety of different command-line programs. GCE's "ssh" command is fabulous: after launching a virtual machine, you can call the GCE API and have it create a user, private key, and related authorized_keys entry for that VM with a single, easy command-line call. In contrast, AWS requires specifying one private key for root at launch, and then requires that you keep that key safe and remember where it is to log into the VM.

In real-world benchmarks, using full copies of my company's production database and replicas of our application servers, we found that VMs on GCE--in this private beta period--had more consistent performance than comparable servers on AWS. Of note, the GCE hardware is used for many of Google's internal applications, so it wasn't just GCE testers hitting the servers; the underlying hardware was under significant load.

Finally, GCE plugs into RightScale, a cloud management platform that we use at BuildFax. This means that launching our applications servers was as simple as pointing a ServerTemplate at the GCE cloud, and I didn't have to spend any time installing or configuring software, something that would ordinarily be very time-consuming. With the arrival of more and more competitors to Amazon EC2, running a cloud management platform that allows deploying and managing similar virtual machines across multiple clouds is becoming more and more important to avoiding lock-in and increasing stability and efficiency.

Editor's Note: Writer Joe Emison adds the following: "A prior version of this review ran with benchmark numbers and comments based upon pre-launch hardware that is inferior to the hardware that GCE has launched with. When the benchmarks are re-run on the new hardware, I will post them. I regret the error." Zencoder has published its own Google Compute Engine vs. Amazon EC2 benchmark study. Read a follow-up report with the new benchmark results at Google IaaS Vs. Amazon EC2: New Benchmarks.

This is the first comparison of any IaaSGÇÖs service that I have seen. I am not surprised that a veteran, Amazon, in this field is out scoring a rookie, Google. I have read the review that was written and linked in the article but I am unclear. Are the comparisons equal, are they comparing apples to apples? Does Amazon offer the exact same services with their packages as Google in this comparison? If there are any differences and what are they?

Enterprise cloud adoption has evolved to the point where hybrid public/private cloud designs and use of multiple providers is common. Who among us has mastered provisioning resources in different clouds; allocating the right resources to each application; assigning applications to the "best" cloud provider based on performance or reliability requirements.