Google App Engine
● Developer(s) - Google
● Initial release - April 7, 2008
● Stable release - 1.9.51 / 29 March 2017
● Written in - Python, Java, Go, PHP, Node.JS
● Operating system - linux , Windows
Google App Engine (often referred to as GAE or simply App Engine) is a web
framework and 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
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.
Supported features/restrictions :
Runtimes and framework
Supported programming languages include Python, Ruby, Java (and, by extension, other JVM
languages such as Kotlin, Groovy, JRuby, Scala, Clojure), Go, and PHP. Node.js is also available
in the flexible environment. 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] C# is also
supported.[5] Arbitrary Docker containers are also supported.
Python web frameworks that run on Google App Engine include Django, CherryPy, Pyramid,
Flask, web2py and webapp2, as well as a custom Google-written webapp framework and several
others designed specifically for the platform that emerged since the release. 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.
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,along with accompanying technologies such
as JSP. JavaServer Faces operates with some workarounds. A newer release of App Engine
Standard Java in Beta supports Java8, Servlet 3.1 and Jetty9.
Reliability and Support
All billed App Engine applications have a 99.95% uptime SLA.
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.Paid support from Google engineers is
offered as part of Premier Accounts. 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.
Bulk downloading
SDK version 1.2.2 adds support for bulk downloads of data using Python.
Restrictions
● Developers have read-only access to the filesystem on App Engine. Applications
can use only virtual filesystems, like gae-filestore.
● 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.[28] This restriction does not exist with the
App Engine Standard Java8 runtime.
● 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.Google handles deploying code to a cluster, monitoring, failover,
and launching application instances as necessary.
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.
Differences between SQL and GQL
Google App Engine's integrated Google Cloud Datastore database has a SQL-like
syntax called "GQL". GQL does not support the Join statement.] Instead, one-to-many
and many-to-many relationships can be accomplished using ReferenceProperty()
Portability concerns
AppScale automatically deploys and scales unmodified Google App Engine
applications over popular public and private cloud systems and
on-premises clusters. AppScale can run Python, Java, PHP, and Go
applications on EC2, Google Compute Engine, Softlayer, Azure and other
cloud vendors.
Backends
In Google I/O 2011, Google announced App Engine Backends, which are allowed to run
continuously, and consume more memory.[39][40] The Backend API was deprecated as of
March 13, 2014 in favor of the Modules API.
Google Cloud SQL
In Oct 2011, Google previewed a zero maintenance SQL database, which supports
JDBC and DB-API.[42] This service allows to create, configure, and use relational
databases with App Engine applications. Google Cloud SQL offers MySQL 5.5 and 5.6.
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.
Google App Engine defines usage quotas for free applications. Extensions to these
quotas can be requested, and application authors can pay for additional
resources.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 - 64 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,reduced again on June 22, 2009.but then revised in May 2011 to allow for more
infrastructure and pricing changes
Quota Limit (per day)
Backend Instance Hours - 9 hours
Emails - 100 (5000 admin emails)
Bandwidth in - 1 GB
Bandwidth out - 1 GB
Datastore Storage Data - 1 GB
Datastore Entity Reads - 50,000
Datastore Entity Writes - 20,000
Code and Static File Storage - 1 GB
Logs Stored Data - 1 GB
Search API Stored Data - 250 MB
Blob Storage Data - 5 GB
Sockets Created - 864,000
Sockets Data Sent and Received - 20 GB each