In many ways the metaphor of cloud is a good one for selling applications. It represents a beautiful vision of computing, complete with a blue-sky backdrop and fluffy non-threatening cotton-wool edges.
But get up close and you begin to wonder where the cloud begins and the blue-sky ends. As you stare into the middle of the billowing mass, it changes before your eyes, and becomes all things to all observers. To paraphrase Tony Hancock: "Oh look, there's a man smoking a pipe!"
Nevertheless, cloud is a potentially useful term for a set of shared services that are available on the internet, says David Bradshaw, research manager of European Software and Services Research at IDC.
This is clearly a wide-based definition representing many modern computing ideas and a good deal of the old ones. Vendors can happily ramble on about "in the cloud", sounding terribly important, without having to deal with any nasty technical details.
You have to be careful, says Gary Barnett, CTO of research and consulting firm Bathwick: "It's going to be a term that is stamped on everything. If it's on the internet, it's cloud," he says, somewhat disparagingly.
Lest we forget, however, applications delivered over the internet still constitute a relatively novel concept. Many large enterprises are only just experimenting, apart from perhaps running a communication wiki or virtual private network (VPN) over the internet for remote working.
And while pay-as-you-go bureau computing may well have been the first example of cloud computing way back in the nineteen sixties, such is the ubiquity of the internet and variety of applications that many of the lessons from those days have had to be adapted to the point of being unrecognisable.
Yet the IBM mainframe is an image of cloud nirvana, says Barnett. "Essentially, it is the cumulonimbus of the cloud world. Developers write in a relatively simple programming language, make some relatively simple assumptions about resources and so on, they then package that up and give it to the mainframe and then the mainframe manages how much processing time gets spent and so on."
"You've got big single computers pretending to be lots of little computers, and at the other end of the spectrum you've got lots of little computers pretending to be one big one," adds Barnett.
Yet the key to it all, is that the software developer does not know which environment the application will be ultimately running on, how many users will log on, or how much data might yet be crunched by the algorithms. Further, the developer doesn't care. Much the same as electricity supply is handled automatically when plugging appliances into the socket, access to cloud resources required at runtime will be managed at runtime, by scheduling, load balancing, clustering, virtualisation and whatever other infrastructure and management is required.
So in an ideal world, developers need do nothing special to create cloud applications except concentrate on getting the business logic right. All the difficult framework code is handled for them. You could argue programming for the cloud becomes a breeze, and that's exactly what some clound vendors are now pushing.
For over a decade Salesforce.com have been selling on-demand customer relationship management (CRM) applications, delivered remotely and over the web. "Underlying each of those applications is our platform which we provide as a platform as a service," explains Simon Wheeldon, director of Force.com, Salesforce.com EMEA, (Force.com is the platform's product name).
"Over the years we've been exposing more and more of that platform so that our partners and our customers can build their own applications in the cloud. Now we're at the point where they can build very complicated applications on our servers," he adds.
"Typically there are a lot of services you have to put in place before you start. We provide a whole stack of business application services that you would have to write. For example an API to an analytical engine, workflow, auditing capabilities," he explains.
Force.com's approach takes many of the risky architecture jobs away from developers and, some might argue, a lot of the fun of solving the deeply technical problems. But business has never wanted developers to resolve those issues for each new application.
"One of the biggest headaches is deploying a network and server infrastructure that's robust, with no single point of failure," says Google's developer advocate Matthew Trewhella. "This can mean a pretty high cost early on just to build a stable platform. Cloud computing is a massive boon for small businesses and start-ups, because not only does it remove the costs of such deployment, it also removes all the headaches of designing the architecture, too."
Trewhella adds other common applications to the list of features a good cloud host should provide. As such, he says the cloud is becoming a better choice for applications across the board. "As a user, I want to be able to access applications from any device and from any location. If I leave my personal computer at home, I want to be able to pop into an internet cafe and check my calendar, or edit a presentation from my friends' mobile. Cloud applications enable this mobility.
"As a developer, the cloud provides a number of real advantages over traditional development. One point is that web applications scale transparently. For example, with many social applications, demand can be hard to predict accurately. Viral spread can cause sudden, massive spikes in utilisation of CPU, memory, disk and bandwidth. If your hardware is restricted to a few machines, the service may struggle under load," he explains.
Many believe social-networking websites are good examples of cloud applications ideally suited to the automatic resource management typically mooted as a cloud feature. IDC's Bradshaw explains that some applications lend themselves to the cloud better than others: "Applications where you have a lot of users doing similar things, that don't require a lot of customisation. So CRM, user collaboration, and collaboration through company boundaries. For example, in a large construction project, different companies might want access to all the plans and dates and so on. This will probably happen with supply chain management too. No one owns the system," he says.
Instead, users own a portion of the system or some hosted data. In the case of Force.com they own their own customisations, preferences and scripts - still hosted on Force.com's servers - and use Force.com's common services to create much of their application. In the case of Google Docs, users own simply their own documents and any changes they make to shared documents.
What these applications have in common is a mechanism to separate one user from the other, and keep them apart. In cloud parlance, this is known as "multi-tenanted."
"It could be argued that any app which has a login is a type of multi-tenant app, given that you're providing a service to a different user from the same system. The most important thing for your users is that their data is secure, so when you are designing such apps, make sure that the data security model is sound and that users or organisations have access to only their data," says Google's Trewhella.
Microsoft Developer Network says separating tenant data into individual databases is the premium approach to multi-tenanting: "The relatively high hardware and maintenance requirements and costs make it appropriate for customers that are willing to pay extra for added security and customisability."
It is not the only way to provide multi-tenancy. Users can simply share database tables with a user-id on each row to identify their personal data, or it's possible to use virtualisation to provide compartmentalised applications. But designing multi-tenancy to be secure, and verifiably so, can take a lot of effort. An entire new tier of user, the organisation, which may itself have many additional users, is needed.
"If you are going to provide a set of capabilities on the web, multi-tenanting works," says Bradshaw. "But it takes a while to take an existing application and make it multi-tenanted. People tend to think it's really simple, but fixing the delegated administration rights is one of the really gnarly parts about it, and it takes time."
It is perhaps one of the reasons why there are few examples of cloud applications converted from more traditional architectures. Ask anyone who knows cloud, and Salesforce.com, Google and Amazon are mentioned first.
Rod Drury, CEO, Xero, offers a cloud-based accounting application. It is a new entrant to the UK market but, like Salesforce.com, it was built as a multi-tenanted application from the start.
He explains why some of the incumbents have struggled. "Everything changes. It's different developers, it's different marketing, it's different pricing, different channels. Starting a business cleanly looks to be the best way to do it.
"The biggest bottle neck is testing. You can't fail. If you lose customers' data, it's a go-homer. When you have thousands of customers you are concerned with the amount of traffic that's hitting the website. You want to make sure it works in a high-latency, low-bandwidth environment. There's a lot of emphasis on keeping the pages small and making sure the end user is getting a good experience."
For all the enthusiasm and vendor confidence, there remains some ground to be covered. "Cloud computing is the summit of Everest, and we're not even in Nepal," says Bathwick's Gary Barnett.
"When someone says cloud computing there are a series of questions you need to ask before you know what they are actually talking about," he adds.
That's not to say that the things falling inside the cloud are not good, however. As Barnett sums up: "We are moving to much more automated, better-supported distributed computing with better thinking and better patterns around reliability, availability, scalability, security and so on. It's a really good thing."