Infrastructure as a Service
Some vendors provide the infrastructure to build solutions, and you rent the hardware such as servers, load balancers, a firewall, and cables. You then configure these remotely and install your solutions on them. You can scale up by requesting more servers and reconfiguring the load balancer without purchasing more hardware. You can scale down at any time by reconfiguring the infrastructure you rented from the cloud service provider. This vendor approach is called Infrastructure as a Service (IaaS) because a customer can rent the infrastructure without having to forecast and provision for the highest possible demand in advance. In this approach, you are responsible for correctly configuring the rented infrastructure.
These are the most important points to remember about IaaS:
- The lower levels of the stack are managed by the vendor.
- Very few vendors actually provide an operating system. You are still responsible for managing everything, from the operating system to the applications.
- The obvious benefit of IaaS is that it frees you from the concerns of provisioning many physical or virtual machines.
Software as a Service
In another approach, you can rent a service offered by the vendor and then configure the service by using the interface provided by the vendor, without having to know what infrastructure the vendor uses to provide that service. This approach is called Software as a Service (SaaS) because you pay to use defined services. For example, Microsoft Exchange Online carries a per-mailbox charge. To configure it, you use a web application supplied by the vendor to request mailboxes, and name and dimension them. You receive a password for that user and nothing else is necessary—users can access their mailboxes immediately.
This proposed interface has little in common with the on-premises version of Microsoft Exchange. In an SaaS model, you do not have control over nor are you responsible for the hardware on which the service is installed. Similarly, you have no control over the operating system that runs the service, nor any control over the software apart from what the web user interface exposes to you. In other words, a vendor provides everything required to run the application, shielding you from all the underlying components.
Platform as a Service
The third approach is Platform as a Service, or PaaS. In this approach, you rent a platform on which you deploy your applications without configuring the infrastructure and without the limitations of the SaaS approach.
The Wikipedia definition for PaaS is as follows (Wikipedia, Platform as a Service, 2011, http://en.wikipedia....rm_as_a_service):
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 marshaling, 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.
The Windows Azure platform fits best in the PaaS category, because it doesn’t provide access to the underlying virtualization environment or operating system details such as the network interface, IP configuration, and disk management.
The key concepts to remember when dealing with PaaS are:
- The platform vendor provides and manages everything, from the network connectivity to the runtime.
- PaaS offerings reduce the developer burden by supporting the platform runtime and related application services.
- Developers can begin creating the business logic for applications almost immediately.
- PaaS, compared to traditional hosting solutions, offers the potential for significant productivity increases, because the cloud provider manages all the hardware and operational aspects of the cloud platform.
Cloud Services Defined
The responsibility of you and the vendor is summarized in the following figure.
As you can see in the figure, despite significant differences among the various offerings in the cloud computing industry, vendors provide a set of services that you can rent so that you do not have to manage layers (presented as white, below the line).
The definition of cloud computing from Wikipedia is as follows (Wikipedia, Cloud Computing, 2011, http://en.wikipedia....Cloud_computing):
This definition points out two important aspects of these offerings: the usage of distributed resources (IaaS, SaaS, and PaaS), and the abstraction of the underlying technology from the developers. You already learned about the first aspect. The second aspect is important because you can manage abstracted resources such as distributed storage without having to know much technical detail about how to configure it, secure it, and distribute it.