Now, I'm just scratching the surface of Google App Engine, so some of these points are probably wrong. First, let's consider what you give up by going with the App Engine:
- Ability to use common 3rd party tools like PHP, MySQL, WordPress, etc.
- The requirement that your app be specially programmed in a stateless manner
- Your data and files are no longer stored or accessible via standard methods (gone are the relational tables, and FTP access)
- Your programs lose access to features such sessions, the ability to open up arbitrary ports, run operating system processes, etc.
- The number of programmers who can pick up an App Engine project is minuscule when compared to the universe of programmers who can jump on a typical PHP project
And on the gain side:
- Infinite scalability
And the thing, as risky as all the losses are, the infinite scalability is awfully powerful.
A Functional Programmer's Dream?
Another thought I keep having is that this setup is a Functional Programmer's dream, right? The whole system is built on the notation that when you suck state out of the problem, you can get amazing benefits - in this case, the ability to run as many copies of the application, on as many servers, as you need. All without fear that they'll step on each other.
There are lots of different approaches to making scalable applications. This approach that you program them from the ground up, using only resources that scale, seems quite sensible to me. Sure, it means that you give up the comfortable environment you're used to - but perhaps in the long run, you come out ahead.