I'm really impressed with the power of cloud computing when it comes to the possibility to scale up and down your facilities depending on your load.

How can I shift my paradigm and learn to write my applications in that way? Write it once and forget(no matter of the future load) would be the best solution.

How can I practice my skills in that area?
Setup virtualization environment when I can add another VMs into the private cloud(via command line?) on some smart algorithms to foresee the load for some period of time?

Ideally I want to practice it without buying actual Cloud computing services and just on my hardware.

The only thing I want to practice here is app/web role and/or message queue systems scaling when current workers have too many jobs in queue. So let's rule out database scaling from the question's goal as too big topic.