I will admit that "Cloud Computing" terminology is becoming confused. People are mixing together the concepts of commodity hardware datacenters, the benefits of virtualization and massively parallel systems into a blender and calling it a "cloud." The truth is that these three concepts are very disparate practices that often do not entirely co-exist. Most service providers will pick one or two of the three for their managed cloud hosting.For example: Amazon AWS is largely a traditional infrastructure provider that leverages a massive number of commodity hardware (well, not quite, but bear with me) to offer low-cost server hosting. This allows you to spin up elebenty kabillion instances on the cheap, but the price/performance ratio many times just isn't there. A great article was recently published showing how moving a conventional Drupal installation away from AWS provided much better performance, lowered response times and was much more cost effective, even when accounting for disaster recovery. This demonstrates not how physical hardware is more cost-effective, but instead shows how performance matters when calculating cost.
When architecting an application's infrastructure it pays to remember that performance does not increase by adding more servers into the mix. Diagonal scaling is the best way to handle increasing load on a cost-effective basis, as demonstrated by Flickr and Wikimedia. Increase your hardware until you become constrained by concurrency (such as context switching, thread contention or mutex waits) or I/O then consider scaling out horizontally. Unless you are talking about massively parallel algorithms you don't need to spin up an enormous number of machines; even if you do start talking about massively parallel computation, you cease talking about infrastructure as a service and virtualization and instead move towards deploying Hadoop clusters across many physical nodes.
I would agree that vertical scaling isn't a great strategy. I would also argue that horizontal scaling on its own isn't a great strategy either. Get your money's worth for each instance you start, then keep deploying as demand increases.
Within the BlueLock Infrastructure As A Service (IaaS) Cloud, compute clusters are carefully divided into building blocks called “cores” and these cores are assigned to customers – never assigning more “cores” to a computer cluster than are actually available. This is the primary issue in the debate between dedicated versus shared cloud computing models – just throwing everyone in the compute pool without regard to expected performance isn’t a good idea. It’s important to ensure that the capacity available to application(s) is both dedicated and somewhat dynamic. At BlueLock, once one or more of these “cores” is assigned to a client they are combined together into a resource pool. 
Last night's episode of This Week in Cloud Computing
During the 12-week contest,
Everyone knows the value of good defense - whether guarding against intruders or providing general protection. At Bluelock, the Support Team prefers to operate in terms of offense. Anticipating problems and adjusting for them beforehand provides much better protection than simply reacting to situations as they arise. It's what puts Bluelock at the top of the 