The cloud evolution
I love how the IT industry can jump on the bandwagon. As soon as a new catch phrased is coined and shown to be a billion dollar market, you get new players, current players, corporates, specialists, contractors etc. etc. using the new “word” in everything. The marketing departments have a new moving target and do their best to show the whole world that they are indeed the leaders and the actual solution to meet the expectations of the market. The catch phrase today is cloud computing, and although it is not new, the marketing and vendor buy-in into cloud computing only started now.
Everybody it seems is offering cloud services these days, or will very soon. And it does not matter what the service is, it is coined as cloud services, and the marketing departments are in full selling mode, convincing everyone that their solution is the actual cloud solution. It doesn’t matter whether this solution is a backup service, email, calendaring or even social plug-in, it is touted as a cloud service.
So to avoid confusion, I’m putting out what cloud services actually is. If I’m wrong, then this is what cloud services actually should be, because this article shows how we got to where we are now. I’m giving an evolution of IT over time, not necessarily accurate and not covering everything, my diagrams might be wrong from a technical point of view, but the are there to show what specific architectures tried to achieve. They will also show that even though some services are sold as cloud services, they are part of or can be used in a cloud implementation, not that it is a cloud implementation.
Day 0: The Mainframe
In the beginning there was the mainframe. Mainframes provided a single environment which hosted the entire application that run an organisation. The mainframe was a propriety system with one vendor lock in, it was static and fairly unyielding when it came to changes.
The mainframe was a good setup and solid technology, but it was slow. It was the only system needed to run an organisation. Mainframes were expensive to run, not just in money terms, but also in CPU cycles and memory costs. It was not a high availability system, and when the mainframe went down the whole business was affected.
There are still mainframes out there today, but very few in comparrison to a couple of decades ago.They still run some critical business applications, but are mainly used to access historical user data.
Day 1: Client / Server
Then came client/server, and this is still one of the biggest changes we had in IT. It moved us away from one powerful machine to a number of servers doing the work. It enabled PC’s to connect to these servers and introduced us to color in the work environment.
Many new companies were launched and software specialization started. Organisations didn’t have one program to run business operations anymore, they had a number of these applications, and each application was a specialized product in its specific area.
There was no resource sharing in this environment though, with each application running on its own server, with its own propriety database and fileserver.
The advantage was that the business was shielded from a complete outage. If a server went down, only the application on the server was affected, which decreased the impact on the organisation.
There are many organisations today, especially small businesses, which still use this setup as it is still one of the cheapest options available.
Day 2: Distributed Environment
The client/server technology evolved to a shared resources environment. An example of this would be where an application use a database from a different vendor hosted on a different server.
This made the management of the environment easier, as there were fewer disparate technologies employed in the organisation. Software development got cheaper and better and more specialised.
Although this was a better setup to run, it was also more problematic, when a server went down, it did not just affect the application that used it, it also affected all the applications that were dependent on it.
Most small and medium enterprises today still use this setup.
Day 3: Clusters
Along came the clusters. To provide better stability, mission critical applications were run on more than one server. The servers worked together to provide more processing power and better performance. It also had a better disaster recovery, as the system could continue if one of the servers failed.
This is an expensive setup, and there tend to be a lot of idle time on servers. Under utilization of servers is one of the biggest issues in this setup.
Big corporates loved this setup though, as the setup is more robust and limits down time.
Day 4: Virtulization
Then there was virtualization. Computer processing started to outstrip the demands the applications placed on them, and most servers ran on a very low utilisation percentage.
Many applications can’t share the same server, as they need specific resources, and applications tend to clash with one another.
Virtualization is the solution, the ability to run one or more virtual servers on one physical server. This enabled more than one application on a server, with the appropriate security and isolation from other applications.
Virtualisation leads to better server utilisation, lower cost of ownership and a better return on investment on the tin. This saving is offset however to a higher risk, when a server goes down in this environment, there are more than one application that goes down.
Virtualisation can also not be used to replace all servers. Scalability is still a problem, where the scaling of a virtual server is limited by the resources available on the physical server.
Many organisations are still working towards virtualisation.
Day 5: The cloud
And then we had the cloud! In its most basic definition, the cloud provides a virtual hardware platform for the virtual servers to run on. This means that the physical servers run as one server, and the resources of a virtual server is not limited to that of one server.
This provides the best availability solution to an organisation, when one server goes down, the environment is still operational. And because the virtual servers are not bound to one physical server, at worst it will lose some data and processes, but nothing that will be critical to the organisation.
But to just have the infrastructure setup as one environment on its own is not cloud computing, that is super computing. Applications must be virtualized in their own virtual sessions to provide a full cloud experience.
One of the biggest indicators to evaluate a cloud solution is scalability. If a solution can not scale quickly and dynamically, it is not really a cloud solution, but one of the previous evolution steps rebranded as a cloud solution.
The cloud stack
Part of what is making cloud computing so confusing, is the different segments that is said to be cloud computing. On the right is a visual presentation of these different segments. Starting from the bottom, here are the definitions of each layer.
IaaS: this provides you with the virtual infrastructure, it is up to you to add the virtual sessions onto this layer.
PaaS: this provides you with the virtual sessions (virtual servers) and you can install the software you want to use on these sessions.
SaaS: probably the most active part of the cloud initiative. At this level the software is hosted in a virtual session.
BPaaS: this part of cloud is more linked to outsourcing and it seems that the guys in India are working hard on this one. The consumer will be separated from the software and work will happen offsite. As example: a claims process in a medical aid company, the claims are received by the company, they are put in the hosted business process, and someone in another company evaluates the claims and return the results to the company. It is a simplistic example, but that is what BPaaS is all about, at this stage anyway.
Private vs. Public clouds
The difference between private and public clouds is that the private cloud is accessible only by one company, the public cloud by more than one. It is not necessary for a public cloud to be accessible through the Internet, it just makes it cheaper and easier.
The important thing for organisations that want to implement their own private cloud to remember is: you don’t need more tin! If you already have two or more servers that are not too old, you don’t need to buy new equipment to setup your own cloud infrastructure. Solutions like Beowulf (http://www.beowulf.org) can provide you with the hardware virtualization that is needed, and then you just need to virtualize your applications.
Popular cloud solutions
Amazon EC2 (http://aws.amazon.com/ec2/): this I think is a complete cloud solution, there are not a lot of details available as to the hardware infrastructure, but with the type of scalability they promise this should be a full cloud implementation. Amazon provides SaaS and PaaS (Amazon Machine Image) options.
Google Apps (http://www.google.com/apps/): Google provides a number of options, and they are all at the SaaS level. As far as I could see this is also a full cloud stack. You can build your own application on top of Google Apps, but the basics are already there for you to build on.
Apple iCloud (http://www.apple.com/icloud/): I’m not sure whether this is a cloud solution, apart from the name. As far as I could see it’s an online storage mechanism, there is not much in their marketing and technical details to convince me this is indeed a cloud solution.
Windows Azure (http://www.microsoft.com/windowsazure/): this is definitely at the PaaS level, although I’m not sure whether it is a virtualization option or a cloud option, could not find anything on their infrastructure and how that is setup. I also could not find anything on scalability, so odds are this might just be a virtualization solution. The other thing is that you are limited to what type of virtual session you can use, which means that the virtualization option is tied to the underlying operating system more than it should be.
DropBox (http://www.dropbox.com): this is not a cloud service, it is an online backup system. For me it falls in the same category as the iCloud, or rather, iCloud falls in the same category as DropBox.
To conclude this article just this, the cloud is not one technology, it’s a combination of a number of technologies, evolved over time, to give us a better and more stable environment. Scalability is one of the biggest tests for any cloud environment, but more importantly, it must have at least two of the technologies present to be classified as a cloud solution. We are now on Day 6, the rest day, hopefully we will now have a short breather while everyone catches up to technology, before the evolution starts all over again.