Google App Engine: Difference between revisions

Content deleted Content added
Linuxjava (talk | contribs)
Bender the Bot (talk | contribs)
m HTTP to HTTPS for Blogspot
 
(224 intermediate revisions by more than 100 users not shown)
Line 1:
{{Short description|Cloud-based web application hosting service}}
{{Use American English|date=December 2022}}
{{Use mdy dates|date=December 2022}}
 
{{Update|inaccurate=y|date=July 2024}}
{{Infobox software
| name = Google App Engine
| title =
| logo = File:Logo of Google App Engine Logo.png
| screenshot = <!-- [[File: ]] -->
| caption =
Line 8 ⟶ 13:
| author =
| developer = [[Google]]
| released = {{start date and age|2008|4|7}}<ref>{{cite web |title=Introducing Google App Engine + our new blog |url=https://googleappengine.blogspot.com/2008/04/introducing-google-app-engine-our-new.html |website=Google App Engine Blog |access-date=December 3, 2019 |date=April 7, 2008}}</ref>
| released = April 7, 2008
| discontinued =
| latest release version = 1.9.2
| latest release date = {{release date|df=yes|2015|04|30}}
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| frequently updated = <!-- DO NOT include this parameter unless you know what it does -->
| programming language = [[Python (programming language)|Python]], [[Java (programming language)|Java]], [[Go (programming language)|Go]], [[PHP]]
| operating system =
| platform =
| size =
| language =
| statusgenre = Released[[Platform as a service]]
| genre = Web development
| license = [[Proprietary software|Proprietary]]
| website = {{URL|https://cloud.google.com/appengine/}}
}}
'''Google App Engine''' (also referred to as '''GAE''' or '''App Engine''') is a [[cloud computing]] [[platform as a service|platform used as a service]] for developing and hosting [[web application]]s. Applications are [[Sandbox (computer security)|sandbox]]ed and run across multiple Google-managed servers.<ref>{{cite web|url=https://code.google.com/appengine/docs/python/runtime.html |title=Python Runtime Environment - Google App Engine - Google Code |date=February 22, 1999 |access-date=February 14, 2012}}</ref> GAE supports automatic scaling for web applications, allocating more resources to the web application as the amount of requests increases.<ref>{{cite book |last=Sanderson |first=Dan |title=Programming Google App Engine: Build and Run Scalable Web Apps on Google's Infrastructure |publisher=[[O'Reilly Media]] |year=2009 |isbn=978-0-596-52272-8 |url=https://archive.org/details/programminggoogl0000sand }}</ref> It was released as a [[Preview for Developers|preview]] in April 2008 and launched officially in September 2011.
 
Applications written in [[Go (programming language)|Go]], [[PHP]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Node.js]], [[.NET Framework|.NET]], and [[Ruby (programming language)|Ruby]] are supported by the App Engine, and other languages can be supported at an additional cost.<ref name="Google App Engine Documentation | App Engine Documentation">{{cite web |title=Google App Engine Documentation {{!}} App Engine Documentation |url=https://cloud.google.com/appengine/docs/ |website=Google Cloud |access-date=December 3, 2019 |language=en}}</ref> The free version of the service offers a standard environment with limited resources. Fees are charged for additional storage, [[Bandwidth (computing)|bandwidth]], or instance hours.<ref>{{cite web|url=https://cloud.google.com/appengine/docs/quotas |title=Quotas - Google App Engine - Google Code |date=February 22, 1999 |access-date=February 14, 2012}}</ref>
'''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 application]]s in Google-managed data centers. Applications are [[Sandbox (computer security)|sandbox]]ed and run across multiple servers.<ref>{{cite web|url=https://code.google.com/appengine/docs/python/runtime.html |title=Python Runtime Environment - Google App Engine - Google Code |publisher=Code.google.com |date=1999-02-22 |accessdate=2012-02-14}}</ref> 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.<ref>{{cite book |last=Sanderson |first=Dan |title=Programming Google App Engine: Build and Run Scalable Web Apps on Google's Infrastructure |publisher=[[O'Reilly Media]] |year=2009 |isbn=978-0-596-52272-8}}</ref>
 
==Features==
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.<ref>{{cite web|url=https://cloud.google.com/appengine/docs/quotas |title=Quotas - Google App Engine - Google Code |publisher=Code.google.com |date=1999-02-22 |accessdate=2012-02-14}}</ref> It was first released as a preview version in April 2008 and came out of preview in September 2011.
 
Google App Engine primarily supports [[Go (programming language)|Go]], [[PHP]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Node.js]], [[.NET Framework|.NET]], and [[Ruby (programming language)|Ruby]] applications, although it can also support other languages via "custom runtimes".<ref name="Google App Engine Documentation | App Engine Documentation" />
==Supported features/restrictions==
 
Python web frameworks that run on Google App Engine include [[Django (Web framework)|Django]], [[CherryPy]], [[Pylons project#Pyramid|Pyramid]], [[Flask (programming)|Flask]], and [[web2py]] as well as a Google-written web app framework and several others designed specifically for the platform that was created after the release.<ref>{{cite web|url=https://code.google.com/p/tipfy/wiki/AppEngineFrameworks |title=AppEngineFrameworks - tipfy - The almighty little framework for Google App Engine - Google Project Hosting |access-date=February 14, 2012}}</ref> Any Python framework that supports the [[Web Server Gateway Interface|WSGI]] using the CGI adapter can be used to create an application, and the framework can be uploaded with the developed application. Third-party libraries written in Python may also be uploaded.<ref>{{cite web|url=https://cloud.google.com/appengine/docs/whatisgoogleappengine?csw=1 |title=What Is Google App Engine? - Google App Engine - Google Code |date=February 22, 1999 |access-date=February 14, 2012}}</ref><ref>{{cite web|url=https://cloud.google.com/appengine/docs/python/tools/webapp/ |title=webapp Overview - Google App Engine - Google Code |date=February 22, 1999 |access-date=February 14, 2012}}</ref>
===Runtimes and framework===
Currently, the supported [[programming language]]s are [[Python (programming language)|Python]], [[Java (software platform)|Java]] (and, by extension, other [[JVM languages]] such as [[Groovy (programming language)|Groovy]], [[JRuby]], [[Scala (programming language)|Scala]], [[Clojure]]), [[Go (programming language)|Go]], and [[PHP]]. Go and PHP are in experimental status.<ref>{{cite web|url=https://cloud.google.com/customers/ |title=App Engine Developer Profiles - Google App Engine - Google Code |publisher=Code.google.com |date=1999-02-22 |accessdate=2012-02-14}}</ref> 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.<ref>{{cite book |last=Sanderson |first=Dan |title=Programming Google App Engine: Build and Run Scalable Web Apps on Google's Infrastructure |publisher=[[O'Reilly Media]] |year=2010 |isbn=978-0-596-52272-8}}</ref>
 
SDK version 1.2.2 added support for bulk downloads of data using Python.<ref>{{cite web|url=https://cloud.google.com/appengine/docs/adminconsole/datastoreadmin?csw=1#backup_and_restore |title=Uploading and Downloading Data - Google App Engine - Google Code |date=February 22, 1999 |access-date=February 14, 2012}}</ref>
Python web frameworks that run on Google App Engine include [[Django (Web framework)|Django]], [[CherryPy]], [[Pylons project#Pyramid|Pyramid]], [[Flask (programming)|Flask]], [[web2py]] and [[webapp2]],<ref>{{cite web|url=http://webapp-improved.appspot.com/ |title=Welcome to webapp2! — webapp2 v2.5.1 documentation |publisher=Webapp-improved.appspot.com |date= |accessdate=2012-02-14}}</ref> as well as a custom Google-written webapp framework and several others designed specifically for the platform that emerged since the release.<ref>{{cite web|url=https://code.google.com/p/tipfy/wiki/AppEngineFrameworks |title=AppEngineFrameworks - tipfy - The almighty little framework for Google App Engine - Google Project Hosting |publisher=Code.google.com |date= |accessdate=2012-02-14}}</ref> Any Python framework that supports the [[Web Server Gateway Interface|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.<ref>{{cite web|url=https://cloud.google.com/appengine/docs/whatisgoogleappengine?csw=1 |title=What Is Google App Engine? - Google App Engine - Google Code |publisher=Code.google.com |date=1999-02-22 |accessdate=2012-02-14}}</ref><ref>{{cite web|url=https://cloud.google.com/appengine/docs/python/tools/webapp/ |title=webapp Overview - Google App Engine - Google Code |publisher=Code.google.com |date=1999-02-22 |accessdate=2012-02-14}}</ref>
 
App Engine's integrated [[Google Cloud Datastore]] database has a [[SQL]]-like syntax called "[[Google Cloud Datastore#GQL|GQL]]" ([[Google Query Language]]). GQL does not support the [[Join (SQL)|join]] statement.<ref>{{cite web |date=April 7, 2008 |title=Campfire One: Introducing Google App Engine (pt. 3) |url=https://www.youtube.com/watch?v=oG6Ac7d-Nx8 |via=YouTube}}</ref> Instead, one-to-many and many-to-many relationships can be accomplished using {{code|ReferenceProperty()}}.<ref>{{cite web|url=https://code.google.com/appengine/articles/modeling.html |title=Modeling Entity Relationships - Google App Engine — Google Developers |date=June 26, 2012 |access-date=July 17, 2012}}</ref>
Google App Engine supports many Java standards and frameworks. Core to this is the [[Java Servlet|servlet 2.5 technology]] using the open-source [[Jetty (web server)|Jetty Web Server]],<ref>{{cite web|url=http://www.infoq.com/news/2009/08/google-chose-jetty |title=Google Chose Jetty for App Engine |publisher=Infoq.com |date=2012-07-13 |accessdate=2012-07-17}}</ref> along with accompanying technologies such as [[JavaServer Pages|JSP]]. [[JavaServer Faces]] operates with some workarounds. Though the datastore used may be unfamiliar to programmers, it is easily accessed and supported with [[Java Persistence API|JPA]]. [[Java Data Objects|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 [[Apache Struts|Struts 2]] runs with workarounds.<ref>{{cite web|url=https://code.google.com/p/googleappengine/wiki/WillItPlayInJava |title=WillItPlayInJava - googleappengine - Lists the level of compatibility of various Java technologies and App Engine - Google App Engine - Google Project Hosting |publisher=Code.google.com |date= |accessdate=2012-02-14}}</ref>
 
[[Firebase|Google Cloud Firestore]] is the successor to Google Cloud Datastore and replaces GQL with a document-based query method that treats stored objects as collections of documents. Firestore was launched in October 2017.<ref>{{Cite web|url=https://techcrunch.com/2017/10/03/google-launches-cloud-firestore-a-new-document-database-for-app-developers |title=Google launches Cloud Firestore, a new document database for app developers|website=TechCrunch|date=3 October 2017 |access-date=2018-07-16}}</ref>
The [[Django (web framework)|Django web framework]] and applications running on it can be used on App Engine with modification. Django-nonrel<ref>{{cite web|url=http://www.allbuttonspressed.com/projects/django-nonrel |title=Django-nonrel - NoSQL support for Django |publisher=All Buttons Pressed |date=2010-02-04 |accessdate=2012-07-17}}</ref> aims to allow Django to work with non-relational databases and the project includes support for App Engine.<ref>{{cite web|url=http://www.allbuttonspressed.com/projects/djangoappengine |title=djangoappengine - Django App Engine backends (DB, email, etc.) |publisher=All Buttons Pressed |date= |accessdate=2012-07-17}}</ref>
 
===Reliability and SupportBackends===
In [[Google I/O]] 2011, Google announced ''App Engine Backends'', which were allowed to run continuously and consume more memory.<ref>{{YouTube|id=-kepYfCBg6w||title=Google I/O 2011: App Engine Backends}}</ref><ref>{{cite web|url=https://cloud.google.com/appengine/docs/python/backends/?csw=1|title=Backends Python API Overview - App Engine standard environment for Python - Google Cloud Platform|website=Google Cloud Platform}}</ref> The Backend API was deprecated as of March 13, 2014, in favor of the Modules API.<ref>{{cite web|url=https://cloud.google.com/appengine/docs/python/backends/|title=Backends Python API Overview - App Engine standard environment for Python - Google Cloud Platform|website=Google Cloud Platform}}</ref> The Modules API introduced finer control over scaling, versioning, and resource allocation, allowing developers to run different parts of an application with distinct performance settings.<ref>{{Cite web |title=Using the Modules API {{!}} Google App Engine standard environment docs |url=https://cloud.google.com/appengine/docs/standard/services/modules |access-date=2025-02-16 |website=Google Cloud |language=en}}</ref>
All billed High-Replication Datastore App Engine applications have a 99.95% uptime [[Service-level agreement|SLA]].<ref>{{cite web|url=https://code.google.com/appengine/sla.html |title=App Engine Service Level Agreement - Google App Engine - Google Code |publisher=Code.google.com |date=1999-02-22 |accessdate=2012-02-14}}</ref>
 
===Google Cloud SQL===
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.<ref>{{cite web|url=http://googleappengine.blogspot.com/2012/01/happy-birthday-high-replication.html |title=Google App Engine Blog: Happy Birthday High Replication Datastore: 1 year, 100,000 apps, 0% downtime |publisher=Googleappengine.blogspot.com |date=2012-01-05 |accessdate=2012-02-14}}</ref>
In October 2011, Google previewed a zero-maintenance SQL database, which supports JDBC and DB-API.<ref>{{cite web|url=https://googlecode.blogspot.com/2011/10/google-cloud-sql-your-database-in-cloud.html|title=Google Cloud SQL: your database in the cloud - The official Google Code blog|date=October 6, 2011}}</ref> This service allows creating, configuring, and using relational databases with App Engine applications. Google Cloud SQL supports MySQL 8.0, 5.7, and 5.6.<ref>{{cite web|url=https://cloud.google.com/sql/docs/features|title=Cloud SQL Features - Cloud SQL Documentation - Google Cloud Platform|website=Google Cloud Platform}}</ref>
 
Paid support from Google engineers is offered as part of Premier Accounts.<ref>{{cite web|url=https://code.google.com/appengine/docs/premier/index.html |title=Premier Accounts - Google App Engine - Google Code |publisher=Code.google.com |date=1999-02-22 |accessdate=2012-02-14}}</ref> Free support is offered in the App Engine Groups and [[Stack Overflow]], however assistance by a Google staff member is not guaranteed.
 
===Bulk downloading===
SDK version 1.2.2 adds support for bulk downloads of data using Python.<ref>{{cite web|url=https://cloud.google.com/appengine/docs/adminconsole/datastoreadmin?csw=1#backup_and_restore |title=Uploading and Downloading Data - Google App Engine - Google Code |publisher=Code.google.com |date=1999-02-22 |accessdate=2012-02-14}}</ref> The open source Python projects gaebar,<ref>{{cite web|author=aral |url=https://github.com/aral/gaebar/tree/master |title=aral/gaebar |publisher=GitHub |date= |accessdate=2012-02-14}}</ref> approcket,<ref>{{cite web|url=https://code.google.com/p/approcket/ |title=approcket - Live synchronization between AppEngine and MySQL - Google Project Hosting |publisher=Code.google.com |date= |accessdate=2012-02-14}}</ref> and gawsh<ref>{{cite web|url=https://code.google.com/p/gawsh/ |title=gawsh - Google Apps Web Service Helpers - Google Project Hosting |publisher=Code.google.com |date= |accessdate=2012-02-14}}</ref> also allow users to download and backup App Engine data. No method for bulk downloading data from GAE using Java currently exists.
 
===Restrictions===
*Developers have read-only access to the filesystemfile system on App Engine. Applications can use only virtual filesystems,file like gae-filestoresystems.<ref>{{cite web|url=https://code.google.com/p/gae-filestore/ |title=gae-filestore - Simple Virtual File System on Google App Engine DataStore - Google Project Hosting |publisher=Code.google.com |date= |accessdate=2012-02-14}}</ref>
*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 (programming language)|C]] and [[Pyrex (programming language)|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.<ref name="google1">{{cite web|url=https://cloud.google.com/appengine/docs/java/jrewhitelist |title=The JRE Class White List - Google App Engine - Google Developers |publisher=https://cloud.google.com |date=1999-02-February 22, 1999 |accessdate=2013-06access-date=June 14, 2013}}</ref> This restriction does not exist with the App Engine Standard Java8 runtime.
*Datastore cannot use inequality filters on more than one entity property per query.<ref>{{cite web|url=http://aleatory.clientsideweb.net/2009/11/28/google-app-engine-datastore-gotchas/ |title=Google App Engine Datastore Gotchas « aleatory |publisher=Aleatory.clientsideweb.net |date=2009-11-28 |accessdate=2012-02-14}}</ref>
*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.
 
===Application hosting===
==Major differences==
 
While other services let users install and configure nearly any *NIX compatible software, App Engine requires developers to use only its [[Google App Engine#Supported programming languages and frameworks|supported languages, APIs, and frameworks]]. Current APIs allow storing and retrieving data from the document-oriented [[Google Cloud Datastore]] database, making HTTP requests, sending e-mail, manipulating images, and caching. Google Cloud SQL<ref>{{cite web|url=https://cloud.google.com/sql/docs|title=Google Cloud SQL Databases - Cloud SQL - Google Cloud Platform|website=Google Cloud Platform}}</ref> can be used for App Engine applications requiring a relational [[MySQL]] compatible database backend.<ref>{{cite web|url=https://cloud.google.com/appengine/docs/java/cloud-sql/|title=Using Google Cloud SQL - App Engine standard environment for Java - Google Cloud Platform|website=Google Cloud Platform}}</ref>
===Differences with other application hosting===
 
Per-day and per-minute quotas place restrictions on bandwidth and CPU use, number of requests served, number of concurrent requests, and calls to the various APIs. Individual requests are terminated if they take more than 60 seconds or return more than 32MB of data.
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.<ref>{{cite web | url = https://cloud.google.com/appengine/docs/python/?csw=1#Quotas_and_Limits | title = Python Runtime Environment - Google App Engine | accessdate = 2009-11-10| date = 2009-11-10}}</ref> 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 [[Google App Engine#Supported programming languages and frameworks|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. [https://cloud.google.com/sql/docs Google Cloud SQL] can be used for App Engine applications requiring a relational [[MySQL]] compatible database backend.<ref>https://cloud.google.com/appengine/docs/java/cloud-sql/</ref>
 
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 (SQL)|Join]] statement, because it seems to be inefficient when queries span more than one machine.<ref>[http://www.youtube.com/watch?v=oG6Ac7d-Nx8 Introducing Google App Engine part 3]</ref> Instead, one-to-many and many-to-many relationships can be accomplished using ReferenceProperty().<ref>{{cite web|url=https://code.google.com/appengine/articles/modeling.html |title=Modeling Entity Relationships - Google App Engine — Google Developers |publisher=Code.google.com |date=2012-06-26 |accessdate=2012-07-17}}</ref> This shared-nothing approach allows disks to fail without the system failing.<ref>{{cite web|author=Saturday |url=http://highscalability.com/google-architecture |title=Google Architecture |publisher=High Scalability |date=2008-11-22 |accessdate=2012-07-17}}</ref> 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<ref>{{cite web|url=https://code.google.com/p/twig-persist/ |title=twig-persist - Object Datastore for Google App Engine - Google Project Hosting |publisher=Code.google.com |date= |accessdate=2012-07-17}}</ref> 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.<ref>{{cite web|last=Gallagher |first=Sean |url=httphttps://arstechnica.com/old/content/2008/04/analysis-google-app-engine-alluring-will-be-hard-to-escape.ars |title=Analysis: Google App Engine alluring, will be hard to escape |publisher=Ars Technica |date=April 9, 2008-04-09 |accessdate=2012-07access-date=July 17, 2012}}</ref> In response, there are a number of projects to create open-source back-ends for the various proprietary/closed APIs of the app engine, especially the datastore.
[[AppScale]], CapeDwarf and TyphoonAE<ref name="google2">{{cite web|url=https://code.google.com/p/typhoonae/ |title=typhoonae - Typhoon App Engine - Google Project Hosting |publisher=Code.google.com |date= |accessdate=2012-07-17}}</ref> 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.<ref>[httphttps://techcrunch.com/2013/06/24/appscale-launches-as-an-open-source-backup-equivalent-to-google-app-engine/ AppScale Launches As An Open-Source Backup Equivalent To Google App Engine]. TechCrunch (2013-06-June 24, 2013). Retrieved on 2013-09-18.</ref> AppScaleIt can run Python, Java, PHP, and Go applications on EC2, Google Compute Engine, SoftlayerAzure, Azure and other cloud vendors.
 
The [[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.<ref>[http://web2py.com/book/default/section/11/13] {{webarchive|url=https://web.archive.org/web/20100220195348/http://web2py.com/book/default/section/11/13|date=February 20, 2010}}</ref>
TyphoonAE<ref name="google2"/> can run Python App Engine applications on any cloud that support linux machines.
 
[[Kubernetes]] is an open-source job control system invented by Google to abstract away the infrastructure so that open-source (e.g. Docker) containerized applications can run on many types of infrastructure, such as [[Amazon Web Services]], [[Microsoft Azure]], and others.
[[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.<ref>[http://web2py.com/book/default/section/11/13 ]{{dead link|date=July 2012}}</ref>
 
==Backends==
In [[Google I/O]] 2011, Google announced ''App Engine Backends'', which are allowed to run continuously, and consume more memory.<ref>{{YouTube|id=-kepYfCBg6w||title=Google I/O 2011: App Engine Backends}}</ref><ref>[https://cloud.google.com/appengine/docs/python/backends/?csw=1 Backends Python API Overview]</ref>
 
==Google Cloud SQL==
In Oct 2011, Google previewed a zero maintenance SQL database, which supports JDBC and DB-API.<ref>[http://googlecode.blogspot.com/2011/10/google-cloud-sql-your-database-in-cloud.html Google Cloud SQL: your database in the cloud]</ref> 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.<ref>[http://cnapagoda.blogspot.com/2011/10/sample-application-with-google-cloud.html Google Cloud SQL: Sample Application]</ref>
 
==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. Thisand limitan canunlimited benumber increasedof bypaid applications.<ref>{{Cite web|title = Google staffApp Engine General Questions|url = https://cloud.google.com/appengine/kb/general#create|website = Google Developers|access-date = June 18, 2015}}</ref>
 
Google App Engine defines usage quotas for free applications. Extensions to these quotas can be requested, and application authors can pay for additional resources.<ref name="Quotas">{{cite web | url = https://cloud.google.com/appengine/docs/quotas | title = Understanding Application Quotas with Google App Engine | accessdateaccess-date = April 16, 2010-04-16}}</ref> Below are limit and quotas defined per application:
 
==See also==<!-- New links in alphabetical order please -->
===Hard limits===
{{Div col|colwidth=20em}}
{| class="wikitable"
|-
! 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,<ref name="google3">{{cite web|url=https://cloud.google.com/appengine/docs/quotas |title=Quotas - Google App Engine — Google Developers |publisher=Code.google.com |date=2012-06-30 |accessdate=2012-07-17}}</ref> reduced again on June 22, 2009.<ref name="google3"/> but then revised in May 2011 to allow for more infrastructure and pricing changes.<ref>{{cite web|url=http://googleappengine.blogspot.com/2011/05/year-ahead-for-google-app-engine.html|title=Google App Engine Blog: The Year Ahead for Google App Engine!|work=Google App Engine blog|accessdate=11 May 2011}}</ref><ref>{{cite web|url=https://cloud.google.com/pricing/|title=Google App Engine - Pricing and Features|work=[[Google]]|accessdate=16 Nov 2012}}</ref>
 
{| class="wikitable"
|-
! Quota
! Limit (per day)
|-
| Frontend Instance Hours
| 28 hours
|-
| Emails
| 100 (5000 admin emails)
|-
| Bandwidth in
| 1 GB
|-
| Bandwidth out
| 1 GB
|-
| Datastore
| 1 GB
|-
| Datastore Operations
| 50,000
|-
| [[Binary large object|Blob]] Storage
| 5 GB
|-
| [[XMPP]] API
| 10,000 stanzas
|-
| Channel API
| 100 channels opened
|-
| URLFetch API calls per day
| 657,000
|}
 
==See also==
* [[AppScale]]
* [[Amazon Web Services]]
* [[AWS Elastic Beanstalk]]
* [[BluemixGoogle Apps Script]]
* [[EngineGoogle YardCloud Platform]]
* [[Heroku]]
* [[Force.comMicrosoft Azure]]
* [[Oracle Cloud#Platform as a Service (PaaS)|Oracle Cloud Platform]]
* [[Skytap]]
* [[Rackspace Cloud]]
* [[VMware]]
{{Div col end}}
* [[Rackspace Cloud]]
* [[GoGrid]]
* [[Microsoft Azure]]
* [[OpenShift]]
* [[Jelastic]]
 
==References==
Line 176 ⟶ 91:
 
==Bibliography==
{{refbeginRefbegin}}
*{{citation
| first1 = Dan
Line 196 ⟶ 111:
| publisher = [[Addison-Wesley Professional]]
| page = 304
| isbn = 978-0-321-74263-X6
| url = http://www.informit.com/store/product.aspx?isbn=0132484781
}}
Line 209 ⟶ 124:
| publisher = [[Packt Publishing]]
| page = 480
| isbn = 978-1-84969-044-87
| url = https://www.packtpub.com/google-app-engine-java-and-gwt-application-development/book
}}
Line 222 ⟶ 137:
| publisher = [[Apress]]
| page = 375
| isbn = 978-1-4302-2553-X9
| url = http://www.apress.com/9781430225539
}}
*{{citation |first1 = Dan
|last1 first1 = Dan Sanderson
|date last1 = SandersonNovember 23, 2009
|title = Programming Google App Engine
| date = November 23, 2009
|edition = 1st
| title = Programming Google App Engine
|publisher = [[O'Reilly Media]]
| edition = 1st
|page = [https://archive.org/details/programminggoogl0000sand/page/400 400]
| publisher = [[O'Reilly Media]]
|isbn page = 400978-0-596-52272-8
|url = https://archive.org/details/programminggoogl0000sand/page/400
| isbn = 0-596-52272-X
| url = http://oreilly.com/catalog/9780596522735
}}
*{{citation |first1 = Charles
|last1 first1 = Charles Severance
|date last1 = SeveranceMay 22, 2009
|title date = Using = MayGoogle 22,App 2009Engine
|edition = 1st
| title = Using Google App Engine
|publisher = [[O'Reilly Media]]
| edition = 1st
|page = [https://archive.org/details/usinggoogleappen0000seve/page/262 262]
| publisher = [[O'Reilly Media]]
|isbn page = 262 978-0-596-80069-7
|url = https://archive.org/details/usinggoogleappen0000seve/page/262
| isbn = 0-596-80069-X
| url = http://oreilly.com/catalog/9780596800697
}}
*{{citation
Line 255 ⟶ 168:
| publisher = [[Apress]]
| page = 164
| isbn = 978-1-4302-1831-29
| url = http://www.apress.com/9781430218319
}}
{{refendRefend}}
 
==External links==
*[https://cloud.google.com/appengine/ Official marketing page]
*{{Official website|https://cloud.google.com/appengine/docs}}
*[https://googlecloudplatform.blogspot.com/ Official Google Cloud Platform Blog]
*[https://code.google.com/p/googleappengine/wiki/SdkReleaseNotes Release notes]
*[http://www.stanford.edu/class/ee380/Abstracts/081105.html Google App Engine - Run your web applications on Google's infrastructure] - a technical talk by Google engineer [[Guido van Rossum]] at [[Stanford University]]. ([https://web.archive.org/web/20090326060917/http://stanford-online.stanford.edu/courses/ee380/081105-ee380-300.asx online video archive])
*[http://blog.adjutas.com/index.php/2017/01/27/benefits-of-adopting-google-app-engine/ Benefits of adopting Google App Engine] {{Webarchive|url=https://web.archive.org/web/20170202052421/http://blog.adjutas.com/index.php/2017/01/27/benefits-of-adopting-google-app-engine/ |date=February 2, 2017 }}
*[http://spreadsheets.google.com/pub?key=pRJ_0hajVrhacLjp3HqD5ew Java Frameworks and libraries supported]
*[http://blog.adjutas.com/index.php/2016/11/24/using-an-external-database-with-google-app-engine/ Using an external database with Google App Engine] {{Webarchive|url=https://web.archive.org/web/20170806115611/http://blog.adjutas.com/index.php/2016/11/24/using-an-external-database-with-google-app-engine/ |date=August 6, 2017 }}
*[http://web2py.com/book/default/section/11/13 Web2py book -- online documentation -- Google App Engine deployment recipe]
*[https://web.archive.org/web/20090416214549/http://spreadsheets.google.com/pub?key=pRJ_0hajVrhacLjp3HqD5ew Java Frameworks and libraries supported]
*[https://web.archive.org/web/20100220195348/http://web2py.com/book/default/section/11/13 Web2py book -- online documentation -- Google App Engine deployment recipe]
*[https://code.google.com/p/cloudsql/ Google Cloud SQL Sample Projects]
*[https://cloud.google.com/solutions/nodejs/ Google Cloud supports node.js]
*[https://github.com/jacobcui/appmd '''Appmd''': Python development sample project. App Engine/django/Google Closure/Endpoints/Material design ]
 
{{Google Inc.LLC}}
{{Google Cloud}}
{{Cloud computing}}
{{Authority control}}
 
[[Category:2008 introductions]]
[[Category:Cloud platforms]]
[[Category:Google services|App Engine]]
[[Category:Cloud platforms]]
[[Category:Serverless computing]]
[[Category:Internet properties established in 2008]]