Resume PDF GitHub Telegram

System Design

Vertical (scale-up) — adding resources (CPU, RAM) to a single server. Horizontal (scale-out) — adding new servers to the pool. Horizontal scaling is considered more reliable for high load.
It states that a distributed system can only guarantee 2 out of 3 properties: Consistency, Availability, and Partition Tolerance.
NoSQL is a good fit when there's no rigid schema, when horizontal scaling is needed out of the box, or when working with unstructured data (documents, graphs).
A method of splitting a large database into smaller parts (shards) distributed across different servers to improve performance.

Contents