One of the reasons that companies are resisting moving applications (or parts of applications) to the cloud is because they are not sure which cloud they want to move it to! This seems to be a red herring to me because you can build applications that are reasonably portable between the different cloud vendor’s clouds. This makes it safer for you to take try utilizing a cloud service like Azure.
By leveraging well known design patterns such as domain driven design, layered/tiered architectures, software factories and a provider model you can build applications that insulate areas subject to change, like the specific details of the chosen cloud. This should be well familiar to you because it is the same technique that makes it possible to write database agnostic applications that allow the switch from one database provider to another.
In effect this would provide the possibility of: “Write Once, Cloud Anywhere” application design.
In effect this would provide the possibility of: “Write Once, Cloud Anywhere” application design.J Of course just as in the “Write Once Run Anywhere” model of the Java world, it is unlikely that many will actually switch providers any more than companies have switched J2EE or database vendors once their application has been developed. Still the possibility should give you a sense of security and encourage you to try.
Using these techniques you can also write applications that can run on-premise and/or in the cloud using the same design techniques of layering and encapsulation.