System Design: Replication
As application traffic increases, there may be the need to scale the architecture of the system to handle the increased load. In doing so, there are two main approaches that may be taken: Vertical scaling or scaling up: In vertical scaling, the entire system is moved to a more powerful "machine". This implies the entire system my be utilising an architecture where CPU, RAM and Storage exist on one machine(shared-memory architecture) or where multiple machines each with its own CPU and RAM share a single Storage(shared-disk architecture). Horizontal scaling, scaling out or shared-nothing architecture where multiple machines(nodes) with its own CPU, RAM and Storage are networked together by software to be able to handle the incoming load either by breaking the database into chunks stored on each device(partitioning) or creating copies of the database onto multiple devices(replication). Replication This basically means a copy of the same data is kept on multiple dev...