Dynamic Horizontal Scaling CAT
The Dynamic Horizontal Scaling CAT provides a structure for a system that can dynamically scale resources out and in to facilitate the processing of varying workload. It is initiated by an automated scaling listener. The automated scaling listener is configured with a threshold that defines when new resources should be added, so that the actual workload is capable to handle.
Assume a book shop system that consists of four components: The book shop frontend, the automated scaling listener, the book shop management and the book shop database. The figure on the right illustrates the book shop system.The automated scaling listener monitors the incoming requests from the book shop frontend and distributes them to an connected replicable component. Depending on the monitored server utilization or another criteria that the architect has specified, the automated scaling listener can initiate that the replicable component is scaled in or out. The roles‘ constraints assure the characteristics of Dynamic Horizontal Scaling:
- The components that are scaled in and out should be stateless.
- The automated scaling listener, that distributes the workload and monitors the server utilization, is between the requester of the replicable component and the replicable component.
- There is no connector from the requester to the replicable component and the other way round.
A system that has to deal with varying workload.
Assume a system with a fixed number of component instances of a particular type. Furthermore, the system has to deal with a varying workload, i.e. periodic or random and unexpected workload. This static scaling of the system would lead to an under- or overprovision of resources. In turn, it leads to a performance lack or in high costs for the costumer as he pays for resources in non-peak phases that are not needed. Another option would be to reject requests that are not processable because the resources are fully utilized. However, from the costumers view it is not desirable as he looses clients and therefore profit.
Add an automated scaling listener, which manage the allocation and deallocation of resources depending on the workload. This component monitors the utilization of the resources and other performance criteria, like response times. When it detects that the current amount of resources are not sufficient to handle all requests or to fulfill the specified performance criteria, it will initiate the addition of further resources. Based on this tracking of communication between requester and replicable component, the automated scaling listener can decide to deallocate resources, e.g. in case of decreasing load.
In the following figure, we provide the CAT type for Dynamic Horizontal Scaling:
Assume the book shop system, shown in #Example. When the automated scaling listener detects that more resources are needed to handle all incoming requests or to fulfill a predefined criterion, it starts the initiation of further instances of the needed replicable component and allocates additional resources. This process is shown in the right figure. When the workload decreases, the automated scaling listener deallocates resources that become redundant to handle the actual workload.
Amazons Elastic Compute Cloud (EC2), OnApp Cloud, Windows Azure, Google App Engine
We identified the following benefits for Dynamic Horizontal Scaling:
- The system is elastic.
We are aware of the following liabilities for Dynamic Horizontal Scaling:
- The replicable components have to be stateless. Using dynamic horizontal scaling with stateful components requires the use of more sophisticated techniques to preserve the state while allocating and deallocating resources.
- Erl, T., Puttini, R., Mahmood, Z. "Cloud Computing: Concepts, Technology & Architecture". Prentice Hall Press, 2013.
- Fehling, C., Leymann, F., Retter, R., Schupeck, W., Arbitter, P. "Cloud Computing Patterns. Fundamentals to Design, Build, and Manage Cloud Applications". Springer, 2014.
- Furht, B., Escalante, A. "Handbook of Cloud Computing". Springer, 2010.