I had been to Bangalore Barcamp 2012 yesterday and got an opportunity to meet openstack developers.One of them gave a wonderful analogy about cloud computing.I just wanted to share the same with you all.
Suppose that you have a desktop with following configuration.You install an operating system and you can boot only one operating system at time, moreover your operating system would consume only a part of your resource and the rest is just left unused.
Now consider the concept of virtual machine.For the same above configuration here we put a layer(hypervisor) above, such that it totally hides the underlying information as shown below.With the help of this layer you can install any number of operating systems irrespective of the type of OS and you can boot all the operating systems simultaneously too. Not just that, you can also specify what amount of RAM and Hard Disk space you want to allocate for a particular OS.Is it not cool..?? 🙂 Yes it is a super cool feature implemented as VMWare player and Virtual Box.Click here for ubuntu installation using vmware player.
Hypervisors provide the means to logically divide a single, physical server or blade, allowing multiple operating systems to run securely on the same CPU and increase the CPU utilization.Some of the hypervisors in the market are KVM from Redhat , XEN used by Amazon, EXXI from Openstack, Hyper-V from Microsoft.
Where hardware partitioning allows for hardware consolidation, hypervisors allow for flexibility in how the virtual resources are defined and managed, making it a more-often used system consolidation solution.
But now the issue is even in this design we might expect some unused resources in each or the OS and now comes the concept of CLOUD to utilize the remaining resources too.Ah.. Developers grow greedy right.. 😛
In cloud you set up a network of machines with varying configuration like one machine might have 2TB storage capacity and another machine might have 32GB RAM and few might have very less configuration too.What they do is just combine all the resources and when we ask for cloud service they give us a part of the resources whose size depends on the customers need.This process is called spawning of instances and all these accessed via internet.
An instance is nothing but set of resources.Cloud providers spawn the instances whose size are decided just like the way we have various T-shirts sizes(Small, Medium, Large, XL,XXL, etc). and they name it as micro instances,small instance,large instance, etc.Here we also have the concept of images which is nothing but a bootable image which might be any operating system.Hence whenever a customer chooses for particular type of instance(like ubuntu, solaris, fedora, windows,etc) appropriate images is loaded accordingly.