Apple made news after sources said there was a shift from the plan for electric cars this month. Executives confirmed hundreds would be cut…
Moving to “the Cloud” is all the buzz nowadays. I personally hate the terminology, and while it may seem a pretty novel concept to some, the principles behind “cloud” computing are pretty old-hat. The idea is fairly simple, instead of hosting all of your own data and applications locally, you take advantage of the internet to handle everything.
If you’re using a webmail service, you’re already doing cloud computing. The real technical genius behind it all is that the provisioning of services and access should be fairly instantaneous, and to do that most businesses that want to provide Software as a Service (SaaS) rely on virtualisation.
So if you’re thinking of getting in on the action, you need some way to quickly virtualise your platform and scale up fast to meet your user’s needs.
Recently, I came across OpenStack, an open-source project that provides the software to quickly provision and manage large networks of virtual machines, creating a redundant and scalable cloud computing platform. As I spend a lot of time working in the virtualisation industry, and am a keen fan of most open-source initiatives, I am always really excited when I see a good project taking off.
OpenStack is interesting in that although it is completely open-source and you can download the software for free, it was launched a year ago by Rackspace and NASA and has since gained backing from Citrix, Dell, AMD, Intel, Microsoft, Canonical, and Cisco. So, there are some heavy commercial vendors who are also excited about the project and are willing to give it some love.
So what does the software do that makes it so appealing?
OpenStack actually provides three different components that are designed to work together easily, but that can be used independently of one another.
The first, and most obvious component is “OpenStack Compute”. This component allows you to quickly load virtual disk images into virtual machines that can be accessed instantly from the internet. Although nothing particularly new, the web-based Control Panel interface makes it incredibly easy for you to provision and boot a virtual machine in a couple of minutes. Using OpenStack Compute you can quickly build a completely virtualised networked environment consisting of multiple interconnected virtual servers each performing their own functions. This gives you a lot of scope to handle redundancy issues and to scale an environment to meet demand.
The second component is called “OpenStack Storage” which is used to allow you create redundant, scalable object storage using clusters of standardised servers to store large amounts of data. This component is like RAID on steroids. You can write objects to multiple hardware devices at once and rely on OpenStack to handle data replication and integrity across your storage cluster. If a node within the cluster fails, OpenStack automatically handles your failover for you, so you can just add a new node into the cluster and leave OpenStack to do the work.
Finally, ‘OpenStack Image Service’ provides a mechanism to discover, register and stream virtual disk images. This makes it a snap to add a new image to your OpenStack environment and to make it available for use. Its wide support for different disk image formats is encouraging as well, so that you can quickly add images from VirtualBox, VMWare, and KVM/QEMU.
The OpenStack Control Panel Overview video gives you a quick introduction to the OpenStack Compute component and shows you how quickly you can provision a virtual machine. If you have virtual machines that are already running, you can automatically add disk volumes to them within seconds, giving you incredible flexibility in how to handle disk space requirements and your partitioning. This is pretty fantastic stuff.
I am currently working on a project where we will need to provide a platform on which we can run a number of different logically independent server components to provision virtual desktops to end users over the internet. OpenStack will give us all of the flexibility that we need to build our infrastructure and will also allow us to scale easily as our userbase increases.
OpenStack is largely written in Python, making the code relatively high-level and quite easy to follow. The code comes with a fully documented API that allows you to interface with the different components using either JSON or XML messaging formats. This is also very important for the project to grow to maturity. While having the code available for review, it generally doesn’t make a lot of sense to start tinkering with core components unless you’re already involved with the development team.
That said, having a full-blown API that allows you to interact with the core, gives developers the opportunity to write their own tools and services around the existing platform. Hopefully this will mean that a whole ecosystem of tools and services will start to appear around the core project, making it even easier to work with any OpenStack environment.
With major players in the computing industry giving OpenStack their vote of confidence, it really seems like the way to go if you want to build your own cloud computing infrastructure. The best part about it is that the software is designed to run on nearly any hardware, which means that you can take cheap whitebox systems and scale up to provide an enterprise-level service at reasonably low cost.
While OpenStack is not the type of software that the average business might deploy, largely because requirements would tend to indicate that you’re already dealing with some pretty big hosting infrastructure, it does mean that service providers who choose to take the OpenStack route will be able to present end-customers with an open and standardised cloud platform that will make migration easier and that will ultimately provide a wide range of tools and services that work within the platform.