By now you’re up to speed with the new features, functions and products that comprise the OpenStack-based Rackspace Cloud and the latest version of Cloud Servers powered by OpenStack. It’s been months of hard work, and we’ve now reached that point where we can say we’re at Cloud 2.0.
By re-OPENing the cloud with OpenStack, Rackspace is changing the way cloud computing is consumed. And behind the scenes, we’ve dramatically altered the course of how the cloud is built. To accommodate this shift, Rackspace itself had to change from a company that integrates technology to a company that builds technology. And we had to re-write the cloud from the ground-up and we took that opportunity to re-invent the way we build services.
Throughout the development process and to build the next generation cloud we relied heavily on three key components: Open Source, Cloud on Cloud and Continuous Delivery. These three ideas have enabled us to make the shift and actualize our vision of Cloud 2.0. Here, I’ll break down how we did it.
Open Source: It has been said that there are two great battles in business today: the battle for customers and the battle for talent. In 2010, we realized that Rackspace couldn’t meet the talent challenges merely by ramping up recruiting and hiring. We knew we had to engage a much bigger community to build the world’s greatest cloud. The obvious way to do that was to commit our entire company to an open source model.
That decision drove our involvement with OpenStack and has become a fundamental operating model for almost everything we do in our engineering teams. We regularly open source Rackspace projects; actively contribute to and drive existing projects like OpenStack; and use open source across our entire business. This change in direction has made us part of a community where we can collaborate with seemingly countless contributors, creating a virtually bottomless pool of talent and resources to help beef up our cloud. While we have given up some of the control around the direction of our technology, the benefits of a richer pool of ideas have far outweighed any downside.
Cloud On Cloud: We’re not just focused on providing cloud services. We’re using them too. We’re running our cloud infrastructure with the same technology that powers the services we’re selling to our customers. We’re eating our own dog food. We actually use OpenStack to run the control systems for our public cloud.
If we need more API nodes or additional scheduling capacity, we spin up more instances in our infrastructure cloud, which we call iNova. When upgrading nodes, we spin up new instances with the updated software and roll those into the load balancer. If things work as expected, the old instances are deleted. If there are issues, rollback is as simple as putting the old instances back in rotation. This blue/green deployment approach is a well known pattern. But, doing it in the cloud means we don’t have to have two sets of physical hardware standing around for the task. iNova is now being adopted across our cloud engineering teams for development, testing and production uses.
Moving our operations from physical hardware to cloud hasn’t been without challenges. We’ve had to rethink how we run some mission critical systems. We’ve realized that some environments aren’t well suited for the cloud. But, figuring these things out helps us get smarter about the cloud. We’re making the cloud better and driving for better hybrid solutions. Ultimately, that reaches the customer. And our insight into our own products enables us to offer Fanatical Support and deliver value that expands beyond just the technology.
Continuous Delivery: While developing our OpenStack-based cloud, we created a Continuous Delivery/Continuous Integration model through which every change to the code goes through automated tests. This Continuous Delivery pipeline lets us make a lot of changes quickly and gives us the ability to rapidly and confidently deploy new features.
The goal was to deploy new code into production daily. That means at any given time we have a version of Nova – the compute aspect of OpenStack – that is deployable and ready for a production environment. Implementing this approach within an open source project with a large community of contributors is at times very challenging. We’ve had to up our game in terms of automated packaging, deployment and testing. We’re working with the community to push more tests and provide more visibility earlier in the development pipeline. We’ve had to narrow our focus to a well defined configuration of the OpenStack components we depend upon.
While the challenges have been significant, the benefits are many. We are finding issues faster by focusing on incremental changes. We can take advantage of the latest innovations within OpenStack very soon after they become available. We are constantly incorporating fixes and performance enhancements. And, we are able to decouple our deployment and release processes in a way that provides more operational flexibility.
I like to think of our release process as bit like flying an airplane. A plane doesn’t set off on one course and look up a few hours later to see if it is in the right spot – only to make a big correction at the end in the event that wind or weather conditions changed. Instead, the plane sets a course, and the pilot (on increasingly the software!) constantly adjusts that course based on the realities of the environment. This results in shortened travel time and guaranteed arrival at the desired destination. With OpenStack and our Continuous Delivery approach, we’re constantly checking that we’re on the right path. We do this with every single code check-in. Much like with the plane, taking this approach improves the predictability and decreases the time to the destination. It makes us faster, more reliable and, most importantly, more agile.
With the launch of Rackspace’s next generation Cloud Servers powered by OpenStack, Rackspace has leveraged an open source model, put OpenStack to use and has created a Continuous Delivery model in which it’s constantly updated. Tying these three components together produced a highly usable, very reliable cloud that is being upgraded with the latest features and capabilities as early and as quickly as possible. It also makes us experts on exactly what our customers are using, giving us the ability to support them that much better.