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.
Before understanding it’s characteristics, lets try to understand the definition of Cloud computing.
The Wikipedia definitions
"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." - UnKnown 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
- Resource pooling
- Rapid Elasticity
- Measured 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.)
Resource Pooling (Multi-tenency)
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.
Happy Reading 🙂