IT costs make up a significant part of corporate budgets and, as a result, companies of all kinds are interested in cutting it down. It is expected that IT is becoming more effective at a lower cost. At the same time with the development of business companies are facing the lack of IT resources. In such case cloud technologies come in handy because they make IT infrastructure management easier. OpenStack is one of the most popular cloud solutions for such cloud environment as Infrastructure as a Service (IaaS).
Software developers are showing interest to OpenStack because it has got open API, source code, flexible architecture and large commercial ecosystem, offering a new paradigm for software development and deployment.
Part 1
What is OpenStack?
OpenStack is a kind of software that implements the functions of a cloud platform. It allows you to manage pools of various resources such as IaaS.
OpenStack implements the concept of software-defined data center which provides simple and unified access to different computing resources, data networks, storage systems, as well as additional services such as:
- Load Balancer as a Service
- Firewall as a Service, Security Groups
- Object data storage, compatible with Amazon S3
Access to the resources provided by the platform is granted by the self-service portal. Users of the platforms are allowed to create virtual networks, routers, disk drives in just a few clicks and OpenStack platform will independently implement these changes at a low level, enabling integration with various network equipment and storage systems. When the network is configured users get are allowed to create virtual servers from pre-defined disk images of virtual servers. Most of the user operation is intuitively simple and does not require specific knowledge of low-level technologies.
OpenStack interacts with the core infrastructure through public or vendor’s drivers which saves customers from a trap of particular technology, vendor or tool.
OpenStack provides additional services, such as identity management, orchestration, keeping record of resources consumed on the same program basis through the open API. OpenStack also provides the ground for the evolution to DevOps, continuous integration and continuous deployment methodology.
OpenStack is not a hypervisor but it supports multiple hypervisors through an abstraction layer including such popular hypervisors as: KVM, Xen, QEMU, Hyper-V, available with VMware vSphere (ESXi in its pure form is not supported).
Why choose OpenStack?
OpenStack reduces the time of the launch and the introduction of various applications to the market.
A great community
Around itself OpenStack formed a huge ecosystem, which involves a large number of developers from more than 500 IT industry leaders around the world. There are a large number of vendor-specific modules for OpenStack, solving certain problems. A lot of companies prefer OpenStack because it has been actively developing.
What is the difference between OpenStack and traditional IT infrastructure?
In order to understand the difference between traditional and OpenStack cloud technologies it is necessary to determine the difference in the philosophy of their design.
First, let us consider such traditional infrastructure as VMware vSphere platform (or its analogues Red Hat Enterprise Virtualization, Hyper-V). These technologies help to consolidate servers of any size, but still more focused on hosting of a small amount (compared to a cloud) of sufficiently large VM.
The solution works well, because the majority of application servers typically have a monolithic architecture, such as Oracle or Microsoft Exchange. Each instance of this type is still limited in growth by one virtual server ran by a hypervisor.
To ensure the reliability of these inherited systems it is recommended to run application servers on VM in so-called clusters / domains, using the functions of enhancing infrastructure resiliency (eg. VMware High Availability vSphere and VMware vSphere vMotion). These solutions may work under certain conditions, such as the shared storage, network bandwidth, which poses obstacles on the way to subsequent scaling. Generally, all classic virtualization platforms provide well-tested means of high availability for virtual servers, which increase application availability at the level of infrastructure, requiring no changes to the application.
Implementation of high availability in VMware vSphere with the usage of vMotion and HA.
Cloud platforms like the OpenStack are designed for use with another class of applications such as Apache Cassandra, MongoDB, and the Hadoop, which are designed for scale-out and these applications are resistant to virtual machines failures. Resources can be expanded by adding more applications on the single-type virtual servers with load balancing. These distributed applications provide their own fault tolerance at the application level, regardless of the underlying infrastructure and advanced features of hypervisors.
High availability of an application can be provided by the OpenStack infrastructure. In order to minimize the hardware costs the failure processing is done at the application level. In contrast, high availability on infrastructure layer may require excessive computing power, storage capacity and network bandwidth, third-party software modifications by a user.
By moving applications resiliency up the stack, cloud platforms eliminate the use of specialized equipment (expensive storage, specialized server etc). Standardized equipment is considered as an option to run a cloud platform architecture that enables rapid scaling infrastructure.
An example of the implementation of high-availability data in the object store of OpenStack Swift
This architecture is best suited for the next generation of highly scalable applications where failure is expected and compensated by a large number of instances of the application.