Here we go again. Cloud computing is the newest area for the age-old pattern we've seen throughout the history of information technology. The pattern goes like this:
- A new idea emerges. Sometimes this is merely the rejuvenation of an older concept using new technology.
- At first a single supplier offers a useful implementation of this concept and starts to see success selling their product.
- Other suppliers jump in with their own approach to implement that concept. The approaches are often are incompatible with one another so a customer selecting one was locked into that vendor's offering.
- Camps form around the most successful implementations. These may be called partnerships, alliances, trade groups, etc.
- Customers find that each group has developed worthwhile features and want to build solutions that mix and match technology from different groups. When they face difficulties, they scream for standards.
- The vendors, making a show of listening to their customers, engage in efforts to create standards without also giving up account control in their own customer base.
- Early versions of the standard either are too complex to implement or leave thorny issues for later efforts and, thus, are useful in only certain circumstances.
- The industry moves on and does its best. Eventually interoperability is hammered out again.
This process has repeated time and again. We've seen battles over items such as:
- Processor architecture
- Memory design
- Network media, protocols and interconnects
- Storage media, data storage structures, protocols and interconnects
- Operating systems, APIs
- Programming languages
- Application frameworks
- Database architectures, scripting languages, approaches to handling events
- File structures for items such as documents, presentations, spreadsheets, graphic images, databases
- Virtual machine software architectures and on-disk formats
- Management architectures
- Approaches to security
- and now cloud computing architectures, tools and services
We're seeing factions build up behind the approaches offered by Amazon, CloudStack, Eucalyptus, OpenStack, VMware and several others. Customers that select one approach are likely to find that interoperability between and among these different approaches will take careful planning and execution.
It would be wise to start out with a clear idea of what needs to be accomplished before plunging headlong into an implementation effort. This way, it would be far easier to chose the approach that best fits this set of requirements. Thoughts of interoperability should be part of this careful design.