Cloud system automatically control and optimize resource usage by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, or active user accounts). Resource usage can be managed, measured and reported to provide for both the provider and consumer of the service. Based on this metering and accounting capability of cloud computing, users pay only for service they are used. Thus, billing is based on resource consumptions such as CPU hours used, the volume of data moved, or gigabytes of data used.
Because the cloud provider rather than the customer maintains the computing resource, there is an effective outsourcing of maintenance tasks. Thus, the cloud provider maintains and updates the resources, whether the resource is hardware or software. Therefore, all repairs and replacement of the underlying hardware resources are transparent to the customer, as they do not affect the customer’s experience. While this might be true in the ideal case, there may be short intervals when a customer’s image is migrated from one hardware platform to another in order to perform maintenance or repair of a given physical platform, during this period of time the customer might not have any of the resources associated with this image available.
2.2.2. Cloud Computing Service Model
Cloud computing means using IT infrastructure as a service and that service may be anything from renting raw hardware to using third-party APIs. In practice, cloud service providers tend to offer services that can be grouped into three categories: Infrastructure as a Service (IaaS), platform as a Service (PaaS) and Software as a Service (SaaS).
the capability provided to the customer of IaaS is raw storage space, computing, or network resources with which the customer can run and execute an operating system, applications, or any software that they choose. The cloud customer is not able to control the distribution of the software to a specific hardware platform or change parameters of the underlying infrastructure, but the customer can manage the software deployed (generally from the boot level upward). Thus, dynamic scaling, usage-based pricing, reduced costs and access to superior IT resources are some of the benefits of IaaS.
SaaS is one of the service deployment mechanisms which enable user’s access different software from the cloud wherever they are, and whenever they need without installing it on their machine. Instead of installing, maintaining and managing complex software and hardware task, SaaS allows to simply accessing the application through a thin client interface, such as a web browser., the consumer uses an application without having hardware or software to buy, install, maintain, update, and manage the infrastructure on which the applications running. SaaS applications run on a SaaS provider’s servers and the provider manages access to the application, including security, availability, and performances using open standards apply at the application level 13.
Platform as a Service model describes a software environment in which a developer can create and deploy cloud application customized solutions within the context of the development tools that the platform provides. These applications could be for use by the client or accessible as a service to others. Creating applications using PaaS means that they are inherently cloud-enabled and the PaaS provider also provides the service upon which these applications run 14.
In the traditional model of software development applications are written in one environment, tested in another environment and deployed elsewhere 15. PaaS is a combination of a development platform and a solution stack, delivered as a service on demand.
In the case of PaaS, the cloud provider not only provides the hardware, but they also provide a toolkit and a number of supported programming languages to build higher-level services (i.e. software applications that are made available as part of a specific platform). The users of PaaS are typically software developers who host their applications on the platform and provide these applications to the end-users. Programming platforms and tools (such as .NET, java or python) and APIs for building cloud-based applications and services are exposed to developers who can create applications for testing or for commercial purposes for a minute fraction of the cost of provisioning server infrastructure for themselves. The difficulty with PaaS is that it locks the developer and the customer into a solution that is dependent upon the platform vendor. An application written in Python against Google’s API using the Google App Engine is likely to work only in that environment. There is considerable vendor lock-in associated with a PaaS solution.
TABLE 2.1: SERVICE DELIVERY MODELS 16