Turns out that although in general people tend to agree what a cloud is, nobody actually knows exactly what to do with it!
Lets start with a little overview of Everything cloud:
IaaS: Infrastructure as a Service. The obvious and always used example! This is all about virtualization. You don't want to know about the underlying hardware anymore, you just want to be able to launch a new instance of your favorite operating system using a configuration tool. Amazon EC2 is the default example for running the OS and Amazon S3 is the default example for storage.
PaaS: Platform as a Service. This is basically the concept that you follow some (proprietary) rules to write your application so that it can run on somebody elses cloud and you dont want to know anymore about any underlying infrastructure, hardware, operating systems, app container, database management, etc! Examples are Google App Engine and Force.com. And unfortunately CogHead.
SaaS: A bit of a strange item in this list. It means Software as a Service. You use software (usually webbased) that is offered to you by a third party on their systems. And their systems just might be running on a cloud like platform, you just don't care. There is lots to configure and lots to personalize in main examples of this like SalesForce. It smells a lot like ASP (Application Service Providers) and often has a fair bit of Portal mixed in. No radical new concepts.
Turns out that the whole hype around cloud does not come from radical new technologies, it comes from the different pricing models and a bit from separation of concerns. The most used arguments for using cloud stuff are based on an IaaS model: Instantly available hardware, pay only for the cycles that you use, don't bother anymore with maintenance of the physical stuff, and scale up for bursts like end-of-year calculations. Unfortunately, since pricing models are currently based on this bursting concept, it is not fully applicable to a lot of our businesses.
An interesting way to look at these different models is that if you move down the list you get a lot more freedom from concerns. At PaaS you already do not worry about everything connected to your application logic. You have a container interface that is provided and you just do not want to know about the rest. This could help speed up your development a lot. Possibly. Perhaps. The cost associated is that you are very proprietary and tied in to you provider!
This tie in might not seem so bad untill you look at the example of CogHead. This PaaS platform was bought up by SAP recently. However SAP did not buy the clients and did not continue the public service. That means that these people have received a legal notice that they have 3 weeks to move off the platform before service is discontinued. Now, can you rewrite your entire business in 3 weeks? And handle a migration? Probably not!
Where SaaS obviously has a similar problem, the IaaS models seems safe enough. You do everything the way you want, probably creating images with the usual platforms that you can get anywhere, also in non cloud environments. The most risk here is your data. There are a number of examples of people with a client base that now have so much data going into Amazon S3 that there is no way to get it out again in a reasonable timeframe. And then there is the safety of data and regulations which is creating the discussion about public and private clouds (shared usage or just for your company) and hybrid models between your infra and the cloud.
The issue that this raises and what we discussed most at the Enterprise Cloud discussion at CloudCamp is that the problem currently with Clouds is not the technology (although PaaS is just beginning), it is mainly the SLA's and Escrow, pricing and contracting models that are not mature. It is developments in this area that will drive innovation and usage, not the next technical scalability solution.