Cloud computing is an IT computing style that delivers IT services (infrastructure, software, data store and information) in a simplified way to end users over internet. So how is different from existing models. Well the fundamental differences are how these services (infrastructure, software, data store and information) are provided and how they are accessed by users. A most common example is Google Apps which provides web based office tools to end users. So you just need a web browser to access the office suite of applications, where you can create, save, share documents online, without installing any dedicated software (office tools) on your computer. This is an example of Software as a Service cloud offering.
Google App Engine is another example which provides the infrastructure to run your business enterprise applications. This is an example of Software as well as Infrastructure level services offered over the web. Your applications can take advantage of the same scalable technologies that’s used by Google applications. More ever, you can create your application, deploy it and run it for free using Google App Engine. There are some restrictions for free account – like 1GB of storage and up to 5 million page views a month. The registration process to setup the account is pretty simple. I got the activation code over SMS. Google App Engine supports Java or Python runtime environment. If you are using Java , you can use standard Java technology – Java servlets, JSP, JPA and Java Mail. For developing applications you can use the Google App Engine SDK. I plan to develop few applications using Google App Engine SDK and deploy it in my Google cloud. I will follow up my experiences in a separate blog.
The other characteristics of cloud computing environment comprises of providing an ability to scale (increase or decrease resources) resources as and when required. For instance, take an example of trading application , in the current scenario, dedicated servers needs to be maintained for peak loads (and even that is not sufficient) and still maintain the servers after the trading hours where it would be under utilized. Wouldn’t it be nice if additional resources (software or hardware) can be added at runtime based on your application demands and than decreased it during non peak hours. The ability to increase or decrease capacity is one of the key characteristics of cloud computing environment. This is usually achieved through a concept of virtualization. Virtualized as the name suggests is about creation of virtual (can be considered as a clone) version of a resource, rather than the actual physical resource. The resource can be hardware or software. The virtualized resource usually would represent an entity that you would like to scale, like an OS or an Application Server. The virtualized resource runs on the runtime platform (called as hyper visors) which is capable of running these multiple virtualized resources. Examples of hypervisors are VMWare ESX and ESXi.
The other example is Amazon which offers a host of cloud computing services over the internet. The Amazon Elastic Compute Cloud provides an ability to increase or decrease server capacity within minutes using web services APIs. You can have complete control over your virtualized resources and provide storage and messaging services which can be used by your applications.
The other benefits of cloud computing are with respect to lower power consumption usage, Green IT initiatives as you consolidate your servers and resources and used it as and when required.
In my view, list of vendors and clouds services/ cloud based applications would definitely increase over a period of time and very soon we would have our space in the cloud. Lets not get into the security aspects now 🙂 , will post it in a future blog, but for now dive into the cloud.
Before I sign off today, I envision – “The future is cloud”