diff --git a/apps/docs/blume.config.ts b/apps/docs/blume.config.ts index 94a6646..e610e20 100644 --- a/apps/docs/blume.config.ts +++ b/apps/docs/blume.config.ts @@ -145,8 +145,8 @@ export default defineConfig({ // The two custom pages (pages/*.astro) as header tabs. Neither is a // content folder, so the tabs scope nothing out of the sidebar tree. tabs: [ - { label: "Changelog", path: "/changelog", icon: "clock" }, - { label: "Appendix", path: "/appendix", icon: "library" }, + { label: "Changelog", path: "/changelog" }, + { label: "Appendix", path: "/appendix" }, ], }, }); diff --git a/apps/docs/content/system-design/index.mdx b/apps/docs/content/system-design/index.mdx index b358405..557ce3a 100644 --- a/apps/docs/content/system-design/index.mdx +++ b/apps/docs/content/system-design/index.mdx @@ -1,11 +1,15 @@ --- title: System Design -description: Notes for system design interviews — how to scope a problem, size it, and pick the parts that carry the load. +description: "Notes on System Design Interview — An Insider's Guide (Volumes 1 and 2): how to scope a problem, size it, and pick the parts that carry the load." icon: network -sidebar: - label: Overview --- +These notes follow Alex Xu's [System Design Interview — An Insider's Guide](https://bytebytego.com/courses/system-design-interview), [Volumes 1 and 2](https://www.goodreads.com/book/show/54109255-system-design-interview-an-insider-s-guide). + +:::note +These notes are a work in progress. +::: + ## How an interview runs @@ -25,3 +29,102 @@ sidebar: Take the hardest part (a hot key, fan-out, a consistency guarantee) and work through its tradeoffs. + +## Foundations + + + + From one server to millions of users. + + + Back-of-the-envelope QPS and storage. + + + The four steps of the interview. + + + +## Core designs + + + + Token and leaking buckets, windows. + + + Hash rings and virtual nodes. + + + Quorums, vector clocks, gossip. + + + Snowflake and its alternatives. + + + Base 62 and redirects. + + + The URL frontier and politeness. + + + Push, SMS and email at scale. + + + Fanout on write and on read. + + + WebSockets and presence. + + + Tries and top-k prefixes. + + + Upload, transcode, stream. + + + Block storage and sync. + + + +## Advanced designs + + + + Geohash, quadtrees, S2. + + + Live locations over pub/sub. + + + Tiles, routing and ETAs. + + + Partitions and consumer groups. + + + Time series and alerting. + + + Exactly-once stream counts. + + + Inventory without double booking. + + + Mail storage and search. + + + Erasure coding and metadata. + + + Redis sorted sets. + + + Ledgers and reconciliation. + + + Distributed transactions, event sourcing. + + + Order books and sequencers. + +