One of the advantages of cloud infrastructure is the ability to scale infrastructure to meet demand. The options for scaling are:
Scaling Up / Down
Scaling Up / Down can also be referred to as vertical scaling and is when components within a single instance are increased or decreased. For example, adding more memory to a database server (scaled up) or increasing the number of processors in a web server (scaled up). When no longer needed the components could be removed (scaled down).
Scaling Out / In
Scaling Out / In can also be referred to as horizontal scaling and is when additional instances are adding / removed to increase / decrease capacity. For example, adding a second or third web server of the same specifications next to the original web server (scaled out). When no longer needed the instances could be removed (scaled in).
Why Scale?
Demands on infrastructure can vary depending on the time of year or even time of day, with infrastructure potentially seeing heavier workloads (e.g. higher network traffic on website, increased memory / processing requirements on backend database) during events such as festive sales. The opposite of this is infrastructure seeing lighter workloads during quiet periods (e.g. a business database may see little to no use outside of business hours if it’s only used by internal employees).
Under a capital expenditure (Cap-Ex) model the heavier workloads are planned for and infrastructure is built / purchased with those periods in mind. However, this could mean that the infrastructure is under utilised for long periods. If the opposite approach is taken and the infrastructure is planned for the average workload then it will probably fail during periods when heavier workloads hit. Accuracy around demand can be hard to get correct, with forecasting / demand management exercises that can take place to gauge future requirements.
Scaling allows for infrastructure to scale out to meet the needs of heavy work loads and then scale in when work loads get lighter. In a cloud environment the consumer would pay for the extra resources only whilst they are needed.
Cloud Elasticity
Cloud elasticity is how quickly a system can adapt (grow or shrink) dynamically depending on workload. The scaling of systems can be achieved automatically which gives many cloud providers rapid cloud elasticity.