Workload Distribution and Resource Pooling Architecture
Cloud architects must implement several concepts and best practices to build highly scalable applications. These concepts are critical because of expanding datasets, unpredictable traffic patterns, and the demand for faster response times. Two common foundational cloud architecture models are workload distribution architecture, and resource pooling architecture.
Workload Distribution Architecture
Workload distribution architecture uses IT resources that can be horizontally scaled with the use of one or more identical IT resources. This is accomplished through the use of a load balancer that provides runtime logic which distributes the workload among the available IT assets evenly. This model can be applied to any IT resource and is commonly used with; distributed virtual servers, cloud storage devices, and cloud services. In addition to a load balancer and the previously mentioned resources, the following mechanisms can also be a part of this model:
- Cloud Usage Monitor that can carry out run-time tracking and data processing.
- Audit Monitor used for monitoring the system as may be required to fulfill legal requirements.
- Hypervisor which is used to manage workloads and virtual hosts that require distribution.
- Logical network perimeter which isolates cloud consumer network boundaries.
- Resource clusters commonly used to support workload balancing between cluster nodes.
- Resource replication which generates new instances of virtualized resources under increased workloads.
The workload architecture model basically functions as follows; Resource A and resource B are exact copies of the same resource. Inbound requests from consumers are handled by the load balancer which forwards the request to the appropriate resource dependent on workload being handled by each resource. In other words, if resource A is busier than resource B, it will forward the resource request to resource B. In this manner this model distributes the load among the available IT resources based on workload of each resource.
The following example on how this could be applied in a business environment is based on information provided by Cloud Patterns web. A system contains two (2) virtual instances of a cloud-based domain controller on two (2) different physical servers. To increase performance, domain queries would be received by a load balancer which would then forward the query to the appropriate instance of the domain controller based on the current workload of each instance. In this manner the workload is evenly distributed between both of the servers and domain controller instances.
Resource Pooling Architecture
Resource pooling architecture is based on pooling identical IT resources into groups. Pools can be physical and virtual resources. These identical resources are automatically grouped and maintained by the system which ensures they remain synchronized. Examples of resource pools are as follows:
- Physical server pools which consist of networked servers that already have operating systems and other required applications installed and are ready for immediate use.
- Virtual server pools usually configured from templates pre-chosen by the customer when they are provisioned.
- Storage pools consisting of file, or, block based storage containers.
- Network pools which consist of different pre-configured network devices. Example; virtual firewalls and switches used for redundant connections, load balancing, and link aggregation.
- CPU pools which allot CPU resources to virtual servers.
- Physical RAM pools that can be used to vertically scale newly provisioned physical servers.
Resource pools can become very complex so it is best to organize them in a hierarchical structure to form parent, sibling, and nested pools. After pools have been defined, multiple instances of resources from each pool can be used to create an in-memory pool of live IT resources which can be pulled and used on demand by the system as needed. Resource pool architecture uses many of the same type of mechanisms as workload distribution architectures as follows:
- Audit pools to monitor resource pool usage.
- Cloud Usage Monitor used at run-time to track and synchronize IT resources and underlying management systems.
- Hypervisor which manages virtual server pools as well as virtual server access to other resource pools.
- Logical Network Perimeter that logically organizes and isolates resource pools.
- Pay-Per-Use Monitor which collects usage and billing information based on how customers use cloud IT resources.
- Remote Administration System which is used to interface with back-end systems in order to administer resource pools.
- Resource Management System which provides customers with tools and permission management options used in administering resource pools.
- Resource Replication which generates new instances of resources for resource pools as demand dictates.
Sharing identical IT resources for scalability purposes can be error-prone and a problem to keep them fully synchronized on an on-going basis. The solution for this problem is to use an automated synchronization system to group identical IT resources into pools and to maintain their synchronicity.
The following is an example of how resource pooling can be used in business using examples found at Cloud Pattern web. Resource pool architecture can be used to both horizontally or vertically scale systems depending on how the pools are organized. Example; resource pools of CPU and RAM can be used to vertically scale an IT resource such as a virtual server if workload increases and more CPU and RAM resources are needed. The virtual server can pull these resources from the CPU and RAM resource pools. In a live business environment using an application server for example, as workloads increase a virtual server hosting the applications requires more CPU cycles and RAM to compute. The virtual server requests these resources from the Resource Management System which allocates more CPU and RAM resources from the CPU and RAM resource pool to vertically scale the server. When the load drops, these resources are released and available to the resource pool again. Resources pools such as physical or virtual server pools can be used to horizontally scale systems by putting additional virtual servers from the virtual server pool online when demand increases, then shut them down again when workloads go back down. In a manner similar to vertically scaling a virtual server, the virtual server can instead request from the Resource Management System additional virtual servers from the virtual server pool, as well as additional network resources for load balancing from the Logical Network pool to horizontally scale resources to account for the increased workload. These resources are then released when the workload decreases.
Cloud systems require methods to be able to dynamically scale IT resources up or down as demand dictates, and also have mechanisms that provide redundancy and easy management of IT resources. Workload distribution architecture provides a method of distributing workloads across multiple copies of an IT resource, and Resource Pooling provides a method of automatically synchronizing IT resources through the use of resource pools, as well as providing a method for dynamically allocating resources on demand. Taken together, they can be used to design and implement complex architectures that allow for automatic scaling of IT resources as workloads increase and decrease, as well as providing mechanisms for synchronizing IT resources, providing system redundancy, balancing loads between resources, and the management and auditing of IT resources.
Cloud Patterns Load Balancing. Load Balanced Virtual Server Instances. Retrieved August 17, 2016, from Cloud Patterns, http://cloudpatterns.org/design_patterns/load_balanced_virtual_server_instances.
Cloud Patterns Resource Pooling. Resource Pooling. Retrieved August 17, 2016, from Cloud Patterns, http://cloudpatterns.org/design_patterns/resource_pooling.