The Full Wiki

Google App Engine: Wikis

Advertisements
  
  
  

Note: Many of our articles have direct quotes from sources you can cite, within the Wikipedia article! This article doesn't yet, but we're working on it! See more info or our list of citable articles.

Encyclopedia

Advertisements

From Wikipedia, the free encyclopedia

Google App Engine
Google App Engine Logo
Developer(s) Google
Initial release April 7, 2008
Operating system Any (Web-based application)
Type Web development
Website http://appengine.google.com

Google App Engine is a platform for developing and hosting web applications in Google-managed data centers. It was first released as a beta version in April 2008.

Google App Engine is cloud computing technology. It virtualizes applications across multiple servers and data centers.[1] Other cloud-based platforms include offerings such as Amazon Web Services and Microsoft's Azure Services Platform.

Google App Engine is free up to a certain level of used resources. Fees are charged for additional storage, bandwidth, or CPU cycles required by the application.[2]

Contents

Supported programming languages and frameworks

Currently, the supported programming languages are Python and Java (and, by extension, other JVM languages such as Groovy, JRuby, Scala, and Clojure). Python web frameworks that run on Google App Engine include Django, CherryPy, Pylons, and web2py, as well as a custom Google-written webapp framework and several others designed specifically for the platform that emerged since the release[3]. 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[citation needed]. 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.[4][5]

Differences from 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[6]. 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 Python or any JVM language (e.g. Java, Groovy, JRuby, Scala) as the programming language and a limited set of APIs. Current APIs allow storing and retrieving data from a BigTable non-relational database; making HTTP requests; sending e-mail; manipulating images; and caching. Most existing Web applications can't run on App Engine without modification, because they require a relational database.

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 30 seconds or return more than 10MB of data.

Differences between SQL and GQL

Google App Engine's datastore has a SQL-like syntax called "GQL". Select statements in GQL can be performed on one table only. GQL intentionally does not support the Join statement, because it seems to be inefficient when queries span more than one machine.[7] Instead, one-to-many and many-to-many relationships can be accomplished using ReferenceProperty().[8] This shared-nothing approach allows disks to fail without the system failing.[9] 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 interface. This offers an alternative to using threads for parallel data processing.

Restrictions

  • Developers have read-only access to the filesystem on App Engine.
  • App Engine can only execute code called from an HTTP request (except for scheduled background tasks).
  • 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.[10]
  • Java applications cannot create new threads.
  • Does not support 'naked' domains (without www) like http://example.com, due to use of DNS CNAME records for load balancing.[11] (Suggested workaround is to use DNS provider's HTTP redirection to a subdomain, e.g. "www.example.com".)
  • Datastore cannot use inequality filters on more than one entity property per query. [12]

Portability

Developers worry that the applications will not be portable from App Engine and fear being locked into the technology.[13] In response, there are a number of projects to create open-source back-ends for the various proprietary APIs of app engine, especially the datastore. Although these projects are at various levels of maturity, none of them is at the point where installing and running an App Engine app is as simple as it is on Google's service. [14]

Web2py has, since the beginning of its support for GAE, been incredibly easy to migrate back and forth from SQL Databases to Google App Engine. In fact, it rivals many other frameworks in ease of migration. To take a project from GAE to an SQL database such as MySQL or MSSQL, all that is required is to change the database connection string in the db.py file from db = DAL('gae') to something like (in the case of PostgreSQL) db = DAL("postgres://myuser:mypassword@localhost:5432/mydb")[15]. The Django web framework and applications running on it can be used on App Engine with modification.

Applications developed for the Grails web application framework may be modified and deployed to Google App Engine with very little effort using the App Engine Plugin.

Downloading data

SDK version 1.2.2 adds support for bulk downloads of data.[16] The open source projects gaebar,[17] approcket,[18] and gawsh[19] also allow users to download and backup App Engine data.

Quota rates

App Engine defines usage quotas for free applications. Extensions to these quotas can be requested, and application authors can pay for additional resources.[20]

Hard limits

Quota Limit
Apps per developer 10
Time per request 30 sec
Files per app 3,000
HTTP response size 10 MB
Datastore item size 1 MB
Application code size 150 MB

Free quotas

Application creators who enable billing pay only for CPU, bandwidth, storage, and e-mails used in excess of the free quotas. Limits marked with * are increased for application authors who enable billing, even if their application never uses enough resources to incur charges. Free quotas were reduced on May 25, 2009[21] and were reduced again on June 22, 2009.[22]

Quota Limit
Emails per day 2,000
Bandwidth in per day 1,000 MB
Bandwidth out per day 1,000 MB
CPU time per day 6.5 hours per day
HTTP Requests per Day 1,300,000*
Datastore API calls per day 10,000,000*
Data stored 1 GB
URLFetch API calls per day.. 657,084*

Competition

The service competes with Amazon Web Services, a set of application services that enable web sites to host files and execute code on Amazon's servers. Many tech analysts have been predicting Google's entry into this field for years. "Google finally realizes it needs to be the web platform," Techdirt publisher Mike Masnick wrote. "The easier it is to develop and deploy highly scalable web applications, the more innovative and creative solutions we're going to start to see."[23]

Other competitors include Microsoft's Azure Services Platform, and Heroku.

AppScale is an open-source framework for running Google AppEngine applications.

References

  1. ^ http://code.google.com/appengine/docs/python/runtime.html
  2. ^ http://code.google.com/appengine/docs/quotas.html
  3. ^ http://code.google.com/p/tipfy/wiki/AppEngineFrameworks
  4. ^ http://code.google.com/appengine/docs/whatisgoogleappengine.html
  5. ^ http://code.google.com/appengine/docs/python/tools/webapp/overview.html
  6. ^ "Python Runtime Environment - Google App Engine". 2009-11-10. http://code.google.com/appengine/docs/python/runtime.html#Quotas_and_Limits. Retrieved 2009-11-10. 
  7. ^ Introducing Google App Engine part 3
  8. ^ http://code.google.com/appengine/articles/modeling.html
  9. ^ http://highscalability.com/google-architecture
  10. ^ The JRE Class White List
  11. ^ Officially Support Naked Domains for GAE Apps
  12. ^ Google App Engine Datastore Gotchas
  13. ^ http://arstechnica.com/old/content/2008/04/analysis-google-app-engine-alluring-will-be-hard-to-escape.ars
  14. ^ [http://blog.notdot.net/2009/04/Announcing-BDBDatastore-a-replacement-datastore-for-App-Engine A blog post that lists such efforts as it announces another one.
  15. ^ http://web2py.com/book/default/section/11/13
  16. ^ http://code.google.com/appengine/docs/python/tools/uploadingdata.html#Downloading_Data_from_App_Engine
  17. ^ http://github.com/aral/gaebar/tree/master
  18. ^ http://code.google.com/p/approcket/
  19. ^ http://code.google.com/p/gawsh/
  20. ^ "Understanding Application Quotas with Google App Engine". http://code.google.com/appengine/articles/quotas.html. Retrieved 2008-09-10. 
  21. ^ Google, Inc., Upcoming Changes to the Free Quotas, accessed February 26, 2009
  22. ^ Google, Inc., [1], accessed June 17, 2009
  23. ^ "Google Finally Realizes It Needs To Be The Web Platform". 2008-04-07. http://techdirt.com/articles/20080407/225749782.shtml. Retrieved 2008-04-12. 

Bibliography

External links


Advertisements






Got something to say? Make a comment.
Your name
Your email address
Message