As cloud computing is an umbrella term used to describe many services and deployment models, many of us are not aware of the precise difference between cloud and traditional software. Interestingly many of us firmly believe that both are almost same and software installed/deployed on a remote server is cloud and rest others are traditional software! True cloud is deployed on a server but in fact even most of the traditional software (non-desktop based) are also deployed on a remote server. Surprisingly even many IT professionals also think on the same line. This is a myth and there are 5 essential characteristics that must be fulfilled by a service in order to be termed as a Cloud Service.
As you may be aware that cloud services can be divided into 3 categories (known as Cloud Service Models):
SaaS – Software as a Service. This service is mostly for common user and is the most popular cloud service category.
PaaS – Platform as a Service. This service is targeted to developers.
IaaS – Infrastructure as a Service. This service is consumed by SaaS and PaaS providers. So, it’s mainly a B2B service.
A cloud service in contrast to a traditional software service must have at least the following 5 characteristics:
Traditional software has essentially a long term contract divided into phases such as development, testing and maintenance. In a few cases these 3 phases may be handled by 3 different companies. In fact, traditional software’s main source of revenue is support and maintenance whereas Cloud Services are by and large architected in such a way that the end users can configure the software based on their requirements. So, apparently cloud services are user friendly service and requires less maintenance from the service provider (maintenance is not charged to the consumer).
Scalable and Elastic
Before going into the details let us define Scalability and Elasticity. Scalability is the ability of a service to size up or size down based on the users requirement. Any software has some usage pattern, for example, an e-retail service (online ecommerce portal, like Amazon) will have high traffic peaks during festive seasons like Christmas, payroll processing software has a very high usage at the end of every month (or based on the period in which the salary is processed), similarly a service for showing examination results of students will have very high usage at the end of every semester or yearly session.
All the examples provided above demand sizing up your service to cater to the increased load. Now think of the reverse of the above usage pattern, i.e. there are times when a service showing results of students is not at all used or required, e-retailers service also go through some lean phases where their business is a little dull and won’t require as much infrastructure as required by them during their peak phase. So, the infrastructure should size down itself to save money.
Elasticity is the ability of the service to instantly add or remove servers (infrastructure) i.e. you can configure your requirement in advance or can configure it instantly based on your requirement and that is possible only if your service is scalable and elastic.
When we share resources the operation cost of the resources is also shared. A simple analogy can be like driving your own car vs. participating in carpooling. Apart from the cost advantage, sharing also leads to innovation by the service provider to make the service efficient and high performing. Also, the collective usage of the infrastructure makes the service provider responsible and in turn empowers the end user because service provider has to invest a significant amount of time and brain for the upkeep of the service. The service provider is almost forced to maintain a good health of the service because all the customers are dependent on that service because any glitch will certainly lead to a mass outage of the service.
Resource sharing is architected through Multi-tenancy – i.e. a single database and code base is used by multiple customers.
Metered by Usage
Unlike the traditional software where you invest a significant amount of money upfront cloud services are like post-paid or pre-paid services. In a cloud service usage should be measured in terms of number of users, bandwidth consumption, virtual machines, hardware (like RAM or CPU) or server usage.As the customer pays based on the usage every parameter that is charged should be measurable.
This sounds simple and is self explanatory but as more and more device are getting connected everyday with various screen sizes it becomes quite challenging to offer a service that renders itself consistently on any device. Also, cloud services strive for a easier to signup service that can be used instantly and can be paid by using credit card.
Cloud is a new paradigm that is far more efficient than the traditional ways of using, developing and deploying a software. It not only helps service providers to offer an affordable and efficient service but also empowers the end users.
Do you think there’s any other difference between cloud and traditional software services?