Scalability Primer
Definition
Vertically Scaling Up
-- to increate capacity of individual nodes through hardware improvement
-- hardware or infrastructure focused
Horizontally Scaling Out
-- increase overall capacity by adding more nodes
-- shifts the focus from maximizing the power of individual nodes to combining the power of many nodes.
-- more complex than vertical scaling
-- more fundamental influence on application structure.
-- software/development and architecture focused
Note:
Scalability is better described as elasticity since scaling down is also important in this model. People are used to extend/stretch capacity and rarely want to contract it.
Benefits
Vertically Scaling Up
--simple
Horizontally Scaling Out
-- commodity systems
-- unlimited growth
Constraints
Vertically Scaling Up
--can be costy
-- has a limit on maximum capacity
Horizontally Scaling Out-- complex on implementation and maintenance
-- each node is less efficient on resource usages due to overhead of scaling out support
Misc
Cloud-native applications allocate resources horizontally. and scalability is one of the benefits.The key to efficiently utilizing resources is stateless autonomous compute nodes. State
less 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.