Introduction to OpenStack (part1)
Although OpenStack is not a new topic nowadays, there are still not many articles talking about it. Most of definition articles found on Internet are technically quite complex with many terms and design strategies. This post is converted from my presentation in university. In my presentation, I tried to illustrate OpenStack definition, design, and why we need it in a funny, straightforward way.
The official site defines the OpenStack as
So what is OpenStack really? It's a story of scalability in which OpenStack is a solution for a flexible and cheap infrastructure management.
In term of infrastructure, the most common approach of deploying a web service is to buy a machine, configure and push the code to it.
Waaoo, this works fine and everyone is happy. At least before they see what's coming next.
As the application grows up, along with more customers, more accesses, and more "income"..., the computing resources required also increases. Once machines are added, the amount of time spent in configuration and management surges as well.
And one day...
And anyone think about wasting? An common application rarely consumes the whole machine's resources. So what we do with the rest? An other "the rest" from other machines!
Hypervisor still has some problems:
Getting benefit from hypervisors and provision tools, a virtual machine simply collects resources (computing power, storage, network) from the pool which is easy to scale at anytime.Provides “images” service which help to set up an instance in minutes.
OpenStack has a huge community from which you can get benefit. It means that you can build your own system and get support from the crowd. OpenStack is an open source project which means that you can check and modify the core as well as the management tool which are written in Python.
As I mentioned above, OpenStack provides an Amazon-like features except the privacy. Because you setup your own system, you have fully privacy on it, then say goodbye to NSA (yet they always have their ways , I guarantee).
Last but not least, OpenStack is FREE, huray. Now we can have "cloud" for every one.
It's awesome right? If you feel it is then the next part of this introduction will discuss more about which components there are in OpenStack, as well as their capabilities. Every comments and feedbacks are welcomed.
"OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface."RackSpace, the cooperator with Nasa in writing the first versions of OpenStack, also has an introduction video about OpenStack features and benefits.
A story of scalability
"Once upon a time..."
"Hypervisor - the wrapper"
In order to solve the physical scale problem, some clever developers apply a technology called "Hypervisor". It is to use virtual machines such as Vmware, KVM, XenAPI etc... to create many virtual environments from a certain of computing resource. By that way, the environments can be scaled dynamically without acknowledging the hardwares beneath. Those virtual machines are easy to add more processing power (by configuring the virtual machine) and to provision all required configurations using some tools such as puppet, chef etc...
- Hard to manage the virtual environments when the number increases. In term of management, it's just similar to working with real devices.
- When the number of computing resources (servers, hardware devices) raises, it's hard to monitor the total amount of resources, individual machine's resource, due to lacking of overview of resources.
"Let's pool them"
The idea is to put all resources (computing power, storage, network) in a pool. From the pool, it provides a single interface in order to monitor everything.
"Shield for the warrior"
OpenStack provides a users-based authentication to the whole system as well as the machines themselves. Administrator can create, add, users to projects and manage them via a central tool. The users are also managed by role-based system. Each role gives them specific accesses and controls to the system or a virtual machine.
"Castle of the Kingdom"
OpenStack provides a central management to analyze the resource and easily control everything. It's the only place administrators or users need to care about and consists of all-in-one tool to add, remove, modify resources, projects, users etc... OpenStack also provides a dashboard for common users to manage their machine. If you are a developer and you want to build your own management tool (e.g RightScale...) or just simply interact directly with the tool, OpenStack API is ready for you.
What is OpenStack?
So what is OpenStack again? The best comparison could be Amazon AWS and Microsoft Azure. They are IaaS and they allow building infrastructure flexibly and easy to scale. It puts all resources in a pool and allows we extract from that to build machines. When a machine (application) needs more resources, it can easily extend without machine reconfigurations needed. The amount of resources in the pool is also able to be extended via the management center. So if you have so many resources or projects to manage, and they are very likely to scale significantly in the future, OpenStack is on your side.