I'm at the Salesforce.com conference in San Francisco, called Dreamforce. The slogan made me smile: the future is looking up. Perhaps it is; but up to which cloud? Microsoft Azure, announced with much fanfare last week at the PDC? Google Apps and AppEngine? Amazon's virtual machines on demand? Or Force.com, the Salesforce.com platform being plugged here? Although Salesforce.com is a CRM application, it is also a platform on which you can create other kinds of applications using the Apex programming language.
As you might expect, Microsoft's announcement is the subject of much discussion here at Dreamforce, with the Salesforce.com executives keen to explain why Azure (which CEO Marc Benioff derides as Azoon) is no match for its own cloud offering. Lindsey Armstrong, co-president EMEA, went so far as to say that Microsoft's effort is not actually cloud computing at all. Her reasoning: with Azure you write your own application and host it on Microsoft's servers. The maintenance of that application remains your responsibility. By contrast, the Force.com platform encourages multi-tenant applications.
The point highlights how the cloud computing buzzword is being used and abused by various vendors, to mean whatever they want it to mean. Underneath though, there are interesting issues. There is pretty much consensus in the industry that more data and more applications are heading for the Internet, with benefits including multi-device support, zero-install applications, availability from anywhere, off-loading of server maintenance, and scale-up on demand. There is no consensus though about what that cloud looks like.
It is easy to see the trade-offs here. The more you run your own code, the more control and freedom you have. On the other hand, the more you build on vendor-specific services, such as Amazon's S3 and SimpleDB, or Microsoft's SQL Services, or Google's Big Table database, the less code you have to write, but at the expense of less flexibility and greater tie-in to the cloud platform you are using. At the extreme is something like Salesforce.com where you share the maximum amount of code, but hand over almost all control to the third-party. App running too slow? Yell at Salesforce.com. App offline? Yell at Salesforce.com. Want to move to another cloud provider? Not easy.
To be fair, the cloud providers like Amazon, Google and Salesforce.com realise that their platforms stand or fall on what they deliver in terms of availability, performance and security. Salesforce.com, for example, has a pretty good record of late, though Amazon's is more spotty. Still, even if the platform is 100% robust there are business issues as well. I've talked to a number of Salesforce.com customers here, and while they are generally happy with the platform, I've heard concern about the cost. Once you commit to the platform, there are limits to what you can easily do if you become unhappy with it in future.
Benioff is open about this lock-in - he even used that word at the press Q&A, explaining how making the platform programmable was increasing his hold on his customers. Does that mean you should not use Salesforce.com? Not necessarily; it is not as if lock-in is anything new in our industry; and the platform itself is impressive. Nevertheless, it strikes me as a significant factor. The question "how do I move away" is important in evaluating next-generation computing infrastructures; and some clouds are harder to escape from than others.