Chapter 2. Horizontally Scaling Compute Pattern
This fundamental pattern focuses on horizontally scaling compute nodes. Primary concerns are efficient utilization of cloud resources and operational efficiency.
The key to efficiently utilizing resources is stateless autonomous compute nodes. Stateless nodes do not imply a stateless application. Important state can be stored external to the nodes in a cloud cache or storage service, which for the web tier is usually done with the help of cookies. Services in the service tier typically do not use session state, so implementation is even easier: all required state is provided by the caller in each call.
The key to operations management is to lean on cloud services for automation to reduce complexity in deploying and managing homogeneous nodes.
The Horizontal Scaling Compute Pattern effectively deals with the following challenges:
Cost-efficient scaling of compute nodes is required, such as in the web tier or service tier.
Application capacity requirements exceed (or may exceed after growth) the capacity of the largest available compute node.
Application capacity requirements vary seasonally, monthly, weekly, or daily, or are subject to unpredictable spikes in usage.
Application compute nodes require minimal downtime, including resilience in the event of hardware failure, system upgrades, and resource changes due to scaling.
This pattern is typically used in combination with the Node Termination Pattern (which covers concerns when releasing ...