Google App Engine 1.5.0 Released
Today, at the start of Google IO, the Google App Engine team announced the release of Goole App Engine 1.5.0. This includes a number of changes, which will increase the control over what kinds of applications can run on the infrastructure.
One of the key changes is the ability to have long-running instances. Previously, single-threaded requests were started up and terminated dynamically based on application load; whilst that allows an increasing throughput of data to be processed, it isn't appropriate for all kinds of application. The newly available backends allow a longer running set of instances which have memory and CPU requirements. They can be resident (which gives control over the startup and shutdown of the instance) or dynamic (in which they are brought on-line on demand and then terminated when idle). Although threading is still disallowed in general, these backend instances can maintain in-memory caches and serve multiple requests at once through the max-concurrent-requests parameter setting.
In addition, Pull Queues can be used to allow instances to request tasks, instead of tasks being pushed out to individual instances. This will be a coding and architectural change for those applications which want to take advantage of a different model of computation.
The last key change is the adoption of the high replication datastore as the default option, as well as reducing the costs associated with the option.
The Year Ahead
In addition, the year ahead looks to be interesting as Google App Engine will come out of preview status to an official Google product later this year, although no firm date has been given.
One of the changes is to merge the offering between the Google App Engine for Business, originally announced at Google IO 2010, to be made available for all Google App Engine customers. This will result in the pricing structure to change, in addition to a new uptime service level agreement and terms of service. There will still be free apps available, but with a more restrictive quota – however, the paid apps will cost $9/app/month in addition to usage fees. There is also a premier account option which offers a flat per-app rate (but still charges usage fees).
The usage pricing is also being restructured, from a CPU utilisation model to one of CPU instance hours, and to a per-API call operation. More details are available at the App Engine Pricing page. Both the High Replication Datastore and the Master/Slave Datastore are converging on $0.24/G/month.
Going, Going, ...
Although Google App Engine was originally written to support Python applications, it quickly became multi-lingual with Java applications as well. With the 1.5.0 release, the SDK supports Go as a language for App Engine development, and will be enabled on the 1.5.0 deployment in the near future. Downloads of the SDK include support for Go on both Linux and OSX 32/64 bit architectures.
The Go language on Google App Engine is a subset of the full Go language, avoiding the
syscall libraries, but including AppEngine specific APIs such as DataStore, Blobstore and so on.
Finally, the SDK notes that like other languages, the Go language runtime only supports a single CPU thread; so whilst goroutines and channels are present, only a single thread will execute. The blog notes that this restriction may be lifted in the future.