Google App Engine
This article may be in need of reorganization to comply with Wikipedia's layout guidelines. (January 2009) |
File:Google App Engine Logo.png Google App Engine Logo | |
Developer(s) | |
---|---|
Initial release | April 7, 2008 |
Operating system | Any (web based application) |
Type | Web development |
Website | appengine.google.com |
Google App Engine is a platform for building and hosting web applications on Google Web Servers. It was first released as a beta version in April 2008. During its preview release, only free accounts are offered.[1] According to Google, a free account can use up to 500 MB of persistent storage and enough CPU and bandwidth for about 5 million page views a month. Google has also indicated its intention to eventually provide additional resources for a price. During the preview stage, Google App Engine tries to accommodate sudden surges in traffic, but errors will occur if the quota continues to be exceeded.[2]
Supported programming languages and frameworks
At its launch date, the only supported programming language was Python. A limited version of the Django web framework is available, as well as a custom Google-written web app framework similar to JSP or ASP.NET. 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. 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.[3][4]
Differences from traditional application hosting
App Engine is a tightly controlled and tightly integrated product that places many restrictions on users. While other scalable hosting services like Amazon EC2 let users install and configure nearly any *NIX compatible software, AppEngine requires developers to use Python as the programming language and a limited set of APIs. Current APIs allow storing and looking up data in a BigTable non-relational database; making HTTP requests; sending e-mail; manipulating images; and caching. 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.
App Engine also solves many of the system administration and development challenges of building applications to scale to millions of hits. Google handles code deployment, database sharding, monitoring, failover, and launching application instances as necessary.
Scalability benefits gained from removing joins
Google App Engine 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 is seen to be inefficient when queries span more than one machine.[5] Instead, one-to-many and many-to-many relationships can be accomplished using ReferenceProperty().[6] This shared-nothing approach allows disks to fail without the system failing.[7]
The where clause of select statements can perform >, >=, <, <= operations on one column only. Therefore, only simple where clauses can be constructed. Switching from a relational database to the Datastore requires a paradigm shift for developers when modeling their data.
App Engine limits the maximum rows returned from an entity get to 1000 rows per Datastore call. Most web database applications use paging and caching, and hence do not require this much data at once, so this is a non-issue in most scenarios.[citation needed] If an application needs more than 1,000 records per operation, it can use its own client-side software or an Ajax page to perform an operation on an unlimited number of rows.
Task scheduling is a heavily requested feature by App Engine users for future releases. Batch updates that take longer than a few seconds cannot be executed. Many have speculated that once the free quota restrictions are lifted, Google will introduce support for such operations.[8] However, mapreduce operations are now supported.[9]
Unlike a relational database such as Oracle, Microsoft SQL Server, MySQL, or PostgreSQL, the Datastore API is not relational in the SQL sense.
Restrictions
- Developers have read-only access to the filesystem on App Engine.
- App Engine can only execute code called from an HTTP request.
- No support for task scheduling in the traditional sense.[8]
- Users may upload arbitrary Python modules, provided they are pure-Python. C and Pyrex modules are not supported.
Downloading data from App Engine
The open source project gawsh allows users to download App Engine data.[10]
Quota rates
App Engine defines usage quotas for free applications. Extensions to this quotas can be requested.[11]
Fixed quotas
Quota | Limit |
---|---|
Apps per developer | 10 |
Storage per app | 500MB |
Files per app | 1,000 |
Size per file | 10 MB |
Per-day usage quotas
Quota | Limit |
---|---|
Emails per day | 2,000 |
Bandwidth in per day | 10,000 MB |
Bandwidth out per day | 10,000 MB |
Secure bandwidth in per day | 2,000 MB |
Secure bandwidth out per day | 2,000 MB |
CPU megacycles per day | 200,000,000 |
HTTP Requests per Day | 1,333,328 |
Datastore API calls per day | 10,368,000 |
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."[12]
Other competitors include Microsoft's Azure Services Platform.
References
- ^ "Google - What is Google App Engine". Retrieved 2008-04-11.
- ^ http://code.google.com/appengine/articles/quotas.html
- ^ http://code.google.com/appengine/docs/whatisgoogleappengine.html
- ^ http://code.google.com/appengine/docs/python/tools/webapp/overview.html
- ^ http://www.youtube.com/watch?v=oG6Ac7d-Nx8
- ^ http://code.google.com/appengine/articles/modeling.html
- ^ http://highscalability.com/google-architecture
- ^ a b http://code.google.com/p/googleappengine/issues/detail?id=6
- ^ http://code.google.com/p/httpmr/
- ^ http://code.google.com/p/gawsh/
- ^ "Understanding Application Quotas with Google App Engine". Retrieved 2008-09-10.
- ^ "Google Finally Realizes It Needs To Be The Web Platform". 2008-04-07. Retrieved 2008-04-12.
External links
- Official site
- 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)