Tuesday, April 8, 2008

Google App Engine: Write Your Own Google Apps

Google's applications could be useful and interesting, but they are just a small fraction from all the applications you may need. That's probably the reason why Google decided to open its infrastructure to third-party applications and released Google App Engine.

Google App Engine gives you access to the same building blocks that Google uses for its own applications, making it easier to build an application that runs reliably, even under heavy load and with large amounts of data. The development environment includes the following features:

* Dynamic webserving, with full support of common web technologies
* Persistent storage (powered by Bigtable and GFS with queries, sorting, and transactions)
* Automatic scaling and load balancing
* Google APIs for authenticating users and sending email
* Fully featured local development environment

For now, there are a lot of limitations: only the first 10,000 users who register at http://appengine.google.com/ will be able to test the new service, you need to write your applications in Python (more languages will come) and the quotas are enough only for small to medium projects. "During this preview period, applications are limited to 500MB of storage, 200M megacycles of CPU per day, and 10GB bandwidth per day. We expect most applications will be able to serve around 5 million pageviews per month. In the future, these limited quotas will remain free, and developers will be able to purchase additional resources as needed." The limitations are reasonable if you think this is only a preview release and Google wants to get feedback from developers before the official launch.

The applications can be run locally using a SDK provided by Google or uploaded to a subdomain of appspot.com or to your own site. There's already a gallery of applications that includes a chat room for teams, a movie quote site, a Python shell and more.

Google previously released Mashup Editor, "an AJAX development framework and a set of tools that enable developers to quickly and easily create simple web applications and mashups", but the new App Engine lets you build more complex applications. Kevin Gibbs explained more about Google's intentions at Google App Engine Campfire One.

Google App Engine provides an infrastructure for running web apps. By that, I mean that we're focused, specifically on web applications: making them easy to run, easy to deploy, and easy to scale. App Engine is different than a lot of other things out there: App Engine is not a grid computing solution-- we don't run arbitrary compute jobs. We also don't give you a raw virtual machine. Instead, we provide a way for you to package up your code, specify how you want it to run in response to requests, and then we run and serve it for you. You don't reserve resources, or machines, or RAM or a number of CPUs, or anything like that. It's a fluid system, that runs your code in response to load and demand. (...)

App Engine is a complete system. We provide ways to run your code, serve your static content, a database, request and application logs, methods to push new releases of your code, and more. Ultimately, we are trying to provide a simpler alternative to the traditional LAMP stack. (...) Finally, the other key part of App Engine is that we're providing you access to Google's infrastructure. The APIs and systems we are providing to you are built off of the same distributed, scalable infrastructure we use to power Google's other applications, like Google Accounts, GFS, and Bigtable. We're giving you access to those powerful building blocks, and giving you the ability to write real code and real apps that make use of them.

Usually, if you lower the entry barriers for a system, people will use it more often and the probability of building something great increases. Google wants to reduce the complexities of creating web applications and give developers the opportunity to spend more time writing code and less time building the infrastructure and scaling the application. The same way Amazon Web Services reduced the costs of running a start-up, Google App Engine could accelerate innovation by letting developers focus on what's important.

Google App Engine - http://appengine.google.com
Documentation - http://code.google.com/appengine
Featured applications - http://appgallery.appspot.com