What Is OpenStack?
For those of you who have not heard of “OpenStack” or the OpenStack Foundation, you might be wondering what it is.
Wikipedia “currently” defines it as an a free and open-source software platform for cloud computing, mostly deployed
as an infrastructure-as-a-service (IaaS).
While that is true, it is incomplete and unless you know what infrastructure as a service is it’s not very helpful.
Granted the Wikipedia page does actually explain what OpenStack is and what OpenStack does but ill have a go anyway.
OpenStack as software is a collection of composable interrelated projects, primarily written in python, for creating
private and public clouds environments. OpenStack provides an abstraction layer that allows a collection of servers
to be managed as pools of compute, storage and networking services.
Compute, Storage and Networking are the 3 pillars of IT service that make up a standard IT infrastructure.
OpenStack provides a software interface to manage these 3 pillars of IT infrastructure and is, therefore,
an Infrastructure as a service offering.
The main projects that comprise OpenStack’s IaaS offering are what used to be known as the OpenStack core projects.
- Nova: Compute Project
- Neutron: Networking Project
- keystone: Autentication Project
- Glance: Images as a service Project
- Cinder: Block Storeage Project
- swift: Object Storage Project
But if there is a Core then are there more non-core projects? For OpenStack that is a resounding YES!!!
in fact since the creation of the big tent and arguably before, the compendium of OpenStack
and OpenStack related projects has been
expanding beyond IaaS to Orchestration, Platform as a service, advanced services such as container orchestration
and support services such as workflow engines, database as a service, backup as a service and
many other micro-services that can be composed to build your own OpenStack-powered application.
How mature are all these projects?
With all these core and non-core project to choose for do I need them all? How mature are they really?
Are they all ready to use in my production application?
Well, the answer to the first question is simple, OpenStack is a composition of micro-services that
work together to provide a could of your own design. if you don’t need object storage then you
can deploy without swift, already have ceph deployed? No problem you can have cinder, nova and glance
can use that as your storage backend. Do you want DNS as a service but not orchestration?
You can deploy designate but leave heat out of your cloud deployment.
The second question of how mature these projects are is a little harder to answer. The OpenStack Core
projects have matured over many releases to be stable and production ready, the advanced services
are at a differing level of maturity but luckily the OpenStack foundation has been developing a tool
to help you make up your own mind.