Monday, March 1, 2010

Introduction to Cloud Computing and Software as a Service (SaaS)

Introduction
Around 1960, after successfully installed the 1st packet switching based network (ARPANET), J.C. R. Licklider envisioned the concept of ‘Intergalactic Computer Network’ where the globe can be encircled by the complex net of all computers in the world. In the same era, John McCarthy, introduced the concept of utility computing in which computer can be used like other utilities for e.g. electricity, telephone etc. These two visionary concepts put the foundation of what is better known today as Cloud Computing.
This article is written with an aim to introduce the concept of cloud computing and explore in depth one of its widely accepted and useful model i.e. Software as a Service (SaaS).

Cloud Computing
Cloud Computing is a concept in which computing resources are made available on the internet and consumed by the clients as a demanded service. In-line with the other concepts in computing like grid, distributed and utility computing, cloud computing is a concept and different people have explained, defined and implemented it in different ways, but one of the best definition which could comprehensively defined cloud computing is


“Cloud Computing is the provisioning of dynamically scalable and often virtualized computing resources as demanded services over the internet”


Cloud computing has 3 major variant or models depending on the resources being exposed as service to the client. These are briefly defined below.


Platform as a Service (PaaS): In this model, the development platform is made available to the clients as demanded service over internet. The software, development and testing tools, configuration management tools, databases and all other required tools and APIs are provided by vendor in their environment. Developers can create, deploy and test the product in the provider’s platform. One of the best examples is the services provided by sales force (www.salesforce.com/platform)
Infrastructure as a Service (IaaS): In this model the complete IT infrastructure is made available in cloud as demanded services. This includes varieties of hardware, heterogeneous OS, globally distributed environments, commonly used enterprise solutions like HR, Payroll etc, data storage along with services like data security, authentication/authorization, backups, upgrade etc. Amazon’s Elastic Compute Cloud (EC2) is a good example of this category.
Software as a Service (SaaS): The most useful and wide accepted model in cloud computing is Software as a Service. In this model the software is exposed as demanded service over the cloud. Below section describe this model in depth along with its critical characteristics.

Software as a Service (SaaS)
Software as a Service model is a beautiful bouquet in which the concepts are picked up from different areas including Application Service Provider (ASP), hosted Solutions, Utility Computing, Virtualization and many more.
In SaaS model, vendor expose centrally managed software as on-demand service to the clients over Internet. This is against the orthodox in-premise or distributed model in which vendor distribute and install software in client’s environment and made it locally available.
SaaS model can further be understood by considering its top 10 characteristics†.

  1. Service Oriented Architecture (SOA): One of the important properties of any cloud computing model is ‘service’. In SaaS model the software is exposed as a service to the customer. This necessitates the adoption of service oriented architecture in the application.
  2. Hosted Environment: SaaS solutions are more often managed centrally and made available in hosted environment rather than at each client’s location.
  3. Virtualization: SaaS solutions should be deployed in virtual environment to support scalability, smooth upgrade and decoupling with underlying hardware.
  4. Multi-tenancy: SaaS solutions are believed to be deployed using multi-tenancy architecture where single application instance and data model is shared within multiple clients.
  5. Provisioning and Metering: SaaS solution should be provided with easy mechanism for tenant provisioning and metering the usage of the services.
  6. Service Elasticity: SaaS solution is said to be on-demand based services. Which means client should be able to use as little or as much as services as the business needs.
  7. Scalability: As SaaS solutions are deployed globally and provide elastic services, scalability becomes an essential characteristic of such solutions. More often, such solutions are deployed in cluster of virtualized server which can be add/remove services to meet the demand.
  8. Upgradability: SaaS solution should be provided with centralized easy upgradability. This include software and hardware upgradability.
  9. SLA Driven: SaaS solutions are driven by coherent licensing agreement based on per user per access basis.
  10. Availability and Self Healing: SaaS solutions are committed to provide complete availability and with failover mechanism. In case of failure, there will be a hot backup instance of the application ready to take over without disruption.
† Note that most of these characteristics are common for all models of cloud computing and hence can also be read as characteristics of cloud computing model.

Advantages of SaaS Model
SaaS solution uses multiple concepts and ideas to provide low cost business solutions. Some of the notable advantages associated with SaaS model are listed below.

  1. SaaS provide low cost solution. Businesses can obtain licenses to use software as per need basis.
  2. Customers can use service on pay-for-what-you-need basis depending on business needs.
  3. SaaS model avoid overhead of managing IT resources including software and hardware resources and hence facilitate organization to focus on the business.
  4. SaaS being web-native, thin clients like browsers may be used to access the software. Hence further reduces the cost at client end.
  5. SaaS solutions can easily be integrated with available business solutions at client end.
  6. SaaS solutions are scalable and virtualized. Providers can increase decrease the servers depending on service demand without changing the software architecture.
  7. Being designed in multi-tenant architecture, SaaS solution enables multiple customers and users to access the shared application and data model.

Challenges with SaaS Model:
Although SaaS model has many advantages to the business, it comes with few challenges as well which are listed below.

  1. As SaaS model is centrally managed and made available in hosted environment, it requires organizations to make valuable business data available in cloud, which could be a major threat.
  2. Security, integrity and reliability of critical business data is in vendor’s hand.
  3. Being a network-based access, the availability of a SaaS solution is subjected to network availability.
  4. Performance can be an issue as all request goes through cloud.
  5. One of the major concerns with this model is that not all software can be exposed as services.
  6. The last, but an important point is related with the fine terms and conditions mentioned in the agreement, which may be dangerous to the business sometimes. An article mentioning some of these terms is available here: http://webworkerdaily.com/2008/07/03/who-owns-your-online-documents/

Conclusion
Cloud Computing exposes computing resources (hardware and software) and services over internet as demanded services which help organizations by providing low cost IT solutions. Software as a Service model enables clients to use software as services over cloud and pay as per the usages. SaaS eliminates the need for software installation and maintenance at the client end and allows organizations for focus on core business activities.

About the Author
Ashish Arya has more than 7 years of experience in architecture and designing enterprise solutions using open source J2EE technologies. He also actively involved in designing SaaS solutions for banking and financial institutes.