Why Google App Engine + JVM changes everything

It was just under 3 weeks ago, a few hours after the announcement, @ben_h and I began drinking, and I became quite contemplative. We’re attending the Brisbane once-off GAE meetup tonight and so I thought I’d consolidate some thoughts here.

In essence, Google App Engine is simply a hosting option, that is free to start with and priced once usage increases. It’s killer feature, though, is its promise of scalability:

You no longer need to worry about system administration, bringing up new instances of your application, sharding your database or buying machines. We take care of all the maintenance so you can focus on features for your users.

If what they say is true

Then it’s the f***ing future, man. The argument is pretty simple. You either pay upfront for hosting that will only work until you become popular, or get hosting that will work when you get popular, and is free until that happens.

Nobody’s expecting this to be a panacea, though, however it doesn’t really need to be. The argument, as it stands, is strong enough to convince a lot of people that GAE should be their platform, which makes it the future, yes?

Furthermore, because anyone can sign up a GAE account, you could clone a github repository of, say, a blog or forum, and deploy it within 2 minutes to yourapp.appspot.com. If you’d like to write the next phpBB, targetting GAE is going to be good idea.

Why JVM matters

Because while Python is pretty good, it’s still kind of a small player in webapp-land. Django looks promising, but I haven’t found someone to argue it as being greater than Rails. And while Rails is a monumental advance over the ‘old ways’, I can’t help feeling like the well-worn criticism that ‘Rails doesn’t scale’ is valid. Not necessarily in terms of performance, but in terms of system complexity and development team size.

Java is hardly better. J2EE/Spring/Hibernate dominates the ‘enterprise’ web development world, but is too weighty for smaller players. Teams/apps big enough to already be writing J2EE apps are probably not the GAE’s target audience.

Thankfully, Java is not the only language that runs on the JVM. There are much much more powerful languages, like Scala, that open up whole new worlds of possibility.

Is what they say true?

About scaling. Who knows, yet. It’s going to take a good amount of use before we get real-world use-cases that show up its flaws. The gridgain guys wrote about some of the limitations, but none of those points are a show-stopper. In any case, hooking the GAE webapp to a grid backend running somewhere else isn’t particularly difficult, if you have the need.

So what’s the future?

Scala on GAE. If someone can write a framework as pleasing to use as Rails, but more robust underneath, that targets GAE specifically, it could really take off in the next 2 - 3 years.

There’s also a strong possibility that Rails running under JRuby using BigTable (so no ActiveRecord, as far as I can tell) may do it instead. Some progress has already been made.

I’ve got more thoughts about what a new framework in Scala might look like, and how it compares to Lift, but right now it’s time to go to the pub for the GAE meetup!

- @glenmaddern