I feel that a matrix moment is coming ... "What is the cloud? A cloud around us, a prison for your program ..." (what? C.Kh. said, bring your sense of humor ...)
Ok so serious, what is a cloud? It depends on the implementation, but the usual features include a scalable computing resource and a processor hour charge, storage area, etc. So yes, this is a bit like development on your VPS / regular server.
As I understand it, the Google App Engine allows you to consume as much as you want. Internal resource management is done by Google and billed to you, and you pay for what you use. I believe that even a free threshold.
Amazon EC2 provides an API that actually allows you to add instances of a virtual machine (someone corrects me if I am mistaken), having previously configured them, deploy another instance of your web application, talk between private IP ranges, if you want ( slicehost definitely allow this is). In this way, EC2 can allow you to act as a giant front-end load balancer, transferring work to a variety of virtual machines on the rear panel, or publishing it all publicly. I am not sure of the details because I did not create the system, but I understand how I understand it.
I have a feeling (but I know least about Azure) that on Azure, resource management is done automatically, for you, Microsoft, based on what your application uses.
So, in general, a cloud is two different things, depending on which cloud you choose. EC2 seems to provide an API for resource management, GAE and Azure are environments that grow and shrink in the background based on your usage.
Note. I know that there are certain limitations in GAE, especially with Java. In a minute I will edit in another thread, where someone made a wonderful comment on one of my posts with this effect.
To change , as promised, see this topic: Cloud agnostic architecture?
As for the choice of structure, it really doesn't matter as far as I know. If you are planning to deploy on one of these platforms, you can check the availability of the framework / language. I personally just started Django and love it, having learned python some time ago, so in my completely impartial opinion, use Django. Other developers will probably recommend other things based on their preferences. What do you know? What do you like best? What do you like most? I would go with that. I chose Django solely because I'm not such a big fan of PHP, I like Python, and I was comfortable with the framework when I initially played with it.
Change So how do you write cloud code? You design your software to fit one of these architectures. Again, look at the cloud agnostic thread for some really good discussion of the ways of this. For example, you can talk to some GAE services that are scalable. The fact that they are on GAE (example) does not really matter; you use the ideas of free communication. In fact, this is just a step further from the idea of ββa web service.
In addition, another feature of the cloud that I forgot to mention is the idea of ββproviding a CDN for you - some cloud implementations can move your data around the world to make it more efficient for maintenance, or simply because where it is have got a seat. If this is a problem, do not use the cloud.