In this blog, I will cover basics of Cloud OS, how Enterprise Cloud is different from private/public clouds from Cloud providers and comparison of the major Open source cloud OS available today.
Just like Operating system for a desktop or server manages the resources associated with it, Cloud OS manages the resources associated with the cloud. Major cloud resources are compute, storage and network. Compute includes servers and hypervisors associated with the servers that allows for VM creation. Storage includes local storage, Storage area network and Object storage. Network includes vlans, firewalls, load balancers etc. Cloud OS is also responsible for giving the cloud characteristics like Elasticity, self service provisioning model etc. Cloud OS is also responsible for other items like image management, authentication, security, billing etc.
I found the following pictures from the net to illustrate nicely the cloud OS layer.
The first picture above gives the macro picture and the second picture breaks the cloud management layer into 3 pieces, Cloud SW stack is the cloud OS layer we are discussing in the blog. I will cover the other 2 layers in a different blog.
Enterprise vs Public/Private cloud:
I found lot of information in the net regarding this. At high level, what I understood is that Enterprise cloud is suitable for already existing Enterprise data centers with a whole bunch of legacy applications who want to convert their data center into a cloud while the other cloud model is suitable for cloud providers who are using commodity hardware and running cloud aware/ready applications. Since pictures explains concepts better than words, I am putting below relevant pictures with some details.
- The first row says that enterprise data centers are custom built while the other category is general purpose.
- The second and third row states that the hardware is best in class and redundancy is built into the hardware layer for Enterprise cloud while in the other model, the hardware used is mostly commoditized.
- The scaling comparison states that with Enterprise cloud, the model used is bigger powerful servers with monolithic application while in the other model, its preferred to get multiple servers and load balance the application.
I liked the above comparison the best where Enterprise model is compared to Pets model where individual pets needs to be taken special care while public cloud model is compared to cattle model where all tenants are treated identically. In the same blog, I found the mention that the best way to find if the cloud is Enterprise based is by randomly shutting down some VMs and if that goes unnoticed, then its not an Enterprise cloud.
i found the following 2 pictures explaining where the Cloud OS providers fit into the above models quite useful.
- The first picture above shows AWS and vcloud director taking the 2 extremes. vcloud director from Vmware is a typical Enterprise based cloud OS while Amazon’s AWS is a typical public cloud based OS. In this picture, Enterprise based cloud is referred to as datacenter virtualization and the other type is referred to as infrastructure provision.
- In the second picture, X axis represent different type of cloud and Y axis represent cloud service types. Lets ignore the Y axis for now. We can combine Orchestration-based and policy-based into 1 bucket which is the enterprise cloud and the other is the usual public/private cloud.
In the above picture, Enterprise based cloud is referred to as TCP cloud where hardware provides redundancy and the application has some specific requirements from the infrastucture. In the UDP based cloud, applications are expected to be fault tolerant and there is minimum expectation from the infrastructure.
Following are 2 examples of Enterprise based cloud OS:
- The first example above is from Vmware. The Cloud OS is vcloud director and it integrates well with other virtualization services from vmware like vcenter and vsphere.
- The second example above is from Cisco CIAC + Cloupia.
Open source Cloud OS:
The 4 most popular Open source cloud OS currently are Openstack, Cloudstack, Eucalyptus and OpenNebula. Following is the licensing model of these Cloud OS.
I found the following comparison pretty helpful:
- From architecture perspective, Cloudstack is a monolithic application, whereas Eucalyptus and Openstack is split into multiple smaller application pieces. For example, Openstack is split into Compute(Nova), Object storage(Swift), Network(Quantum), Authentication(Keystone), Image management(Glance), front-end(Horizon).
- Eucalyptus tries to mimic AWS api as much as possible. Amazon and Eucalyptus have partnership agreement as well. Folks going to Eucalyptus have advantage of moving to hybrid clouds easily since same api/cli can work both in Eucalyptus private cloud and AWS public cloud. Cloudstack also has a conversion layer to convert AWS api to cloudstack api.
- There are 2 different perspectives with respect to HA in the cloud. 1 is in terms of HA with respect to cloud OS and another is with respect to cloud infra HA. From cloud OS HA perspective, Cloudstack has the load balancing approach, Eucalyptus has primary/secondary approach. In Openstack, not all modules are HA aware.
- Openstack has the biggest momentum currently because of the large number of vendor participation.
- Any of the Open source cloud OS can be used to build both public and private cloud.