Tips for deploying cloud applications on GCE

Cloud application developers should select an IaaS platform carefully. To aid your selection, here are pros and cons of deploying cloud applications on GCE.

Cloud application developers should do their due diligence before selecting an infrastructure as a service (IaaS) platform for developing and deploying cloud applications. Choosing the wrong platform can result in unpredictable pricing and billing models, limit development languages, limit operating system choices, provide little in the way of helping customers fulfill compliance requirements and provide insufficient security.

Let's take a look at the pros and cons of developing and deploying cloud applications on one of the more popular IaaS platforms: Google Compute Engine (GCE). GCE provides virtual machines (VMs) that run in Google-managed data centers. It lets outside businesses and software developers run their own software atop Google’s global infrastructure. The same hardware and software stack used to serve Gmail, Maps and other Google applications are used to host GCE VMs. GCE uses the Linux kernel-based VM hypervisor software (KVM). It supports a number of Linux distributions and Windows.

Google App Engine (GAE) was introduced in 2008 and GCE was announced in June 2012. GCE along with GAE are considered two of the most important services of the Google Cloud Platform, which was launched in May 2012 and became generally available in May 2013.

Characteristics of GCE

Today, the use cases often associated with GCE include computationally intensive applications, such as video transcoding and rendering, genomic sequencing, clustering, machine learning and analytics -- solving problems not very different from big data systems.

Although GAE provides developers with a "ready-made" development and deployment environment, GCE is a "roll your own" environment. Customers create their own instances and then manage them, including the software running on the VMs. GCE provides a variety of tools that give you the opportunity to interact with and manage GCE instances. For example, you can start and stop instances, attach disk storage and configure network access. Most of these things GAE would do automatically upon application need.

To start working with GCE, you first need to create a GCE project in the Developers Console (a Web-based user interface), one of three tools for interacting with GCE. A project is a collection of information about the application that you are developing, and it acts as a container for your compute engine. Disks, firewalls, networks and VMs are all associated (and are contained) within a single project.

Users can interact with GCE instances and resources using the Developers Console, with gcloud, a command line interface to manage instances and resources, or the GCE API (a RESTful interface).

GCE provides support for several machine types. A machine type provides predefined sets of configuration options, such as number of virtual CPUs and amount of virtual RAM. The machine types include[1]:

  • Standard -- a balanced combination of memory and processing power
  • High memory -- option for high-memory capacity relative to processing power
  • High CPU -- an option for lots of processing power relative to memory capacity
  • Shared cord -- less expensive, smaller configuration

GCE supports the managed VM environment used by GAE to run GAE applications on configurable GCE VMs. This feature gives GAE developers more flexibility by providing more operating system choices, more language runtime time choices, and more CPU and memory options for running GAE applications. GAE automatically manages the GCE-created VMs for developers.

GCE provides pre-emptible instances for you to create and run at lower prices than normal GCE instances. But GCE can terminate a pre-emptible instance and take some or all of its resources if the resources are needed by some other higher priced instance (not pre-emptible). GCE has a finite number of available pre-emptible instances, so creating a pre-emptible instance during peak usage may not be possible.  

With GCE, the base software for a GCE VM includes the operating system (and other systems software) and the application software and is referred to as an image. GCE supports several standard images (as do most other IaaS platforms, like AWS). But you can create your own custom images by starting from scratch or by modifying one of the standard images. Developers typically have an operating system, language development runtimes, and so on that they want to use. They can simply include this software in their images.

GCE supports several storage systems from which a developer can choose.[2] Persistent disk storage is the primary storage mechanism available for block storage and is generally the storage mechanism of choice for storing filesystem data. It also provides Google Cloud Storage for unstructured data; Cloud Datastore, a NoSQL database; and CloudSQL, a MySQL storage approach.

Like GAE, GCE takes advantage of Google's massive networking resources. Data can be transferred between GCE VMs faster than other cloud platforms that depend on the Internet for data transfer. With GCE, you get some networking and firewall capability by default -- all of the instances in a project are attached to a network and the instances can only communicate with other instances in the project. But you can configure additional networking and firewall capabilities.[3]

GCE supports global load balancing by distributing incoming requests across pools of instances across multiple regions to achieve maximum performance, throughput and availability.

Similar to GAE and AWS, GCE divides the world into regions and zones. A zone corresponds to a physical data center and a region represents a collection of zones located within a large geographical area. Currently GCE supports three regions and eight zones.

GCE offers an SLA guaranteeing a monthly uptime percentage of 99.95%. AWS offers the same guarantee.

