A word about OpenStack for business people, CIO’s and cloud consumers.
Ask anyone in the IT industry today what they think OpenStack is, and you will probably get a long list of technical jargon describing the components of OpenStack, an explanation that it is a cloud platform, or you may just as well perhaps get someone that tells you it is a community driven project or some other equally complex explanation that doesn’t actually quite answer the question.
At its most fundamental, OpenStack is a common API abstraction layer for infrastructure. But what does that actually mean, and why should you care?
What it means is that OpenStack is essentially a way of enabling developers to address datacenter infrastructure through a standard set of instructions, regardless of what that actual infrastructure is. The advantages of this for developers and infrastructure providers is manyfold:
- It reduces development time by removing the need to perform custom integrations for every type of hardware out there.
- It enables infrastructure providers to swap out components with less need to worry about compatibility issues.
- It enables applications to be portable across different datacenters.
- It reduces the need for developers to have deep a understanding of the infrastructure
But “standard” only takes you so far. It’s important to know when you need to go the extra mile.
OpenStack is made up of a number of largely independent but related projects, each of which provides the abstraction layer for a particular area of infrastructure. For example, Nova for compute (mostly focused on virtualization), Neutron for networking, Cinder for volume storage and Keystone for authentication are but a few of the available projects related to the community.
OpenStack Project high level abstraction diagram
In general each project is made up of three layers, The API layer, the driver Layer, and the implementation layer.
The API layer: This is just what it says it is: a software application that provides a clear API interface that describes a way of interacting, and what the expected result should be.
The driver layer: You can consider the driver layer to be a translator that takes the API instruction set and converts it into the appropriate commands for the base infrastructure.
Implementation: this is the actual infrastructure that provides the resources that are consumed by the applications. It is also where the confusion starts.
Each project typically provides a reference implementation that provides guidance on how to setup the infrastructure to make it consumable through the API and Driver layers.
But these reference implementations come with varying degrees of maturity and completeness.
The problem arises because many implementors are taking the provided reference infrastructure implementations and treating them as if they are fully baked, production-ready solutions that work straight out of the box.
This has lead to many failed or flaky implementations of OpenStack-based clouds that are painting OpenStack in a bad light.
The fundamental point here is that the implementation layer needs careful design and testing, just like any other complex IT solution, and is no less important than the API layer.
While the advantages of OpenStack to the traditional IT environment are primarily focused on the way infrastructure is consumed, it does have an impact on other areas.
- It provides for convergence of IT infrastructure reducing sprawl and increasing the understanding that interrelated components have on each other.
- It drives organizational change in management a development processes
- It provides an open interface supporting the move away from vendor lock-in
- It enables the rapid development and testing of new infrastructure ideas
But none of these benefits can be achieved without careful design and deployment of the base implementation layer that underpins the benefits of OpenStack.
In conclusion, OpenStack is a collection of community-driven projects that provide an effective abstraction layer to simplify the consumption of datacenter infrastructure, but it does not alleviate need to design the datacenter infrastructure properly. The implementation of OpenStack takes careful planning and a clear understanding of why it is being deployed, and why it is being deployed in a particular way. We need to focus on what the consumers of the resources provided by the datacenter need, and help simplify their consumption of said resources by ensuring that we’re not taking the easy way out.