Cloud application developers should consider all option when selecting a cloud platform on which to develop and...
deploy applications. Choosing the wrong cloud platform can limit migrating applications to another platform, limit support of applications across a broad geographic area, result in unpredictable pricing and billing models, limit development language and operating system choices.
Below are the pros and cons of developing and deploying cloud applications on Google App Engine (GAE). GAE is a PaaS-based cloud platform for developing and hosting applications in Google-managed data centers. It allows outside businesses and software developers run their own software atop Google’s global infrastructure. GAE along with Google Compute Engine (GCE) are two of the most important services of the Google Cloud Platform.
GAE, unveiled in 2008, quickly developed a reputation as an easy to use development and deployment platform. It also became known for its excellent application scalability capability. But it also had some not so good characteristics. It had a reputation that if you develop on GAE, then you must run it on GAE, making it difficult to migrate GAE-developed applications to other platforms. This is still true to some extent, but Google has made some enhancements to GAE, such as providing a real relational database and expanding the list of operating systems supported, to make migrating applications developed on GAE less of a problem.
GAE developers can configure a number of capabilities, including size of instances, maximum latency required, application location, storage location, storage back-end type, queues, quotas and billing. On the other hand, IaaS platforms like Amazon Web Services (AWS) generally allow developers to configure VM (virtual machine) sizes and power, select memory capacity, operating systems, firewalls, networks, and choose from various geographical regions and storage types. Clearly, IaaS offerings require systems management of servers and software that PaaS platforms such as GAE do not in most cases.
Capabilities of GAE
When selecting a platform for developing/deploying cloud applications, there are many challenges. These challenges can best be described in terms of the capabilities that may be required for developing and deploying cloud applications:
- Supported operating systems
- Supported development languages
- Ease of application development
- Ease of migrating an application from the developing platform to another platform
- Ease of scaling an application when demand requires
- Support for load balancing when demand requires it
- Storage models supported, including persistent storage
- Performance and performance enhancement tools
- Support of applications across a broad geographical area (regions/availability zones)
- VM types supported, including import/export
- Pricing options
- Billing model
- Management capabilities (from console, GUIs, scripting languages)
- Service level agreements
- Privatization (run platform on premises, i.e., make platform private)
- Support for compliance requirements such as HIPAA, PCI and SOX
The capabilities and challenges listed above are not important for every application that you may be developing; however, understanding these challenges can help you determine cloud platform evaluation criteria.
Pros and cons of GAE
The list of pros and cons for GAE and for most cloud development and deployment platforms are several. While pricing is a challenge for each cloud platform, we find that pricing and billing models for GAE, and especially AWS, change so frequently that it is difficult to provide a pricing assessment. Find the most up-to-date pricing or billing models for each platform under consideration during the selection process.
If a developer is developing a relatively simple small to medium-sized application with a reasonably static data model (deleting lots of records is expensive and not a static data model) with less than ten million records that do not require regular data processing or analysis, then GAE is a very good choice. GAE has developed a reputation as a good platform for quickly developing and deploying low bandwidth application projects with no money up front.
GAE is also very good for automatic application scaling. It automatically allocates both the memory and power resources to meet growing load, bandwidth and CPU demands. GAE-based application development projects are allowed to consume resources up to a limit quota for free with charges added for resource usage beyond the quota(s). GAE auto scales in reaction to HTTP(S) request load and response latency as well as CPU and memory utilization.
Google is working to make the GAE environment more enterprise capable for developing and deploying cloud applications, including trying to erase the "develop here, must run here" limitation. Enhancements to GAE include adding more development languages and operating systems support (recent additions include Red Hat Enterprise Linux and Windows Server 2008), supporting a relational DBMS, introducing more storage choices, and making use of Managed VMs to allow developers to introduce applications that were developed outside GAE. Managed VMs is a service used to provide customers with more configuration control by alleviating some of the GAE customization and integration issues.
Some developers view GAE as a proprietary platform because you are not able to invoke some system calls, write to the file system directly, choose your favorite operating system or choose your favorite language runtime. Most IaaS platforms such as AWS do not have these restrictions, but you must pay with extensive system management. GAE restrictions are there for a good reason, primarily to create a system that is scalable, reliable, efficient and easy to maintain. You do not have to worry about firewalls, operating system patches and upgrades, network configurations, failover and load balancing. If GAE does not provide you with the flexibility that you need, choose AWS and pay for system management.
GAE has been criticized for slow extraction of data for processing when using the original GAE storage model. Google has replaced the original storage model with the High Replication Datastore (HRD) for developers that want the highest level of availability for their data and applications, high scalability and durability. Blobstore is also available to serve large data objects such as video or image files that are too large for storage in the HRD.
The number of services built around GAE is relatively small when compared to AWS and Microsoft Azure. In a Forrester report entitled Enterprise Public Cloud Platforms, the authors, Rymer and Staten, list 28 important AWS services, 22 Microsoft cloud services and only six services for Google’s cloud platform, including GAE, GCE, Google Cloud Storage, Google Cloud Datastore, Google Cloud SQL and BigQuery.
GAE is lacking in widespread geographical distributions. GAE 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.
GAE abstracts most of the infrastructure configuration details with tools and default settings for its development language runtimes. This means that it is difficult to get to configuration controls below GAE instances.
AWS compliance services also dwarf the compliance services of GAE. AWS can help enterprises with most of the compliance regulations that they might be required to satisfy. GAE (and Google Cloud Platform) are playing catch-up to AWS with respect to compliance services.
In summary, remember that Google is trying to connect with enterprise IT with its cloud products. While GAE offers features that appeal to IT, it still needs to figure out how to build more services that will help it gain more traction. If your application fits the GAE model, then develop your application using GAE. Otherwise, select from Microsoft Azure and AWS, depending if you are developing the application for the Microsoft platform and how much control you want over the execution environment. If most of your application fits on GAE, but some parts such as storage is not a good fit, put the application on GAE and use AWS S3 storage service. If you need more control than GAE provides, use AWS EC2.
Deploying cloud apps on GCE