I’ve been getting a lot of questions about Apache LibCloud and RedHat’s DeltaCloud vs. OpenStack. While all of these projects offer APIs, only OpenStack is based on an implementation.
Having an implementation means that the API is reflected by code that delivers the functionality of the API. This means that the implementation based API more closely reflects the actual workings of the system while the “pure” API must abstract the working of multiple systems. The API only approach ends up having to become a least common deminator instead of a vision of the pure use cases.
LibCloud and DeltaCloud are important and useful. They provide abstractions that help developers write applications without being tied to a specific cloud vendor. While lack of lock-in is a concrete benefit, it comes at a price. The price is that the API shim cannot expose features that differentiate the platforms. This may represent a significant loss of functionality or performance.
When developers implement directly against an implemented API, they can take advantage of the full feature set of their target cloud. They can also test and verify more directly. These are significant benefits that result in richer, more robust and faster to market products.
Both approaches have their place and are needed in the market. If I needed to write against multiple clouds for portability then Libcloud is a slam dunk. If I needed rich features and an ecosystem then OpenStack or Amazon are better choices.
Pingback: Addressing OpenStack API equality: rethinking API via implementation over specification « Rob Hirschfeld's Blog
Pingback: OpenStack: Five Challenges & Conference Observations « Rob Hirschfeld's Blog
Pingback: OpenStack steps toward Interopability with Temptest, RAs & RefStack.org | Rob Hirschfeld