Monday, August 04, 2008

On Google App Engine

I was just reading Ayende's post 'Thinking About Cloud Computing'. He talks about two very different approaches; Amazon's EC2/GoGrid where you have a VM that sits on Amazon's or GoGrid's servers and Google App Engine where Google provide an application hosting environment. Ayende's take is that the Google approach is the one with legs and I'm inclined to agree with him.

I've been aware of EC2 for a while now because I'm a keen user of S3, but I'd not come across Google App Engine before. I really like the premise; you simply upload your application to the cloud and it just scales as required. At the moment it only supports Python, but this is something that will surely spread to other environments. It can only be a matter of time before someone supplies a Mono based .NET environment. Once that happens Mono will move from being an interesting .NET sideshow to being seriously mainstream.

Up to now, If you're thinking of building the next YouTube or Twitter you've got two choices, you can concentrate on getting a compelling new application out there and hope that you'll be able to deal with scaling it up if it gets popular. Possibly facing a similar to fate to Twitter, which has been having serious scaling issues. Or alternatively, you spend the money up front on infrastructure. Probably wasting money on something that may never fly.

With Cloud computing you don't have this dilemma. You can concentrate on building a fantastic application knowing that you don't have to worry about the infrastructure.

What will Microsoft's response to this be? Their OS monopoly must surely be threatened by a world where anyone can get limitless scalability on a pay-as-you-go basis. Why would anyone every buy a server operating system again? Will the beast soon start selling its own cloud services?


Anonymous said...

Live Mesh? Midori? You bet!

Anonymous said...

I'd say that you have a third option: design your application in a scalable manner from day 1, use a super simple hosting for day 1, and easily scale to better infrastructures when need (and funding) arises.

Anonymous said...

If you haven't read these blog posts already, they are very interesting:

Mike Hadlow said...

Ken, as usual you are right. Designing for scalability should be a given, but even if you design for scalability there's can still be a considerable lag between getting that front page news story about your site and getting the hardware to support it in place. In the meantime half the world has tried to view your site, got a timeout and dismissed you as amatuers.

Also designing for scalability can be different from plugging scalability features in. You can design you application so that it's easy to plug in cacheing and queuing but pluggin in those features still requires effort that you might not want to make up front.

I'm using amazon S3 for static files on one of my sites. I shouldn't ever have to worry about scalability again as far as those files are concerned (so long as I can pay for it). That's the promise of the cloud. We can concentrate on building great applications and never have to worry about the hardware that supports it.