I took the title of this post from a recent blog entry by Michael Cote. Cloud enthusiasts (often people with limited operations experience) talk in grandiose terms of moving the entire data center to a public cloud. Cloud naysayers (often people with extensive operations experience) talk in detail about all the things you can't get in the cloud, like latency, lack of multi-cast, weaker security etc.
In general, cloud computing fits modern web architectures very well, by which I mean any app built to support a web browser client. These applications are "cloud-ready" and require little effort to move to a public or private cloud.
In general, any application not build to support a web browser client is going to be problematic to move into the cloud. These applications often rely on technologies that are not readily available in the cloud, such as multi-cast.
The decision to cloud or not to cloud is not a binary decision made at the data center level. Instead, it is a more nuanced decision made at the app level.
Similarly, the decision to go public cloud or private cloud is a decision made at the app level.
At the margin, be governed by
Cote's Rule of Cloud Migration:
If it ain’t broke, don’t cloud it!