Archive for the ‘cloud computing’ Category
Understanding OpenNebula
OpenNebula is a platform providing the ability to manage a pool of virtual resources. You can create virtual machines and configure them as you would configure a physical machine connected your network. Difference between OpenNebula and Amazon EC2 (and other public cloud providers) is that Amazon EC2 is a public service. Amazon is having an infrastructure management tool like OpenNebula which they use to provide those virtual resources to people in a pay-as-you-go scheme. You can use OpenNebula to provide similar kind of service to users inside your network. If you want to be another cloud service provider like Amazon, you can easily adapt OpenNebula to do that too. You only have to write a frontend which restricts creation of virtual machines only after a payment is made (on a very high level
). OpenNebula has an XMLRPC interface through which you can interface with from another program written in a different programming language. Also, OpenNebula provide a driver which expose it’s functionality through the libvirt API.
What is libvirt? Libvirt is an effort to come up with an API for all virtualization platforms. Plus, it does have an implementation (libvirtd) which other management programs can talk to. For example virsh and virt-manager are couple of tools which can talk to underlying virtualization platforms such as Xen and KVM through libvirt.
Going a step further than libvirt, OpenNebula eases the creation of networks, adding cluster nodes and deploying virtual machines. Also, OpenNebula comes with a scheduler which will deploy a given virtual machine on the cluster. Scheduling policies can be configured and if more complex policies are needed those can be created through Haizea. Haizea is a scheduler which can be plugged into OpenNebula. OpenNebula stores all these information in an SQLite database that can be accessed from any other programming language if those information needs to be pulled out. A nice to have feature would be an API that gives all kinds of information stored in the SQLite database.
Windows Azure: Taking a peek
Windows Azure is another cloud platform that can be used to deploy applications to the cloud and not worry about rest of the duct tape that’s required for smoother operation. Like many things from Microsoft, a killer feature is tight integration with Visual Studio. You can literally build and deploy applications to the cloud with a single mouse click.
With my experience developing applications with Microsoft technologies, the biggest gripe I have so far is the lack of flexibility. I can recall in one instance where I tried to log raw XML messages going through Geneva libraries turned out to be very difficult. The successful documented scenarios, happy path, in other words work marvelously. Turning on WCF logging didn’t log the RST message coming to Geneva. Solution to that problem turned out to be overriding the XML writer method to write the stream to a file. Ultimately was able to get it solved without having to do that.
Coming back to Azure, it seems that it’s not a low level virtualized environment like Amazon EC2. The lines are still blurry to me when it’s positioned somewhere in between EC2 and Google App Engine. One problem of having a platform layer (Windows Azure OS) that sits above the actual OS is, the way of doing things will be different. One major advantage of EC2 is if you boot up a Windows machine, it’s Windows. Azure, things are different. Comparing, a major advantage is things can be simplified to a jaw droppingly awesome level. With the development frabric installed which lets you test your applications on your local machine before deploying to Windows Azure platform, Windows programs you develop through Visual Studio can be deployed within seconds. You don’t have to learn any additional deployment methods. Great for application developers. If you want to do something at a lower level you need to learn more.
The most interesting part for me atleast is the support for FastCGI. Through that, you can call native code. Like PHP for example. The PHP Azure SDK seems really interesting.
Cloud computing and SOA
If you’ve not already heard the term (gasp!) or don’t have an idea about cloud computing you can look no further than the excellent, short presentation titled “Cloud Computing – Why IT matters” by Simon Wardley. Also, read a great paper about the subject “Above the Clouds: A Berkeley View of Cloud Computing” [PDF].
Usually in technically adept circles you can hear virtualization being used more often than the term cloud computing, the technology that enable computers to evaporate into small H2O particles and form clouds. Virtualization tools have been there for a while. It was, IMHO, got popular after Amazon slapped a Web services interface in front of Xen and said, try using this interface to start/stop and manage virtual machines. Having a separate service for persistent storage, again, is a brilliant marketing move. With big investments (such as Intel investing in Joyent) one can guarantee that the cloud space will get cloudier as time progress. This might make projects such as Simple Cloud more attractive.
Adoption rates for cloud computing is going to increase among the big guys. As a survey done by Forrester tells “one out of four large companies plan to use an external provider soon, or have already employed one”. When people are seriously considering moving to cloud platforms, you have to make sure that all the application programs are ready to be run on a virtualized environment. Specially SOA middleware products that the company is using should be compatible and must be able to take advantage of the services provided.
One advantage of moving to cloud computing is the ability to add/remove resources as and when it’s required. If your applications, or middleware products that you’re using is incapable of getting advantage of this elasticity (autoscaling to the inner techie in you) there’s no point, or no value gained by putting your stuff in the cloud. It’s one reason why WSO2 has “cloud enabled” all of the products line. Not only you can host all your services in the cloud using WSO2 middleware products, you can download pre-built images for VMware and KVM to run inside your private virtualized infrastructure. Give it a whirl and see!