Tips for using GCE

The list of pros and cons for GAE and for most platforms for developing and deploying cloud applications are several. Although pricing is a challenge for each cloud platform, pricing and billing models for GCE and AWS change so frequently that it is difficult to provide advice with respect to pricing. Find the most up-to-date pricing/billing models for each platform under consideration during the selection process.

Pros. Customers of GCE can take advantage of all of Google's innovations in cloud automation, innovations that have been tested in Google’s high-pressure environment.

GCE connects VMs in data centers using Google's private global fiber network (the backbone of Google’s infrastructure), which is faster than any other cloud platform including AWS that uses public Internet. 

GCE has a lower cost in standard compute instances versus AWS, unless you are willing to commit to pay AWS upfront for three-year reserved instances. Committing to a three-year period for AWS reserved instances raises the risk that future price cuts will wipe out some of your expected savings if Google continues to follow the Moore’s Law approach to pricing. For high memory and high CPU VMs, a pricing comparison for Google GCE and AWS is mixed -- few apples to apples comparisons.

GCE's pricing is a big advantage for smaller companies because it charges by the minute with a 10-minute minimum charge, while AWS charges hourly rates and rounds up to the nearest hour.

GCE lets you mount a persistent read/write disk to one VM and connect it to hundreds of VMs in the same zone as read-only. This allows you to distribute data to large work forces in short periods of time. AWS customers still struggle in figuring out a way to share data and information among large numbers of AWS instances.

GCE can automatically perform load balancing by adding or removing VMs from managed instance groups based on increases or decreases in load. This allows applications to handle increases in traffic and reduce cost when the need for resources is lower. GCE load balancing is not as automatic, however, because GCE requires the user to specify an auto scaling policy, and it does not work for standard instances, only for managed instances. AWS' Elastic Load Balancing performs similar functions, but it requires pre-warming (i.e., configuring the load balancer to have the appropriate level of capacity based on expected traffic). GCE allows load balancing between regions and supports content-based routing, which Amazon EC2 does not.

GCE encrypts data written to persistent disks on the fly, transmits it, and stores it in encrypted format. It has completed ISO 27001, SSAE-16, SOC 1, SOC 2, and SOC 3 certifications.

GCE enables you to run large batch and compute jobs using Pre-emptible VMs in a very cost-effective manner.

Cons. GCE still lags AWS in terms of services, regions (3 versus 11), number of customers, breadth of offerings for storage, compute, databases, networking and configuration management. AWS has five times the capacity of the next dozen largest competitors combined. AWS has 28% of the total cloud market; Microsoft has 10% and Google 5% (including GAE and GCE). 

AWS supports a wide range of operating systems, including Amazon Linux, Red Hat Enterprise Linux, CentOS, Debian, SUSE Linux Enterprise Server, Ubuntu, Oracle Enterprise Linux, FreeBSD and Windows (2003 R2, 2008, 2008 R2, 2012). GCE supports CentOS, Red Hat Enterprise Linux, Debian, SUSE Linux Enterprise Server, Ubuntu, and Windows Server 2008 R2. (Windows support is in beta mode.) Although AWS has a slight advantage, it does not have a significant advantage.

GCE is way behind AWS with respect to compliance. AWS compliance services dwarf the compliance services of GCE. AWS can help enterprises with most of the compliance regulations they might be required to satisfy. GCE (and Google Cloud Platform) are playing catch-up to AWS with respect to compliance services.

The number of services built around GCE and the Google Cloud Platform is relatively small when compared to AWS and Microsoft Azure. In a Forrester report on Enterprise Public Cloud Platforms, the authors list 28 important AWS services, 22 Microsoft cloud services and only 6 services for Google's cloud platform, including GAE, GCE, Google Cloud Storage, Google Cloud Datastore, Google Cloud SQL and BigQuery. 

GCE is lacking in widespread geographical distributions. GCE has just three regions (U.S., Europe and Asia) and three availability zones. AWS, on the other hand, has 11 regions and more than 20 availability zones. If you need a static website with broad geographic diversity and do not mind paying for it, or you need to host large amounts of data such as videos or file downloads, use AWS EC2 and AWS S3.

[1] Marc Cohen, Kathryn Hurley and Paul Newson, Google Compute Engine, O'Reilly, 2015, page 35.
[2] Marc Cohen, Kathryn Hurley and Paul Newson, Google Compute Engine, O'Reilly, 2015.
[3] Ibid.

Next Steps

AWS blurs the lines with Paas and IaaS

Beware of hasty IaaS investments

Dig Deeper on Managing cloud applications