I’ve made a few comments about OpenStack on my blog and I wanted to clarify what I feel OpenStack is and is not. According to the OpenStack Consortium, OpenStack is a Cloud OS. First we need to define a Cloud OS. When you look at NIST definitions of Cloud computing terms, Cloud OS doesn’t show up. From what I can tell this is just a branding by the OpenStack community. The closest thing that it can be compared to is a Cloud Manager. I wrote an earlier post on Cloud Manager’s here. But if you think about the traditional components of an OS, OpenStack kind of fits the definition. A traditional OS will control disk, compute (cpu & memory) and networking associated with a system. The OS would provide an interface and API to the computing resources. Programs could then be written to take advantage of these resources. And as in any good OS there will be an interface. OpenStack is by this definition a Cloud OS which in my book is the same as a Cloud Manager missing some feature such as business intelligence such as resource management based on definable accounting rules.
So, I get dinged a lot on this blog from people thinking I’m confusing OpenStack with Cloud Orchestration & Management tools such as Abiquo. Some of the more advanced Cloud management tools allow you to manage Cloud resources from multiple Cloud providers. An ideal setup is that you can write your application to your Cloud Manager’s API and deploy it across multiple Cloud providers. That management layer would control communicating with the Cloud provider for spinning resources up and down. This is where I normally get in trouble in saying Openstack should help to remove the Cloud Management layer for multi-provider support. Some of the contributors on both this blog and twitter are quick to point out that this isn’t the role of OpenStack. It’s a Cloud OS and not Cloud Orchestration (management).
This is where I disagree. People utilize Cloud Management solutions for this very reason, to deploy an application across multiple Cloud providers using a single API. Cloud management also adds the layer of orchestration that OpenStack doesn’t provide. However, many organizations are writing this layer themselves. An example is Netflix. Netflix writes their own management solution for their AWS instances. A matter of fact they have open sourced a large component of it.
So, my argument has always been that if OpenStack is a Cloud OS wouldn’t you expect the same level of services in a Cloud OS as you would a server OS. There isn’t a modern enterprise OS that doesn’t provide clustering services. OpenStack is advertised as a Cloud OS. Being an OS, I should be able to leverage an equivalent service within OpenStack to cluster an application across multiple Cloud providers giving similar system resources. Just like any immature OS, there can be third party clustering solutions in place until the OS adds the clustering feature natively.
I’m happy to hear thoughts and feedback. Maybe I have what OpenStack is completely sideways. Maybe it’s not an OS in the since that we define an operating system.