Cloud computing utilizes resource pooling, sharing, and dynamic provisioning to optimize the use of physical computing resources across multiple users and applications. This model allows for higher resource utilization rates by sharing resources among various applications, which do not peak at the same time, while also enabling rapid provisioning of virtual machines. Multi-tenancy further enhances this efficiency by allowing different consumers to share the same resources without compromising security or performance.
Cloud computing utilizes resource pooling, sharing, and dynamic provisioning to optimize the use of physical computing resources across multiple users and applications. This model allows for higher resource utilization rates by sharing resources among various applications, which do not peak at the same time, while also enabling rapid provisioning of virtual machines. Multi-tenancy further enhances this efficiency by allowing different consumers to share the same resources without compromising security or performance.
Cloud data centers maintain a large pool of physical computing resources which is presented in virtual mode as infrastructure service. Resource sharing is another important feature of cloud computing. Any resource component from the pool of resources is not dedicatedly used to serve one particular user or application; rather they are shared among multiple users or applications. Through this increment in resource utilization rate, a comparatively smaller number of resources can serve a large number of users. Resource pooling, virtualization and sharing of resources ultimately converge to produce the dynamic behaviour of cloud systems. Cloud supplies the resources dynamically to users. This dynamic resource provisioning eliminates the need of permanent procurement of computing resources. This turns out to be a very effective technique as application demands or loads during computation do not remain same over a period of time.
8.1 RESOURCE POOLING The utility service model of cloud computing requires to maintain huge amount of all types of computing resources to provide different services to consumers. For this purpose, cloud service providers create pool of computing resources. Effective pooling or grouping of resources requires appropriate system designing and architectural planning. Resource pooling in cloud needs setting up of strategies by provider for categorizing and managing resources. Before resource pooling concept appeared, earlier people used to maintain discrete and independent set of resources known as silos. In traditional computing model, the silos are made with very little or no inter-connections. On the other hand in cloud computing, the consumers use well-connected pool of computing resources. They gain almost no knowledge or control over the locations from where physical resources are allotted to them. In its out-of-best scenario, the providers sometimes ask for choice of geographic location (country or continent) from where a consumer wants to get resources. But this choice is only possible in case of large service providers who have data centers at multiple geographic locations around the world. 8.1.1 Resource Pooling Architecture A resource pooling architecture is designed to combine multiple pools of resources where each pool groups together with identical computing resources. The challenge is to build an automated system which will ensure that all of the pools get together in synchronized manner. Computing resources can broadly be divided into three categories as o computer/server, o network and o storage. Hence, the physical computing resources to support these three purposes are essential to be configured in cloud data centers in good quantity. Again, a computer’s capability mainly depends on two resource components like o processor and o memory. Thus, the resource pooling mainly concentrates on developing rich pools of four computing resources like o processor, o memory, o network devices and o storage. 8.1.1.1 Computer or Server Pool Server pools are developed by building physical machine pools installed with operating systems and necessary system software. Virtual machines are built on these physical servers and combine into virtual machine pool. Physical processor and memory components from respective pools are later linked with these virtual servers in virtualized modes to increase capacity of the servers. Dedicated processor pools are made of various capacity processors. Memory pools are also built in similar fashion. Processor and memory are allotted to the virtual machines as and when required. Again, they are returned to the pools of free components when load of virtual server decreases. In reality, the pooling is implemented with other essential resources in more structured manner. 8.1.1 Resource Pooling Architecture A resource pooling architecture is designed to combine multiple pools of resources where each pool groups together with identical computing resources. The challenge is to build an automated system which will ensure that all of the pools get together in synchronized manner. Computing resources can broadly be divided into three categories as o Computer/server, o Network and o Storage. Hence, the physical computing resources to support these three purposes are essential to be configured in cloud data centers in good quantity. Again, a computer’s capability mainly depends on two resource components like processor and memory. Thus, the resource pooling mainly concentrates on developing rich pools of four computing resources like o Processor, o Memory, o Network devices and o Storage 8.1.1.1 Computer or Server Pool Server pools are developed by building physical machine pools installed with operating systems and necessary system software. Virtual machines are built on these physical servers and combine into virtual machine pool. Physical processor and memory components from respective pools are later linked with these virtual servers in virtualized modes to increase capacity of the servers. Dedicated processor pools are made of various capacity processors. Memory pools are also built in similar fashion. Processor and memory are allotted to the virtual machines as and when required. Again, they are returned to the pools of free components when load of virtual server decreases. 8.1.1.2 Storage Pool Storage is another essential resource with rapidly growing requirement, frequently accessed by applications as well as with the consumers of computing. Storage pools are made of block-based storage disks. They are configured with proper portioning, formatting and are available to consumers in virtualized mode. Data having stored into those virtualized storage devices are actually saved in these pre-configured physical disks. 8.1.1.3 Network Pool Elements of all of the resource pools and the pools themselves owned by a service provider remain well-connected with each other. This networking facilitates the cloud service at provider’s end. As the cloud computing offers the facility of creating virtualized networks to consumers, the pool of physical network devices are also maintained in data centers. Pools of networking components are composed of different preconfigured network connectivity devices like switches, routers and others. Consumers are offered virtualized versions of these components. They can configure those virtual network components in their own way to build their network. 8.4 RESOURCE SHARING Resource sharing leads to higher resource utilization rate in cloud computing. As a large number of applications run over a pool of resources, the average utilization of each resource component can be increased by sharing them among different applications since all of the applications do not generally attain their peak demands at same time. Cloud computing allows sharing of pooled and virtualized resources among applications, users and servers. The implementation needs appropriate architectural support. While servers are shared among users and applications the resources like storage, I/O and communication bandwidth are generally shared among several virtual machines. Resource sharing in utility service environment does not come without its own set of challenges. The main challenge is to guarantee the Quality of Service (QoS), as performance isolation is a crucial condition for QoS. The sharing may affect the run-time behaviour of other applications as multiple applications compete for the same set of resources. It may also be difficult to predict the response and turnaround time. Thus, the appropriate resource management strategies like optimization and decision-based self-organization of systems are required to maintain the requisite performance of the system. Resource sharing prevents performance isolation and creates the need for new resource management strategies to produce quality service in cloud computing environment. 8.4.1 Multi-tenancy The characteristic of a system that enables a resource component to serve different consumers (tenants), where by each of them being isolated from the other is referred to as multi-tenancy. This is a feature available in public cloud model in its true and complete sense. Thus, any discussion about multi-tenancy in cloud computing primarily refers to public cloud deployment by default. In multi-tenancy model, the users cannot pre-occupy any particular physical resource component. Resource is utilized by different users on temporary basis as and when required. Multi-tenancy enables the service provider to provide computing service to multiple isolated consumers (who are not associated with each other) using single and shared set of resources. Multi-tenancy in cloud computing has been materialized based on the concepts of ownershipfree resource sharing in virtualized mode and temporary allocation of resources from resource pool. It enables to lower computing costs and increases resource utilization which is important aspects of utility computing. The pooled resource components at cloud provider’s end are used to serve a large number of service consumers. Cloud computing does not allow permanent acquisition of any resource component by any consumer. Whenever a consumer needs resources, appropriate resource components are delivered to the consumer in virtualized mode. The resources again get released whenever that consumer’s needs are fulfilled and been returned to the pool of available or free resources which can be used to serve some other consumer’s requirements in future. Thus, there is no one-to-one mapping between a consumer and a resource component in terms of resource use. Neither a resource component is dedicatedly used for some particular application. Resource components are allotted to users and applications solely on- availability basis. This increases resource utilization rate and in turn decreases investment as well. In the cloud computing environment where a cloud service provider uses to serve a large number of consumers, this resource-sharing model through multi-tenancy has been capable to be changed into an effective mechanism for providing quality service at low cost. Multi-tenancy in cloud computing is largely enabled by the ideas of resource sharing in virtualized mode and dynamic resource allocation from resource pool. 8.4.1 Types of Tenancy Tenants of a system (multi-tenant system) can either be outsides or even insiders within an organization (like multiple departments within an organization) where each of the tenants needs their own protected zones. In cloud computing whenever multi-tenancy is discussed, the focus shifts towards public cloud environment as the co-tenants being mutually exclusive or unknown to each other, share same computing infrastructure ideally without compromising their individual security and privacy. However, the idea of multi-tenancy also exists in community cloud and even in private cloud to some extent in alternative sense. Unlike the exclusiveness of the isolation and individuality of each tenant of a public cloud, the co-tenants in a community cloud are not mutually exclusive to each other as they belong to the same community and share similar interests. In private cloud, the concept of multi-tenancy is limited within the sub co-tenants internal to a single organization (or under a single tenant). The tenancy requirements of public and private clouds are almost similar irrespective of the fact that one has external co-tenants while the other has internal co-tenants. Multi-tenancy in its actual sense allows co-tenants external or unrelated to each other. While existence of external co-tenant is a unique feature of public cloud, the private cloud only allows sub-co-tenants under one tenant. 8.4.2 Tenancy at Different Level of Cloud Services In a computing environment, the idea of tenancy applies at different levels from infrastructure (like storage) at the lowest layer up to application interface at the top. Similarly in cloud computing, the multi-tenancy is not limited at IaaS level, rather it covers PaaS and SaaS also. The consumers there enjoy the facility at various levels depending on the degree of multitenancy offered by a cloud service. However it is evident that by incorporating multi-tenancy at the infrastructure level, all layer of cloud services automatically become multi-tenant to some degree; but that should not encourage anyone to limit multi-tenancy at IaaS level only, rather it should be implemented to its highest degree. At IaaS level, the multi-tenancy provides shared computing infrastructure resources like servers, storages etc. At this level, multi-tenancy is achieved through virtualization of resources and different consumers share same set of resources through their virtual representation without affecting or being aware about one another. At PaaS level, the multi-tenancy means sharing of operating system by multiple applications. Applications from different vendors (tenants) can be run over same OS instance (to be offered as SaaS). This removes the need of allocating separate virtual machines per application by improving the maintenance and utilization of OS level capabilities. Cloud Computing At SaaS level, the multi-tenancy refers to the ability of a single application instance and/ or database instance (that is one database instance being created in some database servers) in order to serve multiple consumers. Consumers (tenants) of SaaS share same application code base as well as database tables and codes (like procedure, functions etc.). Data of multiple consumers which are stored in same set of tables are differentiated by the respective consumer numbers. Here, the separation of data is logical only although consumers get the feeling of physical separation. For application, the tenants may have the capability of customizing application functionalities or view of application interface but they cannot edit application code as the same application instance serves other consumers (tenants) also. Multi-tenancy eases application maintenance (like updates) and makes it economical for provider as well as for the consumers. In single-tenancy model, each consumer can be given the rights of the edit to application code as separate application instance is maintained for every consumer. Not only at IaaS layer, multi-tenancy also works at all other levels of cloud services. 8.5 RESOURCE PROVISIONING In traditional computing, whenever a new server (or virtual server) is required to support certain workload, it takes lots of efforts and time of administrator to install and supply the server. Current age computing needs rapid infrastructure provisioning facility to meet the varying demands of the consumers. With the emergence of virtualization technology and cloud computing IaaS model, it is now just a matter of minutes to achieve the same provided required volume of resources are being available. Thus, provisioning of a new virtual machine saves lots of time and effort in cloud. One can create a virtual server through a self-service interface which is considered as one of the most attractive feature of cloud. Flexible resource provisioning is a key requirement in cloud computing. To achieve this flexibility, it is essential to manage the available resources intelligently when required. The planning of resources must be performed in a way so that resources can be provisioned to applications rapidly and dynamically in a planned manner. Cloud provisioning is the allocation of cloud provider’s resources to the consumers. 8.5.1 The Autonomic Way Resource provisioning in cloud is the allocation of a cloud provider’s resources directly to the consumers or to the applications. When a consumer asks for resource, cloud provider must create appropriate number of virtual machines (VMs) in order to support the demand and should also allocate physical resources accordingly. This provisioning is an automated process in cloud which is designed by applying artificial intelligence and is known as autonomic resource provisioning. The purpose of autonomic resource provisioning is to automate the allocation of resources so that the overall resource demand can be managed efficiently by minimum amount of resources. One resource is allotted to different applications or consumers. This becomes possible since application loads varies with time. Through autonomic approach, computing Resource Pooling, Sharing and Provisioning resources can be rapidly provisioned and released with minimal management effort from a shared pool of configurable resources as on demand. 8.5.2 Role of SLA (Service Level Agreements) Consumers typically enter into contract with cloud providers which describe the expected requirements of computing resource capacity being required for their applications. This contract is known as service level agreements (SLAs). A cloud provider, after combining all such SLAs, can plan for the total amount of physical resources they have to keep as prepared to support all of its consumers so that those can be allocated to users when their applications would run. This allocation is done dynamically by some provisioning algorithms that map virtual machines (VMs) running end-user applications into physical cloud infrastructure (compute nodes). Cloud providers estimate the resource requirements of consumers through the SLA contract that consumers make with their providers. 8.5.3 Resource Provisioning Approaches Efficient resource provisioning is a key requirement in cloud computing. Cloud consumers do not get direct access to physical computing resources. The provisioning of resources to consumers is enabled through VM (virtual machine) provisioning. Physical resources from resource pool are made available to those VMs which in turn are made available to consumers as well as for the applications. Physical resources can be assigned to the VMs using two types of provisioning approaches like static and dynamic. In static approach, VMs are created with specific volume of resources and the capacity of the VM does not change in its lifetime. In dynamic approach, the resource capacity per VM can be adjusted dynamically to match work-load fluctuations. Computing resources in cloud computing are provisioned to consumers through virtual machine provisioning. 8.5.3.1 Static Approach Static provisioning is suitable for applications which have predictable and generally unchanging workload demands. In this approach, once a VM is created it is expected to run for long time without incurring any further resource allocation decision overhead on the system. Here, resource-allocation decision is taken only once and that too at the beginning when user’s application starts running. Thus, this approach provides room for a little more time to take decision regarding resource allocation since that does not impact negatively on the performance of the system. Although static provisioning approach does not bring about any runtime overhead it has major limitations also. This provisioning approach fails to deal with un-anticipated changes in resource demands. When resource demand crosses the limit specified in SLA document it causes trouble for the consumers. Again from provider’s point of view, some resources remain unutilized forever since provider arranges for sufficient volume of resources to avoid SLA violation. So this method has drawback from the viewpoint of both provider as well as for consumer. In static provisioning, resources are allocated only once during the creation of VMs. This leads to inefficient resource utilization and restricts the elasticity. 8.5.3.2 Dynamic Approach With dynamic provisioning, the resources are allocated and de-allocated as per requirement during run-time. This on-demand resource provisioning provides elasticity to the system. Providers no more need to keep a certain volume of resources unutilized for each and every system separately, rather they maintain a common resource pool and allocate resources from that when it is required. Resources are removed from VMs when they are no more required and returned to the pool. With this dynamic approach, the processes of billing also become as pay- per-usage basis. Dynamic provisioning technique is more appropriate for cloud computing where application’s demand for resources is most likely to change or vary during the execution. But this provisioning approach needs the ability of integrating newly- acquired resources into the existing infrastructure. This gives provisioning elasticity to the system. Dynamic provisioning allows system to adapt in changed conditions at the cost of bearing run-time resource allocation decision overhead. This overhead leads some amount of delay in system but this can be minimized by putting upper limit on the complexity of provisioning algorithms. In dynamic VM provisioning, resources are allocated as per application requirement during run-time. Table 8.1 Comparison between static and dynamic resource provisioning approaches
Static Provisioning Dynamic Provisioning
Resource allocation decision can be For an application, resource allocation made once only for an application. decisions can be made number of times. Resource allocation decision should Decision can be taken even after happen before starting of the starting of the application. application. This approach does not provide scope It provides scope for elasticity to the for elasticity to a system. system. It restricts the scaling. It enables the scaling. It does not introduce any resource It incurs resource allocation decision allocation decision overhead. overhead on system Resource once allotted cannot be Allotted resources can be returned returned. again. It is suitable when load pattern is It is suitable for applications with predictable and more or less varying workload unchanging. It introduces under-provisioning and It resolves the under-provisioning and overprovisioning of resource overprovisioning of resource problems. problems. 8.5.3.3 Hybrid Approach Dynamic provisioning addresses the problems of static approach, but introduces run-time overhead. To tackle with this problem, a hybrid provisioning approach is suggested that combines both static and dynamic provisioning. It starts with static provisioning technique at the initial stage of VM creation and then turns it into dynamic re-provisioning of resources. This approach can often effectively address real-time scenario with changing load in cloud computing. 8.5.4 Resource Under-provision and Over-provision Problems of Traditional Computing Traditional computing systems mostly follow static resource provisioning approach. But, it is very difficult to correctly predict the future demand of any application (and hence the resource requirement for the application) despite rigorous planning and efforts. This naturally results in under-provision or over-provision of resources in traditional environment. When demand for computing resources crosses the limit of available resources, then a shortage of resource is created. This scenario is known as under-provision of resource. A simple solution to this problem is to reserve sufficient volume of resources for an application so that resource shortage can never happen. But this introduces a new problem. In such case, most of the resources will remain unutilized for majority of time. This scenario is known as overprovision of the resources. Under-provisioning problem occurs when the reserved resources are unable to fully meet the demand. The over-provisioning problem appears when the reserved volume of resource for an application never falls below the estimated highest- required amount of resource for the application considering the varying demand. In such case, since for most of the time, the actual resource demand remains quite lesser than the reserved amount it ultimately turns into un- utilization of valuable resource. This not only causes wastage of resource but also increases the cost of computation. Resource over-provisioning problem occurs when the reserved resources remain unused for most of the time. While over-provisioning wastes costly resources, under-provisioning degrades application performance and causes business loss. The static provisioning approach causes the trouble for vendors also. Vendors meet consumer’s SLA requirements through resource over- provisioning in order to meet worst case demands. However, since application demand remains low most of the time resource utilization rate also remains low. This restricts the vendors to deliver services at lower cost. Cloud computing addresses this issue by dynamic provisioning of resources using virtualization. 8.5.5 Resource Provisioning Plans in Cloud Consumers can purchase cloud resources from the provider through web form by creating the account. Cloud providers generally offer two different resource provisioning plans or pricing models to fulfil consumers’ requirements. These two plans are made to serve different kind of business purposes. The plans are known as short-term on-demand plan and long-term reservation plan. Most commercial cloud providers offer both of the plans. 8.5.5.1 Short-Term On-Demand Plan In this pricing model, resources are allotted on short-term basis as per demand. When demand rises, the resources are provisioned accordingly to meet the need. When demand decreases, the allotted resources are released from the application and returned to the free resource pool. Consumers are charged on pay-per-usage basis. So, with this on-demand plan, the resource allocation follows the dynamic provisioning approach to fit the fluctuated and unpredictable demands. In the short-term on-demand plan, it is the responsibility of the provider to ensure application performance by provisioning resources during high demand (the demand from multiple consumers at same time). This requires appropriate planning at provider’s end. Estimation of resource requirements during high demand plays the vital role under this pricing model. Application performance under short-term on-demand plan solely depends on provider’s capability in estimating overall resource demand (of all consumers) during peak hours. 8.5.5.2 Long-Term Reservation Plan In long-term reservation plan (also known as ‘advance provisioning’), a service contract is made between the consumer and the provider regarding requirement of resources. The provider then arranges in advance and keeps aside a certain volume of resources from the resource pool to support the consumer’s needs in the time of urgency. This arrangement of appropriating resources is done before starting of the service. In this model of resource provisioning, pricing is not on-demand basis. Rather it is charged as a one-time fee for a fixed period of time generally counted in months or years. At provider’s end, the computational complexity as well as the cost is less under this plan in comparison to the on-demand plan. This is because the provider becomes aware about the maximum resource requirement of the consumer and keeps the resource pool ready to supply resources to meet demands. This reduces the provider’s cost (of planning and implementation) and in effect the consumers may get the service in much cheaper rate (generally when long term contract is made) than the on-demand plan if hourly usage rates are considered. The problem of the reservation plan is, since a fixed volume of resources is arranged as per the SLA there are possibilities of under-provisioning or over-provisioning of resources. It is important for the cloud consumer to estimate the requirements carefully so that those problems can be avoided and at the same time the resource provisioning cost could minimize. This goal can be achieved through an optimal resource management plan. Application performance under long-term reservation plan depends on consumer’s ability to estimate their own resource demand in advance. 8.5.6 VM Sizing VM sizing refers to the estimation of the amount of resources that should be allocated to a virtual machine. The estimation is made depending on various parameters extracted out of requests from consumers. In static approach of resource provisioning, the VM size is determined at the beginning of the VM creation. But in dynamic approach of resource provisioning, the VM size changes with time depending on application load. The primary objective of VM sizing is to ensure that VM capacity always remains proportionate with the workload. Proper VM sizing leads to optimal system performance. VM sizing can be maintained in two different ways. Traditionally, VM sizing is done on a VM-by-VM basis which is known as individual-VM based provisioning. Here, resources are allotted to each virtual machine depending on the study of its previous workload patterns. When additional resources are required for any VM to support load beyond its initial expectation, the resources are allotted from the common resource pool. The other way is joint-VM provisioning approach where resources to VMs are provisioned in combined way so that the unused resources of one VM can be allocated to other VM(s) when they are hosted over the same physical infrastructure. This approach takes advantage of the dynamic VM demand characteristics. Unutilized resources of less loaded VMs can be utilized in other VMs during their peak demand. This leads to overall resource capacity saving at provider’s end. This technique is also known as VM multiplexing. Joint-VM provisioning saves significant volume from overall resource capacity compared to individual VM-based provisioning technique. 8.5.7 Dynamic Provisioning and Fault Tolerance Dynamic resource provisioning brings many advantages to cloud computing over traditional computing approach. It allows runtime replacement of computing resources and helps to build reliable system. This is done by constantly monitoring over all the nodes of a system executing some of the particular tasks. Whenever some of those nodes show low reliability over a predetermined period of time, a new node is introduced into the system to replace that defective or low performing node. This little effort turns the whole cloud system being more tolerant to faults. The reliability of nodes can be measured by monitoring various parameters like finding the number of faults occurred in near past. 8.5.7.1 Zero Downtime Architecture: Advantage of DynamicProvisioning The dynamic resource provisioning capability of cloud systems leads to an important goal of system design which is zero-downtime architecture. One physical server generally facilitates or hosts multiple virtual servers. Hence, the physical server acts as the single point of failure for all of the virtual systems it creates. But the dynamic provisioning mechanism immediately replaces any crashing physical system with a new system instantly and thus the running virtual system gets a new physical host without halting. Dynamic VM provisioning facilitates the idea of zero-downtime architecture. Physical Server Physical Server A1 A2
Virtual Server Live VM Migration Virtual Server
A1 A2
VM Status Monitoring and Load Migration Module
Application initially Application loads shift to
supported by A2 server later A1 server
Application Instance 1
Application Instance 2
Fig : Live VM migration during failure of physical server
Figure demonstrates how live VM migration maintains zero downtime during
failure of physical host. Here, the virtual server A1 (VM-A1) was hosted by physical server A1 and two applications were running on VM-A1. When physical server ‘A1’ crashes, VM-A1 is shifted to a new VM with current system status and all of the applications running in VM-A1 have been migrated to VM-A2 which is hosted by physical server ‘A2’. Thus, the applications remain unaffected by the effects of zero downtime. SUMMARY ❖❖ Cloud service providers maintain huge volumes of computing resources at data centers. These resources are organized in groups and each group has similar types of resource components. This grouping of resources in suitable structure for efficient and effective resource management is known as pooling. ❖❖ Cloud service providers have been able to produce high computational performance through pooled commodity computing resources. This frees any IaaS provider from the need of using costly and specialized hardware components. This is known as ‘commoditization of data centers’. ❖❖ Virtualized pools of commodity resources then undergo standardization, system automation and optimization. ❖❖ Resources in cloud computing are shared among multiple users following multi-tenancy model of sharing. In this model, resources are allotted to users or applications on temporary basis as per requirement. Hence, it becomes possible to prevent the permanent acquisition of resources by IaaS service consumers. ❖❖ IaaS facilities the allotment of computing resources to consumers or applications through virtual machines. This provisioning happens through an automated process and is known as ‘autonomic resource provisioning’. ❖❖ Resources in cloud computing are also allotted dynamically as per the requirement. Consumers can use resources under short-term or long-term plans offered by the providers. ❖❖ Dynamic resource provisioning is one of the fascinating features of cloud computing. It eliminates the key problems of over-provisioning and under- provisioning of resources. Thus, computing becomes cheaper and its performances elevate. ❖❖ The dynamic resource provisioning capability of cloud systems leads to a critical goal system design, namely ‘zero downtime architecture’ which does not let the system go down during any physical component crash.