In practice, cloud service providers tend to offer services (ie. Cloud Computing Service Models) that can be grouped into three categories: software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (Iaas).
1. Software as a service (SaaS)
Software as a service (SaaS) is software that is developed and hosted by the SaaS vendor and which the end user accesses over the Internet. Unlike traditional applications that users install on their computers or servers, SaaS software is owned by the vendor and runs on computers in the vendor’s data center (or a collocation facility). A single instance of the software runs on the cloud and services multiple end users or client organizations. Broadly speaking, all customers of a SaaS vendor use the same software: these are one-size-fits-all solutions. Well known examples are Salesforce.com, Google’s Gmail and Apps, instant messaging from AOL, Yahoo and Google, and Voice-over Internet Protocol (VoIP) from Vonage and Skype.
SaaS has four maturity levels as following:
- Level 1: Ad-Hoc/Custom
- Level 2: Configurable
- Level 3: Configurable, Multi-Tenant-Efficient
- Level 4: Scalable, Configurable, Multi-Tenant-Efficient
Advantages of Saas
- Accessible from anywhere with an internet connection
- No local server installation
- Pay per use or subscription based payment methods
- Rapid scalability
- System maintenance (backup, updates, security, etc) often included in service
- Possible security improvements, although users with high security requirements (e.g., large corporations) may find Saas a security concern
2. Platform as a service (PaaS)
Platform as a service (PaaS) provides virtualized servers on which users can run applications, or develop new ones, without having to worry about maintaining the operating systems, server hardware, load balancing or computing capacity. A PaaS environment provides compute power by providing a runtime environment for application code. Therefore the unit of deployment is a package that contains application code or some compiled version of the application code. Paas offerings may include facilities for application design, application development, testing, deployment and hosting as well as application services such as team collaboration, web service integration and marshalling, database integration, security, scalability, storage, persistence, state management, application versioning, application instrumentation and developer community facilitation. These services may be provisioned as an integrated solution over the web. Another capability of PaaS environments is that scale can be specified via configuration and provided automatically by the environment. For example, if you need three instances of a web user interface in order to deal with anticipated load then this could be specified in a configuration file and the environment would deploy your three instances automatically. For example, Microsoft’s Azure Services Platform supports the .NET Framework and PHP. As another example Google’s App Engine supports Java and Python.
- The ability to form and share code with ad-hoc or pre-defined or distributed teams greatly enhance the productivity of PaaS offerings.
- Integration with web services and databases.
- PaaS offerings provide developers insight into the inner workings of their applications, and the behavior of their users.
Infrastructure as a service (IaaS)
In its purest incarnation Infrastructure as a Service (IaaS) offers compute power, storage, and networking infrastructure (such as firewalls and load balancers) as a service via the public internet. An IaaS customer is a software owner that is in need of a hosting environment to run their software. Originally the term for this type of offering was Hardware as a Service (HaaS). IaaS vendors use virtualization technologies to provide compute power. Therefore the unit of deployment is a virtual machine which is built by the software owner. The best known example is Amazon’s Elastic Compute Cloud (EC2) and Simple Storage Service (S3). Commercial examples of IaaS include Joyent, whose main product is a line of virtualized servers that provide a highly available on-demand infrastructure. Services are typically charged by usage and can be scaled dynamically, i.e. capacity can be increased or decreased more or less on demand.
- Infrastructure as a service offered in a cloud computing environment allows developers to entirely control the provisioning, configuration and deployment of virtual machines. The IaaS cloud’s is used for everything from building and validating new applications to operating production environments that require scalability.