OpenStack: Starting at the Beginning
[Editor's Note: Here at Mirantis we're used to dealing with cloud, and OpenStack, as a foregone conclusion, but sometimes you have to step back and take a good look at whether you're ready. We asked Cloud Computing Strategist John Rhoton, author of OpenStack Cloud Computing: Architecture Guide, to talk with us on the subject in a webinar on March 6, 2014, and to provide us a little wisdom here in the blog.]
In my newest book (OpenStack Cloud Computing: Architecture Guide), I explore what it takes to build a comprehensive architecture based on OpenStack. OpenStack holds enormous potential for simplifying and standardizing both public clouds and enterprise private clouds. But you need to make sure you know what is involved before starting off a giant project that you cannot control.
Some of the steps you need to take include:
Analyze - Any analysis begins with a systematic assessment. You need to make sure everyone in the planning process has a common understanding of cloud computing and its delivery layers (SaaS, PaaS, IaaS) as well as common delivery models (private, public).
Assess – Before implementing OpenStack, it is worthwhile to look at the alternatives. There are many commercial offerings for each type of cloud from IaaS to SaaS. The choice of OpenStack depends to a large extent on the value proposition of an open-source infrastructure service that caters to both private and public service providers. But there are also other open-source frameworks that are almost directly comparable, so the selection process should also consider them.
Initiate – The first step in getting started is to construct a prototype of how the system should work. This means getting the system working in a pilot scenario with a minimum set of standard components. But you also need to make sure that you will eventually be able to address your requirements and integrate with your legacy environment. You might need more complex topologies or you may need to create linkages to additional components or ecosystems.
Assemble – The design of an OpenStack-based solution begins with core the OpenStack services, such as Compute, Networking and Storage and evolves to include some of the optional services as they are needed. While it is possible to replace the individual modules, it is generally a good idea to start with the base solution and see to what extent it meets the business requirements.
Deploy – After the initial design and implementation work is complete, you may have demonstrated the feasibility of the technology but that is a far cry from ensuring it will work in production, particularly for highly scalable workloads. The first task is to roll out the OpenStack software itself onto the bare machines in the data center. The second is to design the orchestration of the workloads so that they are able to launch easily and automatically.
Operate – Once deployed, the administration chores begin. On the one hand, there are proactive tasks to set policies, re-allocate resources and tailor the configuration of standard services based on user needs. On the other hand, it is also important to detect any unforeseen events. We must also keep an eye on trends in order to detect and resolve issues as they occur and to project where future problems may arise in order to prevent them.
Account – Financial governance is a top concern of almost every business. It relies on ensuring visibility of what activities generate expenses and what trends these cost drivers are projecting. Whether the charges are invoiced to external parties, cross-charged to internal departments or merely reported to show value to the business, the numbers are critical in sustaining a compelling business case.
Secure – OpenStack itself is neither particularly secure nor insecure. Security is a discipline that requires systematic application. This means the first task of a risk analysis is simply to make sure all the components are implemented securely. In addition to verifying that the configuration adheres to best practices, it is important to be vigilant of any newly found exploits and supplement the bare infrastructure with further layers of security. Other than the base infrastructure, a key component of the overall security model is identity and access management and the enforcement of consistent policies governing user activity.
Empower – One intent of cloud computing is to create an environment that maximizes the benefit of economy of scale. At some point, it may reach a size where failures are inevitable. The most effective solutions will not attempt to prevent them at any cost but rather ensure that the infrastructure and applications are able to withstand these through their high level of redundancy and automated self-healing. A parallelized architecture also enables auto-scaling which reduces the human effort required when load changes. Finally, autonomous operation requires reducing dependencies on other vendors or technologies and products.
Extend – Getting the software deployed and working efficiently in production is not the end of the journey. Technology and markets are in constant evolution making it necessary to perpetually adapt. But beyond these externally imposed changes, it is always possible to improve business value by building and extending the infrastructure. Moving up the cloud stack into platforms will drive increased efficiencies for new workloads. Analytics allows IT to generate more business value. And any improvements in the underlying software will help to support new business initiatives and give additional impetus to the community that is building it.
To be clear, these steps are not OpenStack-specific. You need to follow the same procedure no matter what cloud solution you want to build. The application of this process to OpenStack is, of course, very specific. It isn’t trivial, as no disruptive change is, but – with the right competence and diligence – it is possible to build a very solid cloud based on the technology.