Now that CIMI has been released as an official DMTF specification, it's time for implementations to start being finalized. Wearing my CloudStack "hat", I've been thinking about how to best integrate CIMI into that project. In the press release from DMTF, Sheng Liang says that the Citrix development team will be proposing the inclusion of CIMI into CloudStack itself:
"...Citrix is pleased to see the Cloud Infrastructure Management Interface (CIMI) standard published and will propose inclusion of the CIMI implementation into Apache CloudStack project and Citrix CloudPlatform," said Sheng Liang, CTO Cloud Platforms Group at Citrix.
There is certainly precidence already set within CloudStack for multiple API implementations, specifically the dual support for both the native CloudStack API and the EC2/S3/VPC APIs. But is this the right choice for CloudStack? The integrated approach would ensure a unified security model, similified deployment and configuration, as well as a single Apache project community to support the stack. Potential downsides to this approach are that it could potentially distract the CloudStack project from focusing on key features and infrastructure integration work.
As an alternative solution, the CloudStack project may consider looking to another Apache project, Apache Deltacloud, to act as an API facad layer for CloudStack deployments (a general pattern that I wrote about back in April). I've already proposed building a CloudStack driver within Deltacloud (and have a very early shell started). This would allow deployments to use both Apache projects to create choice for users in their prefered API, through the support of CloudStack, EC2/S3/VPC, Deltacloud, CIMI, and potentially others...
Regardless of which path the CloudStack project chooses to take, I firmly believe that supporting CIMI for CloudStack deployments is an important goal. We remain a long way from the industry truly coalescing around a single IaaS API, but steps like the development of CIMI (and it's adoption) are critical to moving IaaS APIs out of the world of proprietary interface design and into an open environment that fosters collaboration between different industry players.
Which way do you think is the right way?