Tuesday, August 17, 2010

Multi-tenancy Support, High Performance Image Serving, Increased Datastore Quotas and More Delivered In New App Engine Release

Today marks the 1.3.6 release of App Engine for Java and Python. In this release we have made available several exciting new features, relaxed quota and datastore limitations, and added various issue fixes.

Multi-tenant Apps Using the Namespaces API

We are pleased to announce support for multi-tenancy for applications via the Namespaces API. With multi-tenancy, multiple client organizations (or “tenants”) can all run the same application, segregating data using a unique namespace for each client. This allows you to easily serve the same app to multiple different customers, with each customer seeing their own unique copy of the app. No changes in your code are necessary to use this API-- just a little extra configuration. Further, the API is also designed to be very customizable, with hooks into your code that you can control, so you can set up multi-tenancy in any way you choose.

Check out our application examples for Java and Python to demonstrate how to use the Namespaces API in your application. The API works will all of the relevant App Engine APIs (Datastore, Memcache, and Task Queues). Check out our docs for Java and Python to learn more.

High-Performance Image Serving

This release also includes a new, high-performance image serving system for your applications, based on the same infrastructure we use to serve images for Picasa. This feature allows you to generate a stable, dedicated URL for serving web-suitable image thumbnails. You simply store a single copy of your original image in Blobstore, and then request a high-performance per-image URL. This special URL can serve that image resized and/or cropped automatically, and serving from this URL does not incur any CPU or dynamic serving load on your application (though bandwidth is still charged as usual). It’s easy to use, just call the Python function get_serving_url, or the Java function getServingUrl and supply a Blob key (with optional serving size and/or crop arguments), and you can now serve dozens or hundreds of thumbnails on a single page with ease. To enable high performance image serving in your deployed application, you'll need to enable billing.

Custom Error Pages

Since launch, many developers have asked to be able to serve custom error pages instead of those automatically served by App Engine. We are happy to announce today we are supporting static HTML error pages that can be served for you automatically for over quota, DoS, timeout and other generic error cases, that you previously could not control. You can configure custom error handlers in your app.yaml or appengine-web.xml file. Check out the Java or Python docs for more information.

Increased Quotas

We have also continued the trend of lifting some system limitations that have been in place since launch. The Datastore no longer enforces a 1000 entity limit on for count and offset. Queries using these will now safely execute until they return or your application reaches the request timeout limit. Also, based on your feedback, we have raised nearly all of the burst quotas for free apps to the same level as the burst quotas for billed apps. Check out the docs for more information on quota limits.

Other features included in 1.3.6:
  • Java developers can now use the same app.yaml configuration file that App Engine uses for Python applications instead of appengine-web.xml (if preferred).
  • You can now pause task queues via the Admin Console interface.
  • Dashboard graphs in the Admin Console will now begin showing up to 30 days worth of data.
  • Content-Range headers are now supported with the Blobstore API.
You can read all about these features in the App Engine documentation for Java and Python. The new versions of the SDK can be found on our downloads page.

In addition to all of the new features, we’ve included several bug fixes which you can read all about in the release notes for Java and Python.

-- Posted by the App Engine team


Unknown said...

Congrats for the awesome job!
And can't wait for the Channel API too.

evaisse said...

Great works and still unique & surprising new features...

Unknown said...

Great work! Still waiting for a full text search :)

Unknown said...

the long promised Channel API is unaddressed in in the target release.

Mark Ellul said...

Great Work...

Does the Namespace have any effect on the SSL logic?

i.e. https://foo.myapp.appspot.com will still be segregated with a safe certificate from
i.e. https://bar.myapp.appspot.com?

Also looking forward to channelAPI.

Unknown said...

Can I use this with Maven?

Anna said...

amazing improvements , anyway to upload stati files like png and html/css/js ?

Daedius said...
This comment has been removed by the author.
Unknown said...

Oh, goodie! On my birthday and all :)

Domesticpedia said...

Congrats for the new app. Easier the Multi-tenancy is becoming better performance is it going to achieve.
end of tenancy clean

Unknown said...

Just curious about the Multi-Tenancy support. Is it possible to have unique urls per tenant for the same web resources? something like http://abc.com/tenant1/ and http://abc.com/tenant2/

The data on actual resource would be fed via the tenant's data sources.

Fcclean said...

this upgrade looks pretty impressive. Does it access data at the disk level or in the memory cache? Thanks Tim cleaning service in london