World Library  
Flag as Inappropriate
Email this Article

Google App Engine

Article Id: WHEBN0016822361
Reproduction Date:

Title: Google App Engine  
Author: World Heritage Encyclopedia
Language: English
Subject: Google Sites, Cloud database, Cloud Foundry, IBM cloud computing, Google I/O
Publisher: World Heritage Encyclopedia

Google App Engine

Google App Engine
Developer(s) Google
Initial release April 7, 2008
Stable release 1.9.26 / 4 September 2015 (2015-09-04)
Development status Released
Written in Python, Java, Go, PHP
Type Web development
License Proprietary
Website //

Google App Engine (often referred to as GAE or simply App Engine) is a platform as a service (PaaS) cloud computing platform for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers.[1] App Engine offers automatic scaling for web applications—as the number of requests increases for an application, App Engine automatically allocates more resources for the web application to handle the additional demand.[2]

Google App Engine is free up to a certain level of consumed resources. Fees are charged for additional storage, bandwidth, or instance hours required by the application.[3] It was first released as a preview version in April 2008 and came out of preview in September 2011.

Supported features/restrictions

Runtimes and framework

Currently, the supported programming languages are Python, Java (and, by extension, other JVM languages such as Groovy, JRuby, Scala, Clojure), Go, and PHP. Google has said that it plans to support more languages in the future, and that the Google App Engine has been written to be language independent.[4]

Python web frameworks that run on Google App Engine include Django, CherryPy, Pyramid, Flask, web2py and webapp2,[5] as well as a custom Google-written webapp framework and several others designed specifically for the platform that emerged since the release.[6] Any Python framework that supports the WSGI using the CGI adapter can be used to create an application; the framework can be uploaded with the developed application. Third-party libraries written in pure Python may also be uploaded.[7][8]

Google App Engine supports many Java standards and frameworks. Core to this is the servlet 2.5 technology using the open-source Jetty Web Server,[9] along with accompanying technologies such as JSP. JavaServer Faces operates with some workarounds. Though the datastore used may be unfamiliar to programmers, it is easily accessed and supported with JPA. JDO and other methods of reading and writing data are also provided. The Spring Framework works with GAE, however the Spring Security module (if used) requires workarounds. Apache Struts 1 is supported, and Struts 2 runs with workarounds.[10]

The Django web framework and applications running on it can be used on App Engine with modification. Django-nonrel[11] aims to allow Django to work with non-relational databases and the project includes support for App Engine.[12]

Reliability and Support

All billed High-Replication Datastore App Engine applications have a 99.95% uptime SLA.[13]

App Engine is designed in such a way that it can sustain multiple datacenter outages without any downtime. This resilience to downtime is shown by the statistic that the High Replication Datastore saw 0% downtime over a period of a year.[14]

Paid support from Google engineers is offered as part of Premier Accounts.[15] Free support is offered in the App Engine Groups, Stack Overflow, Server Fault, and GitHub, however assistance by a Google staff member is not guaranteed.[16]

Bulk downloading

SDK version 1.2.2 adds support for bulk downloads of data using Python.[17] The open source Python projects gaebar,[18] approcket,[19] and gawsh[20] also allow users to download and backup App Engine data. No method for bulk downloading data from GAE using Java currently exists.


  • Developers have read-only access to the filesystem on App Engine. Applications can use only virtual filesystems, like gae-filestore.[21]
  • App Engine can only execute code called from an HTTP request (scheduled background tasks allow for self calling HTTP requests).
  • Users may upload arbitrary Python modules, but only if they are pure-Python; C and Pyrex modules are not supported.
  • Java applications may only use a subset (The JRE Class White List) of the classes from the JRE standard edition.[22]
  • Datastore cannot use inequality filters on more than one entity property per query.[23]
  • A process started on the server to answer a request can't last more than 60 seconds (with the 1.4.0 release, this restriction does not apply to background jobs anymore).
  • Does not support sticky sessions (a.k.a. session affinity), only replicated sessions are supported including limitation of the amount of data being serialized and time for session serialization.

Major differences

Differences with other application hosting

Compared to other scalable hosting services such as Amazon EC2, App Engine provides more infrastructure to make it easy to write scalable applications, but can only run a limited range of applications designed for that infrastructure.

App Engine's infrastructure removes many of the system administration and development challenges of building applications to scale to hundreds of requests per second and beyond.[24] Google handles deploying code to a cluster, monitoring, failover, and launching application instances as necessary.

While other services let users install and configure nearly any *NIX compatible software, App Engine requires developers to use only its supported languages, APIs, and frameworks. Current APIs allow storing and retrieving data from a BigTable non-relational database; making HTTP requests; sending e-mail; manipulating images; and caching. Existing web applications that require a relational database will not run on App Engine datastore without modification. Google Cloud SQL can be used for App Engine applications requiring a relational MySQL compatible database backend.[25]

