something important about system design
Whenever we are designing a large system, we need to consider a few things: What are the different architectural pieces that can be used? How do these pieces work with each other? How can we best utilize these pieces: what are the right tradeoffs? In this article, we’ll go through Load Balancing, Caching, Data Partitioning, Indexes, Replication and Consistent Hashing. These are the basics that you need to know about system design. Key Characteristics of Distributed Systems Before diving into a specific section, we’ll discuss the key characteristics of distributed system include Scalability, Reliability, Availability and Manageability. Scalability is the capability of a system, process, or a network to grow and manage increased demand. Any distributed system that can continuously evolve in order to support the growing amount of work is considered to be scalable. Horizontal scaling means that you can add more servers while Vertical scaling means that you scale by replacing the exist...