In my previous post I explained the characteristics of cloud computing, perhaps people say if you know something very well you should be able to explain the thing to your granny. If you could do it successfully then you know about this technology well.
I consider this correct, So I gave this attempt. Lets hope this will workout well for you as well. I hope this would be useful for some of you as well in understanding the concepts.
Lets discuss about the Service Models of Cloud computing. IaaS, PaaS, SaaS.
If you have to build a house, what is that you need before you start constructing the house ? Foundation – which is the basic need to build in our case this is If you don’t have sufficient infrastructure at your end, you will hire the Infrastructure from these cloud companies.
If you don’t have sufficient time and energy to build the foundation of the house, you will hire the labor to build it and pay them hourly basis. The same way you will pay for the infrastructure you have used either based on the number of cores / memory utilized.
If you don’t want to build house or you don’t have budget to build a house what you would do? Most likely you would rent a house … right ? This is much cheaper option and you will get a ready house where you can live in immediately. still you might have to spend some money on furniture like Sofa, Fridge, TV, etc.
In the same way, the service provider would provide you the platforms like Google App Engine, Microsoft Azure, Red Hat’s OpenShift, provides the platform to you where you can write your own Apps and add-ons using given platform. These platforms offer you the basic building blocks for you to start your work quickly and scale easily.
If you take the previous example, you might think of taking a fully furnished apartment for rent. So you don’t even need to develop your own software on the platform. Just use the software and pay as per you use. This again has many models based on the application for charge back, some applications charge per size, some per request etc. Like based on the furniture and amenities you have in your house the rent will be charged. Eg SaaS services are Microsoft’s Office 365, Prezi.com and millions of software.
Hope you can try explaining cloud computing to your grand parents too.
The current buzz word in software industry is Cloud, most developers and QA’s does’t have correct understanding of “cloud application“. However, they say yeah we are also working on cloud applications these days. Even I was in this kind of mode for sometime, until our company started a challenge called “Seed the cloud”. I read a little more about the cloud architecture and how cloud applications should work.
Initially my biggest concern was, how to differentiate the normal web applications to Cloud applications.I hope, the below notes would help the people who are in the similar state.
"Cloud computing in general can be portrayed as a synonym
for distributed computing over a network, with the ability
to run a program or application on many connected
computers at the same time. It specifically refers
to a computing hardware machine or group of computing
hardware machines commonly referred as a server
connected through a communication network such
as the Internet."
Cloud computing is a model for enabling ubiquitous,
convenient, on-demand network access to a shared
pool of configurable computing resources (e.g., networks,
servers, storage, applications, and services) that
can be rapidly provisioned and released with minimal
management effort or service provider interaction.
- NIST(National Institute of Standards & Technology, US)
Explanation: In the above explanation, If you observe the “__” words, they talks about distributed computing, network, Many connected computers, Internet. So, These are the important attributes in cloud computing. Then you might not see much difference between any regular web application and a cloud based application, Right ?
That’s the confusing part here…… If any application, satisfies any of these characteristics then that could be a Cloud application.
Note: All the characteristics are not required to satisfy,
most of them should be satisfied.
The key characteristics of Cloud are below
On Demand, Self-service
Broad Network Access
It’s time to understand what are the meanings of the above strings.
On Demand, Self-service :
This title itself is very self explanatory. The resources should be on demand and User should be able to do the self service instead of depending on IT or other group.
Lets take some example to explain this,
Scenario: You need to add more hard disk capacity to your server because, your new feature is upload images of the customers might need more hard disk space.
Application Hosted on Regular Environment: You would normally raise a request to IT team to add new HDD of 100/200 GB to your server. Then your IT person would buy/get from warehouse and put this HDD in your server slot.
Application Hosted on Cloud Environment: You would directly go to your cloud provider site/portal and ask for more GB space and they might charge you for each GB you use, that means instead of buying 200 GB today, you can simply buy 50 GB every month incrementally and pay for only the amount you have bought. The amount of GB you asked will be reflected in your account immediately. This is a example of On-Demand self service. Your cloud provider keep hardware ready for you when you need it.
Immediate Resource availability
Buy only what you need ( 50/100 GB instead of 500 GB HDD)
No dependency on IT/ other teams
Stick to the same Cloud provider (If you switch you might loose the data)
Might not get customization for Payment ( If provider charges on GB basis, you can’t ask him to charge on other basis, like per request.)
This is a also very straight forward concept, you should be able to use the pool of resources. Example could be processors, memory, RAM etc. With the virtualization platforms, we can use many different machines out of one hardware machines. Actually many different customers (users) might share many hardware shared resources. This is why the cost efficiency will come for small enterprises.
Scenario: Your application is very small and you are experimenting the product and you don’t have money to spend on hardware like Server, Racks, Cooling etc. The cloud provider would give all these things for very less money than you have to buy these things as he is sharing the resources among many different users. Only one server might be serving 4-5 customers as all their applications are very small.
Cost would be very less compared to own Infrastructure.
Risk of information leakage as the data might be stored on same server.
No information of Location of Storage of the data. ( If you have follow any country specific norms/regulations based on your application )
Rapid Elasticity ( Flexibility & Scalability )
Elasticity talks about the capability of providing or releasing the resources rapidly for scaling the applications. Which could be explained with example for easy understanding.
Scenario: You have a online shopping application and you sell cloths and accessories in this ekart. Your regular load on the server is 5000 requests per day and you announced a huge discount and did a huge ad campaign for the same on the occasion of X-mas. Now for these 10 days before 25th Dec you are expecting 25000 requests per day. How can you scale in regular Environment? You can simply add more processors / add new nodes with load balancing for only those 10 days dynamically based on your load and remove those servers after the offer period is over.
Very flexible to add / remove hardware
Cost effective (coz you didn’t buy anything)
Measured Services (Pay Per Use)
This means, user should be able to measure the resources (Storage, processing, bandwidth, number of Users) and their utilization in some metric. Resource utilization can be monitored and measured for use of both provider and consumer.
For example, You buy only 100 GB space and application hosting then you would only pay for 100 GB and the service charges, nothing more than that. This concept is called Pay Per use, but this is not a mandatory characteristic of cloud. In some cases this might not be applicable.
Cost Effective ( Pay only for the things you have used)
Easy scalability ( Increase when you need)
Provides Analytic data of your application ( Number of requests, number of accounts, data store capacity etc)
Every cloud application might not be able to utilize this
Broad Network Access:
This means the applications can be accessed Anytime, Anywhere, Any Device. User has to have Internet, apart from that there is no restriction to access the application. This brings the user to all the devices like mobile phones, Tablets and Desktops.
Access Anywhere, Any Device
All you need is Internet.
No Internet, No Application.
Hope this gives an idea about – what is cloud ? and where it fits in your business scenarios.