You can’t do anything with software at the moment, Open Source or otherwise, without the word “cloud” being thrown about. If you’re looking at options for software you might want to use, it can be hard to see through the hype of this term, and understand what product you’re actually talking about. This article is going to look at one area of the “cloud” ecosystem and the relevance to Open Source Software.
You might hear someone speak about “cloud servers” or “servers in the cloud”. What’s probably being spoken about here is a product called Infrastructure-as-a-Service (IaaS).
Traditionally, if you wanted a server, you had the option of buying or renting physical machines and either hosting them in house, or in a data centre through a co-location service. More recently, we’ve seen these physical machines replaced with virtual machines, allowing several server systems to be run on the same piece of hardware. Again, these can be hosted internally or externally.
IaaS takes this to the next level, abstracting away the underlying hardware from the customer. An IaaS service is typically housed in a large data centre, where servers’ resources are pooled into a cluster. Virtual servers can then be provisioned on-demand, with underlying software taking care of which hardware is actually doing the work.
This model provides excellent flexibility and scalability, as new virtual servers can be provisioned and resources allocated to meet the demands of the services they are running. It also holds the potential for cost saving – different types of customers will have different peaks in demand, which can be balanced across the shared infrastructure. This can lower the overall computing capacity required, in turn lowering costs.
Set-ups like this are one of the reasons we use the term “cloud” – the blurring of division between pieces of hardware to make one ubiquitous “blob” of computing resource.
The best known example of IaaS is without a doubt Amazon’s Elastic Computing Cloud, or EC2. Amazon owns several data centres across the globe. When renting a server from EC2, you simply specify the resources you require and the location. The system takes care of the rest and presents you with a remote login to your server. EC2 is used by sites like Reddit and Foursquare to give them the ability to scale in line with demand.
Of Course EC2 isn’t the only player in the space. There are 2 high-profile examples of Open Source platforms that can be used to provide IaaS: OpenStack and CloudStack. OpenStack is produced by the OpenStack Foundation, originally founded by NASA and RackSpace but now comprising a sector-spanning group of technology companies. Several companies in the Foundation run public cloud services on the OpenStack platform, in competition with EC2. CloudStack was originally developed by Cloud.com, who were bought out by desktop vitrtualisation giant Citrix. Citrix subsequently open sourced the CloudStack system through the Apache Foundation. CloudStack is used by big name brands such as BT and GoDaddy, as well as some smaller ones.
If your infrastructure is being provided as a service, it might not be immediately apparent why it matters if the underlying technology is Open Source. Your primary concern is likely to be what software you’re running on the servers that you’re renting. However, it certainly warrants some consideration.
The first aspect to look at is the choice it affords you. If you want a solution running on OpenStack, there’s numerous companies for you to choose from, while knowing you’re getting the same product backed by the same group of vendors. These companies will still want to compete between themselves, be it on price, the types of server they offer, or the management tools they provide. Also, as the underlying system is the same across vendors, you avoid lock-in.
Another factor that shouldn’t be overlooked is that you don’t have to use OpenStack or CloudStack as a service from someone else. If you’ve got a datacenter in your organisation, you can run your own, private IaaS system. This isn’t for everyone, and does rather muddy the “as-a-Service” term, but you can still think of it as a service provided internally. Rather than having to provision VMs in response to individual requests, running a private IaaS system would allow users to scale solutions to meet their needs at any given time.
Private IaaS systems can have a disadvantage: systems running on a private cloud are likely to have similar peaks in demand, reducing the potential for cost savings.
This isn’t the end of the cloud story. There’s other “as-a-Service” products that are marketed under the “cloud” banner, and there’s Open Source to be found in all of them. We’ll be looking at them in future articles.