Thursday, April 10, 2008

google app engine

Google announced their App Engine service earlier this week. I didn't make it into the first 10,000 who gets to monkey with it, but I don't really have any firm plans for a project that would be useful for it right now, either.

The announcement has been met with a lot of negativity, though. Aside from python winning the bragging rights to being the first language supported by app engine, a lot of other folks are worried about the whole "google took muh data!" problem, "vendor lock-in" from the Rails and MS crowd, and the occasional "but it doesn't do backend processing like EC2 so you couldn't build twitter with it" point (which has some merit).

As far as the trust thing goes... unless you have a DS3 running into the closet where you're storing your 40 servers, chances are you're already trusting your content to someone else anyway. I don't see vendor lock-in as too much of an issue, either, since the only truly google-only feature is BigTable support (which you can only get to through the python API), and I think we can expect that to be abstracted into an ORM pretty quickly. Backend processing and access to the filesystem? Well, then, make REST requests back to a server not running on App Engine (like, say, an EC2 instance?).

The fact is that App Engine is poised to take away the single biggest nightmare for small developers who have big ideas and limited cash: infrastructure. Over the past couple of years, I've talked with a number of folks who are looking at whipping up the next social networking site and have even looked at doing a couple of my own. The big stumbling block from an architectural standpoint always seemed to be the catch 22 of infrastructure at the tipping point where you go from being a cool, underground, niche site into something that's getting hammered on by thousands of people.

Scylla is that you ignore the scaling issues until you actually have to deal with them, which means you're going to be stuck rewriting your site right as it's hitting the tipping point and the massive amounts of new users that you'll need to be successful are forming their first impressions: not a good time for "request timed outs". Charibis is spending the time to architect the site to scale before you launch so when (if) you get the traffic, it'll be as simple as just calling up the hosting provider and adding more boxes. Most web Oddyseuses opt for the devil over the deep blue sea, and a lot of them end up folding when they find they don't have the resources (or money to hire the resources) to survive the onslaught of new users Not many make it to MySpace/Facebook/Digg land.

If you're a one-man shop (or even three-man) who's doing this more as a hobby than a lynchpin for a Web 2.0 business plan, success is almost something to be avoided and you end up praying that if digg or /. ever does take note of your humble project that your code will cause the server to fail before too many of the new visitors see enough of the site to want to come back on a regular basis.

App Engine, assuming it lives up to the promises made in the presentation, basically takes that worry off the table. Don't sweat the infrastructure, and just focus on the code and the stylesheet. And on top of that, the pricepoint is "free"? Yeah, that's worth studying up on python for. It'll make experimenting with ideas a hell of lot less risky by punishing success less.

No comments: