App Engine Now Has Multi-Tenancy and Increased Datastore Quotas
Multi-TenancyThe Namespaces API allows multiple client organizations to run the same application by segregating data using a unique namespace for different clients. This is big news for developers who have wanted to serve the same app to multiple customers, with each customer having their own version. With a slight amount of configuration, and no code changes, you can use this API. The Namespaces API is very customizable. Learn how to use it from these Java and Python examples.
More DatastoreGAE continues to knock down datastore limitations in its releases, and today some limitations have been lifted that were in place since its launch. Developers can now exceed the 1,000 entity limit on count and offset queries. These queries now safely execute until they return or until the application hits the request timeout limit. In addition, almost all of the burst quotas for free apps have been raised to the level of paid apps.
Custom Error PagesNo longer do developers have to accept the automatic App Engine error page. Instead, they can now create their own static HTML page that can be served automatically over quota, DoS, timeout, and other generic error classes. Configure the error handlers in your app.yaml or appengine-web.xml.
High-Performance Image ServingThe new serving system for high-performance images is based on the same infrastructure as Picasa. Developers can now generate a stable URL for serving good-quality image thumbnails. The URL can serve images that are resized and/or cropped automatically. No CPU or dynamic serving load will be incurred on your application, but bandwidth is still charged as usual.
It's all done by storing a copy of the image in Blobstore and requesting a high-performance per-image URL. You just call the Python function get_serving_url, or the Java function getServingUrl and provide a Blob key along with optional serving size or crop arguments. Developers can now easily serve hundreds of thumbnails on a single page, but you do need to enable billing in order to have high-performance image serving in your deployed application.
- Java developers can use app.yaml (Python's configuration file) instead of appengine-web.xml
- Blobstore supports Content-Range headers
- The Admin Console interface can be used to pause task queues
- The Dashboard graphs in the Admin Console now show up to 30 days worth of data