Tuesday, May 10, 2011

App Engine 1.5.0 Release

The App Engine team has been working furiously in preparation for Google I/O time and today, we are excited to announce the release of App Engine 1.5.0, complete with a bunch of new features. This release brings a whole new dimension to App Engine Applications with the introduction of Backends, some big improvements to Task Queues, a completely new, experimental runtime for the Go language, High Replication Datastore as the new default configuration (and a lower price!), and even more tweaks and bug fixes.

Serving Changes

  • Backends: Until now all App Engine applications have been running on short-lived dynamic instances that we spin up and down in response to application requests. This is great for building scalable web applications, but has a number of limitations if you are looking to build larger, long-lived, and/or memory intensive infrastructure. With 1.5.0, we are introducing Backends which will allow developers to do precisely this! Backends are developer-controlled, long-running, addressable sets of instances which are as large as the developer specifies. There are no request deadlines, they can be started and stopped (or dynamically start when called), they can use between 128M and 1G of memory and proportional CPU. If you’d like to find out more, have a read through our Backend docs for Java and Python.
  • Pull Queues: Most of our users are heavily using Task Queues in their applications today, but there is lots of room for more flexibility. With 1.5.0 we are introducing Pull Queues to allow developers to “pull” tasks from a queue as applications are ready to process them, rather than relying on Task Queues to push tasks at a pre-configured rate. This means you can write a Backend to do some background processing and pull 1, 10, or 100s of tasks off the Pull Queue when the Backend is ready for more. In addition, we’ve introduced a REST API which will allow external services to do the same thing. For example, if you have an external server running to do image conversion or OCR, you can now use the REST API to pull tasks off, run them, and return the results. In conjunction with these 2 improvements, we’ve also increased the payload limits and processing rate. We are excited both about expanding the use of Task Queues as well as improving the ease of integration between App Engine and the rest of the cloud.


  • High Replication Datastore as default: After months of usage and feedback on the High Replication datastore (as well as a record of 99.999% uptime so far) we are now confident that it is the right path forward for the majority of our users. So, today we are doing two things: setting HRD as the default for all new apps created, lowering the price of HRD storage from $0.45 down to $0.24, and encouraging everybody to begin plans to migrate. We really appreciate all the time that early users of HRD put into trying it out and finding issues and have fixed a number of those issues with this release.

Changed APIs

  • In response to popular demand, the HTTP request and response sizes have been increased to 32 MB.
  • Mail API: We have added a few restrictions to the Mail API to improve the reliability and reputation of the service for all applications. First, emails must be sent from email accounts managed by Google (either Gmail, or a domain signed up for Google Apps). Second, we’ve reduced the number of free recipients per day from 2000 to 100 for newly created applications. Both of these will help ensure mail from your application arrives at the destination reliably.


  • Code downloads: As of 1.5.0, we have expanded the ability to download an Application’s source code to include both the user who uploaded the code to download it as well as the Owner(s) of the project as listed in the Admin Console. Owners were introduced in 1.4.2 as an admin role.


  • New runtime: With 1.5.0 we are launching an experimental runtime for the Go Programming Language. Go is an open source, statically typed, compiled language with a dynamic and lightweight feel. It’s also an interesting new option for App Engine because Go apps will be compiled to native code, making Go a good choice for more CPU-intensive tasks. As of today, the App Engine SDK for Go is available for download, and we will soon enable deployment of Go apps into the App Engine infrastructure. If you’re interested in starting early, sign up to be first through the door when we open it up to early testers. See the announcement on the Go Blog for more details.
There are plenty of additional changes and bug fixes in this release so please check out the full release notes, including all issues fixed for Java and Python. Finally if you are interested in where App Engine is heading later this year, check out our other announcement at I/O 2011!

The App Engine Team


Damian del Rivero Lagunes said...

Go language?? why not focus on Javascript like Node platform..?
Look what springsource-vmware is doing with it's cloud foundry...
Watch for the pricing model, looks like a fail from Google.

Charlie said...

Very exciting! ...Also looking forward to ProtoRPC for http://hockeybias.com

Go Sharks!

Unknown said...

Does this mean that for a backend process the max URLFetch timeout went up to infty too? (YAY for continous open connections?)

Michael So said...

would be nice if GAE can be a open source PaaS platform like cloud foundry. ATM, i am seriously considering migrate all my work to cloud foundry
Maybe you guys can work more with AppScale? anyway,i would like to see i can host GAE apps in my private cloud

Jakub said...

+1 to Damian. There are a couple languages that'd be interested and are missing in a cloud environment, but Go is by far the last of them. How about JS, Ruby, Erlang? Argh.

Samuel Lucas said...

The new pricing model and free quota reduction will prevent me from using GAE for small projects. It's now a lot cheaper use PHP frameworks that can be hosted in almost any hosting provider.

Xavier said...

Agreed with Damian and Jakub: why Go when Google could reuse V8 so obviously.

Prof. Beatriz Rodrigues said...

why not traceur (javascript/next) or native Scala Api's without Java Wrappers or Python 3 ? I just don't get Go ! Please Google Team, explain us !???

DF said...

You'd better get more clarity around the new pricing long before it goes into effect.

We have a moderate-traffic site that nevertheless has 6 instances hanging around sometimes. I bet we could do with 1, and that's a huge difference.

cherouvim said...

Will the old datastore be removed at some point? Are we forced to migrate?

Anonymous said...

Am I missing something URLFETCH still seems to have a 1 MB limit - see error below trying to post a 6MB call?

om.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call urlfetch.Fetch() was too large.
at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.rpcFinished(ApiProxyImpl.java:418)

XIX said...

Give a man a GO compiler and he eats for a day.

Give a man a C compiler and he feeds upon php/python/jscript/lua/etc for the rest of his life.

Thaina said...

Want to ask you about quotas of BackEnd

Are there free quotas for BackEnd?

I'm confused

GaB said...

Great news! Improvement on the datastore would have been nice. Like the ability to do inequality comparisons on more than one field.

The datastore seems to me the most limited feature of the App Engine.

Pluto J. Wang said...

How about Ruby and PHP?

Guy said...

The Backends Java API link in the Google App Engine site is broken. 404. that's an error.

Staff said...

Very upset about the limitations to the mailing API. Would be nice if there was some way to send on behalf of non-gmail users, even if it's rate limited or something.

Rick Horowitz said...
This comment has been removed by the author.
Rick Horowitz said...

And how exactly does reducing the number of free recipients per day from 2000 to 100 improve the mail service? My cost expectations were just increased by this. This is not a good thing, and I fail to see any justification for it.

John Rockefeller said...

Great news! I love the new pricing chart. VERY simple.

How does one set an app so that it is disabled if it reaches the limit of the free service? I'd hate to wake up one day and have my free app end up with a bill to pay.