I just finished watching a presentation on Eucalyptus, an open source layer for cloud computing that emulates Amazon’s EC2.
The Eucalyptus team replicated nearly all of EC2. They know this because they pulled down Amazon’s Web Services Description Language (WSDL), which describes the various function calls someone can make to Amazon, and made sure Eucalyptus could do the same thing. It’s not a secret; in fact, you can check it out here.
This raises an interesting point. For a traditional desktop developer, if two interfaces are identical, then writing code to one means it will work on the other just fine. But there are two other things to consider if you’re choosing a cloud platform: Operational reliability, and network effects.
The first one’s pretty basic: Don’t use someone who can’t keep their cloud running.
The second one is less obvious: The value of a cloud service isn’t just what it does; it’s also how many people use it.
For example:
- A friend feed on Facebook is vastly more useful than one on Friendster
- Someone building a CRM application on Salesforce has a lot more contacts and partners to work with than someone using Sugar
- A communications application built atop Webex Connect can automatically invite more people to a meeting than someone using Acrobat.com
In other words, when considering a cloud’s services, we can’t just look at the richness of the APIs it offers. We have to also consider the network effects it enjoys.