Sunday, March 17, 2013


Rackspace Cloud - What lies beneath?

Nowadays, the term 'Cloud' no more refers to a cloud that brings rain in the season of monsoon!  It also refers to the software technology that brings a lot of benefits over the traditional and conventional methodologies of hosting your software applications.  I consider myself fortunate to grab the opportunity to work on Cloud technologies and have explored each and every aspect of the cloud offerings in its entirety.  Generally speaking the most of the Indian software companies work more on providing consultation and services to their business partners. There are very less organizations in India that has got the privilege    to make decisions for their business partners (clients).  This is fortunate as well as unfortunate in its own sense.  This can be viewed as fortunate because the organizations can generate regular income by serving their IT partners. It is unfortunate because these companies are highly dependent on their client to make decisions. They hardly get chance to explore any technology to its deepest possible level and come up with their own proposals. This is because their clients have already done the background work and give them the checklist which they have to follow.  In my view, it restricts the thought process.  Well, it’s a separate topic of discussion. :)

Like I previously said that I am fortunate to grab an opportunity to explore cloud technologies in its entirety is only because it was my personal craving to explore the word 'Cloud'.  I was part of the team who were using Rackspace Cloud for their daily deployments and maintenance.  Sometimes I wonder why word 'Cloud'?  I thought a lot over it and finally got the convincing answer from my mind that Cloud is seen from everywhere and from any part of the world, hence the creators might have used the word 'Cloud'!  This is analogous to the way we expect our Cloud-based applications to perform.  The owner of the application expects that the application should be accessible from any part of the world and should be up and running most of the times without putting more efforts in its maintenance.  I am writing this post to enable our community to make most of the cloud technologies. I will be referring to Rackspace Cloud unless explicitly mentioned.

For those who do not have any background about Rackspace Inc., it is the firm that provides cloud infrastructure for their customers.  They have great features embedded in their control panel application to administer and monitor the cloud based applications.  Just like any other technology, cloud also follows specific sets of RFC's.  RFC (Request for Comments) becomes the input for any provider to implement the new technology so that consistency is maintained between the implementations of different vendors.  The taxonomy and terminologies may differ a bit in its name but they help us to achieve the same functionality across different vendors.  Some vendors may like to take a patent or register the name of specific implementation to uniquely identify their brand name. e.g.: the design and shape of the grills near the bonnet of the cars are patented by their manufacturers so that anyone can identify the car manufacturer by looking at the design and shape of the grills!

The cloud can be viewed as the large set of Virtual Machines (VMs) that are spread across the world using millions of GB of space and many processors.  It, truly, works on the concept of virtualization where in the storage is spread across many computers across the world.  The allocation of the CPU is done on the need basis and so is the hard disk space.  Hence the main unit of billing is the usage of CPU and hard disk space used.  These are virtually known as Computing Cycles (cc) and Storage. We will discuss about this in more details towards the end of this post.

Let's jump back to the Rackspace Cloud.  I assume the reader of this post has the basic knowledge about deployment of .NET based application on local IIS servers.  The Rackspace Cloud provides many features that a deployment engineer can make use of.  The main amongst them are Cloud Hosting, Cloud Files, Cloud Servers, Load balancers.  Let's discuss one by one.

  1. Cloud Hosting:  This feature enables us to create the instance of our website.  When we want to host our website on cloud we would like to select this option.  The selection of this option depends on the web-server you may like to use. e.g.: for .NET based applications you may like to use windows or IIS, for PHP/Java you may like to go for Apache.  The deployment engineer needs to make an appropriate choice as to which platform the application is targeted. The engineer then creates the instance of the website and creates the published copy of the website.  The published copy of the website contains binaries (dlls) and the views (.aspx) pages.  The Rackspace recommends to ftp upload the contents of the published folder into the specific folder named 'Content'.  Once the content folder is stuffed with the binaries it takes sometime for the cloud engine to reflect the changes.  Meanwhile, if you are an IIS user then you must restart the application pool by using 'Rebuild Application' option available in Rackspace Control Panel Console.  The 'Rebuild Application' option gives user the ability to force restarting of the application pool so that new binaries can be loaded in the process and changes gets reflected on the website soon.
     
  2. Cloud Files:  This feature enables the storage of the files over cloud.  The Rackspace allows logical grouping of the files which are often known as Containers (Amazon S3 call it as Buckets).  The containers are the virtualization over the physical hard drives meaning the single container can spread across multiple hard disk drives.  It also serves as the unit of isolation meaning the contents of one container cannot be overwritten/overridden by the contents of the other container.  These are independent of one another.  The cloud vendors also provides the API key to programmatically manipulate the files. The developer or a software writer can upload, download, view, delete the files programmatically using the API key. The programmatic access follows all the basic rules for cloud access including the concept of the containers (and buckets in Amazon S3).  The cloud works on the principle of CDN (Content Distribution Network). This enables the cloud engine to generate a unique path for all the files that are uploaded to the cloud.  The file can be accessed from anywhere in the world over the internet using the "cdn" path.
     
  3. Cloud Servers: This feature enables the user to create the instance of the servers in the Cloud.  Conventionally, the vendors have servers in their own premises.  This setup may need an additional efforts to maintain the server.  The organization may need to design or draft the backup plans, in case, the server gets crashed.  The Rackspace frees us from all these worries.  This facility enables the user to create the instances of the server on the cloud and use them round the clock.  The overheads are taken care by Rackspace.  Rackspace provides several options to create the instance of the server. It can create the server with any platform (all flavours and versions of Windows and Linux).  There are several pre-defined images of the servers available in Control Console that facilitates easy and faster creation of the new instance of the servers

  1. Cloud Load-balancers: This feature enables the user to create load balancers for their servers.  I need to explore this feature in more details and will update the required information in this post once I get enough competency in this section.


The metrics that are used by Rackspace for the billing is Computing Cycles, Storage, number of Server Instances. Let's discuss these terminologies in detail.  These are the basic metrics used by Rackspace to generate the invoice for its clients and users.

  1. Computing Cycles:  The cloud works entirely on the concept of Virtual Machines.  These VM's uses several CPU (Processors) that can spread across different machines. Hence, there is a need to Virtualize the concept of amount of CPU usage. This is known as Computing Cycles (cc).  It is defined as the amount of total CPU cycles used by the user in performing the administrative task from the Control Panel of Cloud.  It is the sum of all the CPU cycles from all the available CPUs.
  2. Storage:  The cloud uses the concept of Virtual Storage to identify the amount of storage the specific deployment of the  application uses.  It also includes the amount of storage used by the Cloud Files.
  3. Server Instances:  The total number of servers created by the user and platform information of each server

The above information can be accessed by the user at any point of the time and the invoice is generated based on the usage. There are several plans available with Rackspace including pay-as-you-go and unlimited usage.  The unlimited usage gives 500GB of Storage and around 19,000 Computing Cycles (cc) per month (These numbers are not final  and are likely to get change as decided by Rackspace from time to time).  The cloud vendor guarantees 99.99% uptime and zero maintenance overhead with great disaster recovery mechanism. This is quite true as per my experiences working with Rackspace.

Cloud - Manage at one place, access anywhere!

No comments: