Cloud Computing

Cloud computing refers to both the applications delivered as services over the internet and the hardware & software systems in the data centers that provide those services.

Characteristics of cloud computing:

On-demand self-service – vendors provide cloud resources on demand of users. Most users start with limited resources and increase them with time. On-demand self-service allows them to request resources on run time.
Broad network access – Resources hosted in a private cloud network that can be accessed from a wide range of devices i.e PCs, Tablets, Smartphones and from wide geographical locations.
Resource pooling – Provider’s resources are pooled to serve multiple users. Resources can be scaled to suit needs of one user without affecting another.
Rapid elasticity – means seamless provisioning for the end user. In other words, cloud resources seem to be infinite and automatically available.
Measured Service – refers to a metering mechanism whereby both users and providers get an account of what has been used due to cloud resources being automated. In short, pay as you go.
Service Models/ Cloud Stacks
Cloud services can be divided into 3 stacks:

1. Infrastructure as a service (IaaS)

In this model, users get the virtualized computing resources. The provider will host hardware, software, servers, storage, network connections, bandwidth and load balances etc on behalf of user. This helps users in managing scalability of operations where the complexities and expenses of managing underlying hardware are oursourced to the provider, in situations where workloads are temporary or change suddenly. Examples of IaaS are Amazon web services, Microsoft Azure, Google compute engine etc.

2. Platform as a service (PaaS)

Here, the platform and environment is also provided for developers to build applications and services. PaaS services are hosted in the cloud and mostly accessible over internet, using a web browser. Services that may be offered in PaaS are as follows:

Operating System
Database management system
Server software
Storage
Tools for design and development

Major advantages of PaaS is that no investment in physical infrastructure is required and teams can work from different locations as a browser and internet is what is required for application build. E.g. Apprenda, Apache Stratos, Google app engine.

3. Software as a service (SaaS)

This is top most layer of the cloud stack which is directly consumed by end user. Here, the consumers access software applications over the internet which are hosted in the cloud. Facebook, Twitter, Gmail are all examples of SaaS with users able to access them from any internet enabled device. Major advantages are as follows:

No Processing power required – as all of it is provided by cloud vendor. You just need the internet and a browser to use those applications over the web (web apps they are usually called, without the need to install them on your local machine)
Pay for what you use, from any location and across devices. The packages that come for 1 month, 6 months, 1 year, for some web apps explain that.
Scalability is addressed as well i.e users who want premium features can pay more and get additional. Premium LinkedIn account, increased storage capacity on dropbox or google drive, more screens on Netflix, CISCO WebEx, Google Apps, Salesforce are some examples that can fit in.

Challenges

Data transfer bottlenecks.
Performance unpredictability.
Loss of control to the third party.
Integration with existing infrastructure.
Right choice (IaaS, Paas, SaaS) while making a transition to cloud.