In installments, I'll describe my experience developing a web site, and operating it, based on LAMP (in my case, redhat, apache, mysql, php), versus
app engine (google's "cloud computing" offering). The LAMP site is a classifieds site called
loquo (started in 2002, and acquired by ebay ibn 2005, I left the project in 2006).
Askaro is the app engine based one that Eduardo Manchon and I "launched" yesterday, and will be used in the comparison.
Right off the bat, I'll glad the world has evolved; the gains, beyond the promised offer of scalability (hopefully I'll need it :-), are palpable from the start, both in ease of software development and web operations, which is to me the hardest thing for any web startup, if it grows, of course. I don't pretend to write an evaluation of app engine, compare it with amazon ec2, azure, et al or talk about cloud computing in general, instead I write down what it feels like going from LAMP to a very specialized "cloud" offering, in this case app engine, designed for request/response http, not a general purpose one.
So, rewind back to 2002. I was coming from the world of enterprise java apps (java), C++, NT services, some MFC, etc. After ditching dot net (couldn't stomach DLL hell, full windows xp reinstalls, etc), I went onto learn my first scripting language (PHP), and to master a web friendly (fast reads) SQL database: MySql. Naively, the first incarnation of the app ran out of my DSL line in my Barcelona flat (this was the time before ~$100 per month dedicated servers and all-you-can-eat bandwidth, at least in europe).
Before any line of code was written, I had to install, and fully understand, the security model of mysql, compile php module for apache, learn apache configuration, just to make a developer sandbox nest. Now, if I didn't compile php, extensions, tweaked my.conf, etc, no chance I would be able to operate a production site with even modest traffic. So I paid my dues, hands dirty early on.
Fast forward to 2009: to get started, all is need is app engine sdk which includes a developer sandbox that has an integrated toy web server, not suitable for production, but it mimics the production environment, which is what you'd care (the Apache) and the datastore (the Mysql).
Now, I had to learn python for the job,
diveintopython.org got me to appreciate the language. You take it from there. That's the P in LAMP. I let others compare both languages in terms of syntax, expressiveness, number of extensions, etc. To me, they don't even belong to the same class. The L (linux) part of LAMP, well dissolves itself. I don't know which linux disto, if at all, my code runs on. No more worries about load, the nightmare, or not, translates into cost, since I'm charged by the cpu hour (yesterday, askaro went a few cents over the free quota, maybe because I'm using shim cache which relies or because the way I'm doing the bounding box queries is very inefficient). So, the linux disto, kernel compilation, load, etc hell translates into optimizing the code to reduce computation, an ultimately, my cost. Now, this is an unknown "science" to me, but my motivation for understanding where CPU cycles went is high. Traffic yesterday was 3200 visits, about 8 pages/visit although there is a lot of ajax action that isn't counted as a page view doing this bounding box queries.
I haven't put to test app engine scalability: the best it has handled so far, is a burst of 10 request/second when we were mentioned in a national
newspaper. Loquo, I recall, peaked a 50 request/sec under my watch. Even at that, no amount of meditation or ashtanga yoga was enough to help me endure the desperation dealing with server load spikes, php module leaking memory, recompilations, server down, etc. For months, apache was configured to recycle child processes every 500 requests or so, that's how bad it got. No piece of mind, ever. The memory leak "resolved" itself by migrating loquo to a datacenter in Holland after ebay acquisition. More capable hands, the fact it moved to debian, differente kernel, who knows, but it went away. Right before the migration, the site was running at ev1server (If I recall, 4 front apache server with a hardware load balancer, 3 mysql (1 master for writes, replicated to 2 slaves for reads, plus a mail server (qmail), image server, maybe another one for svn, otrs, trac, something like that).
In the app engine world, I don't do web operations. Well, little of it, I'll get to it. When you push your code to the "cloud", it lives in a runtime, where http requests get dispatched to your code, so apache, it's modules, compilation, hardware load balancer out the window.
There is a lot more to talk about, staging environment, data sharding, versions, backups, vendor lockin, schema evolution, offline processing, etc in both worlds, but this is getting to be to long to read in a screen.