The app for independent voices

๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐—ฎ๐—ป๐˜€๐˜„๐—ฒ๐—ฟ ๐˜€๐˜†๐˜€๐˜๐—ฒ๐—บ ๐—ฑ๐—ฒ๐˜€๐—ถ๐—ด๐—ป ๐—พ๐˜‚๐—ฒ๐˜€๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐˜‚๐˜€๐—ถ๐—ป๐—ด ๐˜๐—ต๐—ฒ ๐—ฆ๐˜†๐˜€๐˜๐—ฒ๐—บ ๐——๐—ฒ๐˜€๐—ถ๐—ด๐—ป ๐— ๐—ฎ๐˜€๐˜๐—ฒ๐—ฟ ๐—ง๐—ฒ๐—บ๐—ฝ๐—น๐—ฎ๐˜๐—ฒ?

Here is the System Design Master Template, which you can use as a basis for any system design problem you may encounter during an interview.

A list of topics that you should know:

๐Ÿญ. ๐—Ÿ๐—ผ๐—ฎ๐—ฑ ๐—•๐—ฎ๐—น๐—ฎ๐—ป๐—ฐ๐—ฒ๐—ฟ. Distributes inbound requests across healthy nodes using rules such as round-robin or least-connections. Keeps latency stable and enables rolling upgrades without downtime.

๐Ÿฎ. ๐—”๐—ฃ๐—œ ๐—š๐—ฎ๐˜๐—ฒ๐˜„๐—ฎ๐˜†. Single entry that authenticates callers, enforces quotas, and routes each call to the right microservice. It can also aggregate responses so that clients hit a single endpoint.

๐Ÿฏ. ๐—–๐—ผ๐—ป๐˜๐—ฒ๐—ป๐˜ ๐——๐—ฒ๐—น๐—ถ๐˜ƒ๐—ฒ๐—ฟ๐˜† ๐—ก๐—ฒ๐˜๐˜„๐—ผ๐—ฟ๐—ธ (๐—–๐——๐—ก). An edge network that caches immutable assets near users, cutting round-trips and shielding origins from spikes. Often handles TLS and compression as well.

๐Ÿฐ. ๐— ๐—ฒ๐˜๐—ฎ๐—ฑ๐—ฎ๐˜๐—ฎ ๐—ฆ๐—ฒ๐—ฟ๐˜ƒ๐—ฒ๐—ฟ. Stores pointers, permissions, and object properties in a small, fast store. Replicates data for reads and writes to block servers when files are changed.

๐Ÿฑ. ๐—•๐—น๐—ผ๐—ฐ๐—ธ ๐—ฆ๐—ฒ๐—ฟ๐˜ƒ๐—ฒ๐—ฟ. Persists data chunks on commodity disks, replicates across racks, and self-heals after failures. Clients stream blocks in parallel for throughput.

๐Ÿฒ. ๐—ฆ๐—ต๐—ฎ๐—ฟ๐—ฑ / ๐—ฃ๐—ฎ๐—ฟ๐˜๐—ถ๐˜๐—ถ๐—ผ๐—ป ๐— ๐—ฎ๐—ป๐—ฎ๐—ด๐—ฒ๐—บ๐—ฒ๐—ป๐˜. Splits a growing dataset by user ID, time, or hash so that each DB instance remains small. Rebalances shards when a node fills or a hot key appears.

๐Ÿณ. ๐—–๐—ฎ๐—ฐ๐—ต๐—ฒ (๐—ฅ๐—ฒ๐—ฑ๐—ถ๐˜€/๐— ๐—ฒ๐—บ๐—ฐ๐—ฎ๐—ฐ๐—ต๐—ฒ๐—ฑ). Holds hot keys in RAM with TTL, counters, and locks. Reduces read latency from milliseconds to microseconds and offloads the primary store.

๐Ÿด. ๐——๐—ถ๐˜€๐˜๐—ฟ๐—ถ๐—ฏ๐˜‚๐˜๐—ฒ๐—ฑ ๐— ๐—ฒ๐˜€๐˜€๐—ฎ๐—ด๐—ถ๐—ป๐—ด (๐—ž๐—ฎ๐—ณ๐—ธ๐—ฎ/๐—ฅ๐—ฎ๐—ฏ๐—ฏ๐—ถ๐˜๐— ๐—ค). Durable log that decouples producers from consumers, provides replay, back-pressure, and at-least-once delivery. Enables event-driven designs.

๐Ÿต. ๐—ก๐—ผ๐˜๐—ถ๐—ณ๐—ถ๐—ฐ๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—ฆ๐—ฒ๐—ฟ๐˜ƒ๐—ถ๐—ฐ๐—ฒ. Pulls events from the queue, batches them, and pushes email, SMS, or mobile alerts. Retries with exponential back-off and user-level throttling.

๐Ÿญ๐Ÿฌ. ๐—๐—ผ๐—ฏ ๐—ช๐—ผ๐—ฟ๐—ธ๐—ฒ๐—ฟ๐˜€. Stateless containers that pick tasks such as video encoding or thumbnail generation from a queue. Scale horizontally by adding replicas.

๐Ÿญ๐Ÿญ. ๐——๐—ถ๐˜€๐˜๐—ฟ๐—ถ๐—ฏ๐˜‚๐˜๐—ฒ๐—ฑ ๐—Ÿ๐—ผ๐—ด๐—ด๐—ถ๐—ป๐—ด ๐—ฎ๐—ป๐—ฑ ๐—ง๐—ฟ๐—ฎ๐—ฐ๐—ถ๐—ป๐—ด. Ships structured logs and distributed spans to a central store, then indexes by request ID. Let's you trace a single user action across dozens of services.

๐Ÿญ๐Ÿฎ. ๐—•๐—ฎ๐˜๐—ฐ๐—ต / ๐—ฆ๐˜๐—ฟ๐—ฒ๐—ฎ๐—บ ๐—ฃ๐—ฟ๐—ผ๐—ฐ๐—ฒ๐˜€๐˜€๐—ถ๐—ป๐—ด (๐—ฆ๐—ฝ๐—ฎ๐—ฟ๐—ธ, ๐—›๐—ฎ๐—ฑ๐—ผ๐—ผ๐—ฝ). Transforms raw events into aggregates, ML features, and reports. Supports windowed joins for near-real-time dashboards.

๐Ÿญ๐Ÿฎ. ๐— ๐—ฒ๐˜๐—ฟ๐—ถ๐—ฐ๐˜€ ๐—ฎ๐—ป๐—ฑ ๐—”๐—น๐—ฒ๐—ฟ๐˜๐—ถ๐—ป๐—ด. Scrapes time-series data, stores it efficiently, and renders dashboards. The Alert Rules page alerts you when latency, error rate, or saturation crosses SLOs.

Jan 6
at
8:08 AM

Log in or sign up

Join the most interesting and insightful discussions.