Per-day and per-minute quotas restrict bandwidth and CPU use, number of requests served, number of concurrent requests, and calls to the various APIs, and individual requests are terminated if they take more than 60 seconds or return more than 32MB of data.

Differences between SQL and GQL

Google App Engine's datastore has a SQL-like syntax called "GQL". GQL intentionally does not support the Join statement, because it seems to be inefficient when queries span more than one machine.[26] Instead, one-to-many and many-to-many relationships can be accomplished using ReferenceProperty().[27] This shared-nothing approach allows disks to fail without the system failing.[28] Switching from a relational database to the Datastore requires a paradigm shift for developers when modeling their data.

Unlike a relational database the Datastore API is not relational in the SQL sense.

The Java version supports asynchronous non-blocking queries using the Twig Object Datastore[29] interface. This offers an alternative to using threads for parallel data processing.

Portability concerns

Developers worry that the applications will not be portable from App Engine and fear being locked into the technology.[30] In response, there are a number of projects to create open-source back-ends for the various proprietary/closed APIs of app engine, especially the datastore. AppScale, CapeDwarf and TyphoonAE[31] are a few of the open source efforts.

AppScale automatically deploys and scales unmodified Google App Engine applications over popular public and private cloud systems and on-premises clusters.[32] AppScale can run Python, Java, PHP, and Go applications on EC2, Google Compute Engine, Softlayer, Azure and other cloud vendors.

TyphoonAE[31] can run Python App Engine applications on any cloud that support linux machines.

Web2py web framework offers migration between SQL Databases and Google App Engine, however it doesn't support several App Engine-specific features such as transactions and namespaces.[33]


In Google I/O 2011, Google announced App Engine Backends, which are allowed to run continuously, and consume more memory.[34][35]

Google Cloud SQL

In Oct 2011, Google previewed a zero maintenance SQL database, which supports JDBC and DB-API.[36] This service allows to create, configure, and use relational databases with App Engine applications. The database engine is MySQL Version 5.1.59 and the database size must be no larger than 10GB.[37]

Usage quotas

Google App Engine requires a Google account to get started, and an account may allow the developer to register up to 25 free applications and an unlimited number of paid applications.[38]

Google App Engine defines usage quotas for free applications. Extensions to these quotas can be requested, and application authors can pay for additional resources.[39] Below are limit and quotas defined per application:

Hard limits

Quota Limit
Time per request 60 sec per normal request, 10 minutes for tasks, unlimited for backends
HTTP response size 32 MB
Datastore item size 1 MB

Free quotas

Application creators who enable billing pay only for instance hours, bandwidth, storage, and API usage in excess of the free quotas. Free quotas were reduced on May 25, 2009,[40] reduced again on June 22, 2009.[40] but then revised in May 2011 to allow for more infrastructure and pricing changes.[41][42]

Quota Limit (per day)
Backend Instance Hours 9 hours
Frontend Instance Hours 28 hours
Emails 100 (5000 admin emails)
Bandwidth in 1 GB
Bandwidth out 1 GB
Datastore Storage Data 1 GB
Datastore read, write, and store Operations 50,000 each
Code and Static File Storage 1 GB
Logs Stored Data 1 GB
Search API Stored Data 250 MB
Search API Search Minutes 100 minutes
Blob Storage Data 5 GB
XMPP API Stanzas Sent 10,000 stanzas
Channel API 100 channels created
Sockets Created 864,000
Sockets Data Sent and Received 20 GB each
URLFetch API calls per day 657,084

See also


  1. ^
  2. ^
  3. ^
  4. ^
  5. ^
  6. ^
  7. ^
  8. ^
  9. ^
  10. ^
  11. ^
  12. ^
  13. ^
  14. ^
  15. ^
  16. ^
  17. ^
  18. ^
  19. ^
  20. ^
  21. ^
  22. ^
  23. ^
  24. ^
  25. ^
  26. ^ Introducing Google App Engine part 3
  27. ^
  28. ^
  29. ^
  30. ^
  31. ^ a b
  32. ^ AppScale Launches As An Open-Source Backup Equivalent To Google App Engine. TechCrunch (2013-06-24). Retrieved on 2013-09-18.
  33. ^ [1]
  34. ^ Google I/O 2011: App Engine Backends on YouTube
  35. ^ Backends Python API Overview
  36. ^ Google Cloud SQL: your database in the cloud
  37. ^ Google Cloud SQL: Sample Application
  38. ^
  39. ^
  40. ^ a b
  41. ^
  42. ^


External links

  • Official marketing page
  • Official website
  • Official Google Cloud Platform Blog
  • Release notes
  • Google App Engine - Run your web applications on Google's infrastructure - a technical talk by Google engineer Guido van Rossum at Stanford University. (online video archive)
  • Java Frameworks and libraries supported
  • Web2py book -- online documentation -- Google App Engine deployment recipe
  • Google Cloud SQL Sample Projects
  • Google Cloud supports node.js
  • : Python development sample project. App Engine/django/Google Closure/Endpoints/Material designAppmd
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.