Beruflich Dokumente
Kultur Dokumente
Google App Engine lets you run your web applications on Google's infrastructure. App
Engine applications are easy to build, easy to maintain, and easy to scale as your traffic
and data storage needs grow. With App Engine, there are no servers to maintain: You
just upload your application, and it's ready to serve your users.
You can serve your app from your own domain name (such
as http://www.example.com/) using Google Apps. Or, you can serve your app using a
free name on the appspot.com domain. You can share your application with the world,
or limit access to members of your organization.
Google App Engine supports apps written in several programming languages. With App
Engine's Java runtime environment, you can build your app using standard Java
technologies, including the JVM, Java servlets, and the Java programming language—
or any other language using a JVM-based interpreter or compiler, such as JavaScript or
Ruby. App Engine also features a dedicated Python runtime environment, which
includes a fast Python interpreter and the Python standard library. The Java and Python
runtime environments are built to ensure that your application runs quickly, securely,
and without interference from other apps on the system.
With App Engine, you only pay for what you use. There are no set-up costs and no
recurring fees. The resources your application uses, such as storage and bandwidth,
are measured by the gigabyte, and billed at competitive rates. You control the maximum
amounts of resources your app can consume, so it always stays within your budget.
App Engine costs nothing to get started. All applications can use up to 500 MB of
storage and enough CPU and bandwidth to support an efficient app serving around 5
million page views a month, absolutely free. When you enable billing for your
application, your free limits are raised, and you only pay for resources you use above
the free levels.
The Sandbox
Applications run in a secure environment that provides limited access to the underlying
operating system. These limitations allow App Engine to distribute web requests for the
application across multiple servers, and start and stop servers to meet traffic demands.
The sandbox isolates your application in its own secure, reliable environment that is
independent of the hardware, operating system and physical location of the web server.
Examples of the limitations of the secure sandbox environment include:
• An application can only access other computers on the Internet through the
provided URL fetch and email services. Other computers can only connect to the
application by making HTTP (or HTTPS) requests on the standard ports.
• Anapplication cannot write to the file system. An app can read files, but only files
uploaded with the application code. The app must use the App Engine datastore,
memcache or other services for all data that persists between requests.
• Application
code only runs in response to a web request, a queued task, or a
scheduled task, and must return response data within 30 seconds in any case. A
request handler cannot spawn a sub-process or execute code after the response
has been sent.
The Datastore
App Engine provides a distributed data storage service that features a query engine and
transactions. Just as the distributed web server grows with your traffic, the distributed
datastore grows with your data. You have the choice between two different data storage
options differentiated by their availability and consistency guarantees.
The App Engine datastore is not like a traditional relational database. Data objects, or
"entities," have a kind and a set of properties. Queries can retrieve entities of a given
kind filtered and sorted by the values of the properties. Property values can be of any of
the supported property value types.
Datastore entities are "schemaless." The structure of data entities is provided by and
enforced by your application code. The Java JDO/JPA interfaces and the Python
datastore interface include features for applying and enforcing structure within your app.
Your app can also access the datastore directly to apply as much or as little structure as
it needs.
The datastore is strongly consistent and uses optimistic concurrency control. An update
of a entity occurs in a transaction that is retried a fixed number of times if other
processes are trying to update the same entity simultaneously. Your application can
execute multiple datastore operations in a single transaction which either all succeed or
all fail, ensuring the integrity of your data.
The datastore implements transactions across its distributed network using "entity
groups." A transaction manipulates entities within a single group. Entities of the same
group are stored together for efficient execution of transactions. Your application can
assign entities to groups when the entities are created.
Google Accounts
App Engine supports integrating an app with Google Accounts for user authentication.
Your application can allow a user to sign in with a Google account, and access the
email address and displayable name associated with the account. Using Google
Accounts lets the user start using your application faster, because the user may not
need to create a new account. It also saves you the effort of implementing a user
account system just for your application.
If your application is running under Google Apps, it can use the same features with
members of your organization and Google Apps accounts.
The Users API can also tell the application whether the current user is a registered
administrator for the application. This makes it easy to implement admin-only areas of
your site.
For more information about integrating with Google Accounts, see the Users API
reference.
Development Workflow
The App Engine software development kits (SDKs) for Java and Python each include a
web server application that emulates all of the App Engine services on your local
computer. Each SDK includes all of the APIs and libraries available on App Engine. The
web server also simulates the secure sandbox environment, including checks for
attempts to access system resources disallowed in the App Engine runtime
environment.
Each SDK also includes a tool to upload your application to App Engine. Once you have
created your application's code, static files and configuration files, you run the tool to
upload the data. The tool prompts you for your Google account email address and
password.
When you build a new major release of an application that is already running on App
Engine, you can upload the new release as a new version. The old version will continue
to serve users until you switch to the new version. You can test the new version on App
Engine while the old version is still running.
The Java SDK runs on any platform with Java 5 or Java 6. The SDK is available as a
Zip file. If you use the Eclipse development environment, you can use the Google Plugin
for Eclipse to create, test and upload App Engine applications. The SDK also includes
command-line tools for running the development server and uploading your app.
The Python SDK is implemented in pure Python, and runs on any platform with Python
2.5, including Windows, Mac OS X and Linux. The SDK is available as a Zip file, and
installers are available for Windows and Mac OS X.
The Administration Console is the web-based interface for managing your applications
running on App Engine. You can use it to create new applications, configure domain
names, change which version of your application is live, examine access and error logs,
and browse an application's datastore.
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. Other "cloud"-based platforms include offerings such as Amazon Web Services and
Microsoft's Azure Services Platform. App Engine differs from services like Amazon Web Services, though,
in that AWS is Infrastructure as a Service while App Engine is Platform as a Service.
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
Supported features/restrictions
Currently, the supported programming languages are Python and Java (and, by extension, other JVM
languages such as Groovy, JRuby, Scala, Clojure, Jython, and special version of Quercus) . Python web
frameworks that run on Google App Engine include GAE framework, 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. 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
Bulk downloading
SDK version 1.2.2 adds support for bulk downloads of data using Python.[6] The open source Python
projects gaebar,[7] approcket,[8] and gawsh[9] 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 filesystem on App Engine. Your application can use
only virtual filesystems, like gae-filestore.
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.[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".)
SSL/HTTPS is only available via *.appspot.com domains and not via Google Apps Domains.
Datastore cannot use inequality filters on more than one entity property per query.
Not possible to change some default Jetty configurations such as accepting a form POST/GET
over 200KB in size.
A process started on the server to answer a request can't last more than 30 seconds. (with the
1.4.0 release, this restriction does not apply to background jobs anymore)
Major differences
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. 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. 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.
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.
Portability concerns
Developers worry that the applications will not be portable from App Engine and fear being locked into the
technology.[18] 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. 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.[19]
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.[20]
The Django web framework and applications running on it can be used on App Engine with
modification. Django-nonrel aims to allow Django to work with non-relation databases and the project
includes support for App Engine.
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.
The GAE Java servlet container uses the Jetty Web Server, an open source project that implements the
2.5 servlet specification.
Usage quotas
App Engine defines usage quotas for free applications. Extensions to these quotas can be requested, and
application authors can pay for additional resources.
Hard limits
Quota Limit
Quota Limit
Data stored 1 GB
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."[26]
Other competitors include Microsoft's Azure Services Platform, Salesforce.com's Force.com Platform,
Sina.com's Sina App Engine (Chinese) and Heroku.
AppScale is an open-source framework for running Google App Engine applications.
App Development
App Management
App Performance
App Testing
Blobstore API
Datastore
Mail API
Memcache
Task Queue
Users API