• What is Cloud Computing?



     Cloud Computing is one of the famous buzz words and the hype in the present day software industry.So, what exactly is Cloud Computing ? Do we need to travel in an aeroplane or sit on top of a mountain with a computer to leverage the services? Does it work when it is raining ? ;) ( I came across a video in YouTube where an IT Commissioner asked this question :D ).The answer is obviously NO.I will try to explain about Cloud Computing in this post without too many technical terms and in an easy understanding way.
                                          

  • Cloud Computing can be described as the modern day Internet Computing and it is mainly enabled by virtualization and we can say it is an adaption of virtual computing ,because everything depends and runs on the Internet!Imagine you have a website and you started promoting it and by god's grace it has clicked and you got some huge amounts of traffic.So,obviously you have to maintain your web-server with increase in your site's popularity.There may be one state where you may fail to maintain your server as  effectively and as consistently compared to the earlier times,which may result in less number of hits for the site,many people may find difficulties in accessing your website and many other problems.One solution is to buy more and more number of servers which involves increased cost and maintenance.
  • Take an other scenario , where your company has a website which attracts seasonal traffic from the public like an examination results portal.There will be huge amounts of traffic when the results are out and to handle that traffic the company must buy more servers but in the rest of the time the site doesn't get too much attention.So , the company need to pay for the server and its maintenance even though there is not much traffic. We just cant throw away the servers once we buy and set them up and running.
  • Cloud Computing provides easy solution for the above problems decreasing the cost of setting up and maintaining the servers , site and application of an end-user/organisation.


source getty images
                                                  
                                                

  • Cloud computing involves sharing of  many computer resources like software,servers etc;which are useful for the software development.These resources are shared between the computers all over the world by using the data centers which will be accessed through Internet and is known as "Cloud".There are many organizations which call themselves as Cloud Service Providers( Google,Amazon,Microsoft,vmware etc) which provide these infrastructure and software in the form as a service through Internet or as we call in this context Cloud.The main idea of Cloud Computing is we outsource our application/web site to the Cloud Providers and use their infrastructure to run our applications.
  • So how can a cloud service provider help solve the above problems for an organization?

    Cloud Computing follows some important capabilities which help solve the above problems:
    1.Elasticity : As the name suggests it means being flexible, when your application needs to serve the traffic which needs 100 servers the cloud can scale up and give access to 100 servers at peak time and if you need only 1 server to just keep the site running without any huge traffic you will get only 1 server. You cant get this kind of flexibility or scalability when you are hosting the application/ web site on your own.

    2.Pay-As-You-GO: So previously you bought 10 servers to maintain the traffic for your website which will last for only 2 months and in the rest of the year you just need 2 servers to maintain the website leaving those additional 8 servers ideal. Cloud computing solves this problem as you can pay for only the number of servers or computing resources you are using i.e. Pay for only 2 servers when your site is getting less traffic and 10 servers at peak time. This is just like paying for a Cab or Electricity , when you want to go somewhere you hire a cab and pay for the ride depending on the distance traveled,and you pay for the electricity as per your usage.

    3. Self Service and Instant Access( ON/OFF): When you want to setup the servers on your own you buy the infrastructure and take some time to get them ready.But in the case of cloud-computing, the cloud providers will give the access to the cloud through a terminal or console which we can access through our computer. You can instantly order the computing power when you are in need and just turn them off like an electric bulb when you are done.

    These are the main reasons why the cloud computing became so huge recently. Hope this makes sense till now. But you may ask what does cloud computing mean to me? How it is helpful ? The answer is, it takes many forms and is helpful depending on what your need is.



  • If you are a Business Professional or System Administrator : Cloud computing is all about outsourcing your application and data to utilize the computing power like infrastructure, hardware, servers etc; You move away from the servers you are paying to maintain the website and access the infrastructure of the cloud provider. This is called Infrastructure as a Service ( IaaS ). You will be billed according to the number of CPU hours and the usage of the website. Majority cloud providers in this domain are Amazon Web Services (which provides many services like Amazon EC2 and S3), Google (Google Compute Engine) , Microsoft (Azure), Red hat  vmWare etc;
  • If you are a Developer or an Architect : You need to develop applications or think of a strategy to migrate the existing in-house applications to scale and to leverage the service of cloud. All you need is a platform(Java, .Net , PHP , Ruby etc). Providing this is called as Platform as a Service ( PaaS ). This service will provide a Platform and a set of development tools knows as SDK to develop or migrate applications to leverage the cloud services and infrastructure. The major provider in this service are Amazon(Amazon Web Services Elastic Beanstalk), Google ( Google App Engine), Microsoft Windows Azure, Heroku, AppHarbour,CloudFoundry etc; If you are a developer these services provide some exciting features. All you need to do is download the SDK from the site, write some code and deploy that to the server.Voila!! You can access your application anywhere in the internet! Its that easy.
  • If you are an End-User : You need a variety of application in your day to day life. But in some situations you may need to worry about many things to access that applications like the application may not run on your hardware, you cant access your application data in another device or at your workplace.So instead of buying the software and installing it on your device, you can purchase a monthly,weekly or yearly subscription of that application and access that application on your web browser without worrying about your hardware. You can use it on your PC when you are at home, on your laptop when you are at your workplace, on your mobile phone or tablet well where ever you may be. This is called providing Software as a Service ( SaaS ). For example, instead of buying Microsoft Office license and installing it on your computer you can just simply use Office Cloud365 service provided by Microsoft by paying monthly subscription as per your usage. One major advantage is you can use the brand new versions of the software with updated features every time unlike the software you bought for some huge money.
                                                               
                                                       
Not only these services there are some new Service Models coming in to the market like Gaming as a Service, Backend as a Service, Network as a Service which I think will fall under one of the above mentioned categories when you think logically. 

One of the major disadvantage and challenges of Cloud Computing is providing security. No one will give  the important customer data of an organisation to a 3rd party cloud provider without knowing how secure will be the data. This is the major challenge which needs to be addressed in case of very large organizations. The other alternative is to set up your own Cloud and be your own Cloud Provider. Here comes the concept of different models of Cloud.
a. Public Cloud - Here you outsource your application to a big cloud service provider who can afford huge amounts of money to buy and maintain servers to run many applications in their data centers.This type of cloud is called Public Cloud.
b. Private Cloud - Here an organization can set up its own infrastructure i.e. its own cloud by setting up virtualized instances of the servers.One more thing is to consulting 3rd party vendors to setup your own network through internet. This may sound similar to Public Cloud IaaS offering but here we get this service under the organizations firewall restrictions.

These concepts are pretty complex and are worth explaining in an other blog post. I hope this post was helpful for people who struggle to understand what Cloud Computing really is!!