Skip to Content
Nextra 4.0 is released 🎉

āĻĄāĻŋāϜāĻžāχāύ āĻĄāĻŋāĻĒ āĻĄāĻžāχāĻ­ (Design deep dive) āĻŦāĻž āĻĄāĻŋāϜāĻžāχāύ⧇āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āφāϞ⧋āϚāύāĻž

āĻāχ āϧāĻžāĻĒ⧇, āφāĻĒāύāĻŋ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§ŸāĻžāϰ āĻāϰāχ āĻŽāĻ§ā§āϝ⧇ āύāĻŋāĻšā§‡āϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝāϗ⧁āϞ⧋ (objectives) āĻ…āĻ°ā§āϜāύ āĻ•āϰ⧇ āĻĢ⧇āϞ⧇āϛ⧇āύ:

  • āϏāĻžāĻŽāĻ—ā§āϰāĻŋāĻ• āϞāĻ•ā§āĻˇā§āϝ (overall goals) āĻāĻŦāĻ‚ āĻĢāĻŋāϚāĻžāϰ⧇āϰ āĻĒāϰāĻŋāϧāĻŋ (feature scope) āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻ•āĻŽāϤ āĻšā§Ÿā§‡āϛ⧇āύāĨ¤
  • āϏāĻžāĻŽāĻ—ā§āϰāĻŋāĻ• āĻĄāĻŋāϜāĻžāχāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻšāĻžāχ-āϞ⧇āϭ⧇āϞ āĻŦā§āϞ⧁āĻĒā§āϰāĻŋāĻ¨ā§āϟ (high-level blueprint) āϤ⧈āϰāĻŋ āĻ•āϰ⧇āϛ⧇āύāĨ¤
  • āĻšāĻžāχ-āϞ⧇āϭ⧇āϞ āĻĄāĻŋāϜāĻžāχāύ⧇āϰ āĻ“āĻĒāϰ āφāĻĒāύāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§ŸāĻžāϰ⧇āϰ āĻĢāĻŋāĻĄāĻŦā§āϝāĻžāĻ• (feedback) āĻŦāĻž āĻŽāϤāĻžāĻŽāϤ āĻĒā§‡ā§Ÿā§‡āϛ⧇āύāĨ¤
  • āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§ŸāĻžāϰ⧇āϰ āĻĢāĻŋāĻĄāĻŦā§āϝāĻžāϕ⧇āϰ āĻ“āĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻĄāĻŋāĻĒ āĻĄāĻžāχāĻ­ āĻŦāĻž āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āφāϞ⧋āϚāύāĻžāϰ āϜāĻ¨ā§āϝ āϕ⧋āύ āĻŦāĻŋāώ⧟āϗ⧁āϞ⧋āϤ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻŋāϛ⧁ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āϧāĻžāϰāĻŖāĻž (initial ideas) āĻĒā§‡ā§Ÿā§‡āϛ⧇āύāĨ¤

āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇āϰ (architecture) āϕ⧋āύ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟāϗ⧁āϞ⧋āϕ⧇ (components) āĻ…āĻ—ā§āϰāĻžāϧāĻŋāĻ•āĻžāϰ (prioritize) āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇ āϤāĻž āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāϤ⧇ āφāĻĒāύāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§ŸāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇āύāĨ¤ āĻāϟāĻŋ āĻŽāύ⧇ āϰāĻžāĻ–āĻž āϜāϰ⧁āϰāĻŋ āϝ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāω āφāϞāĻžāĻĻāĻžāĨ¤ āĻ•āĻ–āύ⧋ āĻ•āĻ–āύ⧋ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§ŸāĻžāϰ āĻāĻŽāύ āχāĻ™ā§āĻ—āĻŋāϤ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ āϝ⧇ āϤāĻŋāύāĻŋ āĻšāĻžāχ-āϞ⧇āϭ⧇āϞ āĻĄāĻŋāϜāĻžāχāύ⧇āχ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāϤ⧇ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰāϛ⧇āύāĨ¤ āφāĻŦāĻžāϰ āĻ•āĻ–āύ⧋, āĻāĻ•āϜāύ āϏāĻŋāύāĻŋ⧟āϰ āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€āϰ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§Ÿā§‡āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āφāϞ⧋āϚāύāĻžāϟāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ⧇āϰ (system performance characteristics) āĻ“āĻĒāϰ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āϝ⧇āĻ–āĻžāύ⧇ āϏāĻŽā§āĻ­āĻŦāϤ āĻŦāϟāϞāύ⧇āĻ• (bottlenecks) āĻŦāĻž āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ⧇āϰ āĻŦāĻžāϧāĻžāϏāĻŽā§‚āĻš āĻāĻŦāĻ‚ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻāĻ¸ā§āϟāĻŋāĻŽā§‡āĻļāύ⧇āϰ (resource estimations) āĻ“āĻĒāϰ āĻŦ⧇āĻļāĻŋ āĻœā§‹āϰ āĻĻ⧇āĻ“ā§ŸāĻž āĻšā§ŸāĨ¤ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āχ, āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§ŸāĻžāϰ āĻšā§ŸāϤ⧋ āϚāĻžāχāĻŦ⧇āύ āφāĻĒāύāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻ•āĻŋāϛ⧁ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āĻŸā§‡āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻŦāĻŋāĻˇā§Ÿā§‡ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰ⧁āύāĨ¤ āχāωāφāϰāĻāϞ āĻļāĻ°ā§āϟāύāĻžāϰ⧇āϰ (URL shortener) āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āϞāĻŽā§āĻŦāĻž āχāωāφāϰāĻāϞ-āϕ⧇ āϛ⧋āϟ āĻ•āϰāĻžāϰ āĻšā§āϝāĻžāĻļ āĻĢāĻžāĻ‚āĻļāύ (hash function) āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāϤ⧇ āĻšā§Ÿ āϤāĻž āύāĻŋā§Ÿā§‡ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āφāϞ⧋āϚāύāĻž āĻ•āϰāĻžāϟāĻž āĻŦ⧇āĻļ āφāĻ•āĻ°ā§āώāĻŖā§€ā§ŸāĨ¤ āĻāĻ•āϟāĻŋ āĻšā§āϝāĻžāϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ (chat system) āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ˛ā§āϝāĻžāĻŸā§‡āĻ¨ā§āϏāĻŋ (latency) āĻ•āĻŽāĻžāύ⧋ āϝāĻžā§Ÿ āĻāĻŦāĻ‚ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ…āύāϞāĻžāχāύ/āĻ…āĻĢāϞāĻžāχāύ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž āϝāĻžā§Ÿâ€”āϏ⧇āϗ⧁āϞ⧋ āĻŦ⧇āĻļ āφāĻ•āĻ°ā§āώāĻŖā§€ā§Ÿ āφāϞ⧋āϚāύāĻžāϰ āĻŦāĻŋāώ⧟ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϏāĻŽā§Ÿ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž (Time management) āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ, āĻ•āĻžāϰāĻŖ āϛ⧋āϟāĻ–āĻžāĻŸā§‹ āĻ…āĻĒā§āĻ°ā§Ÿā§‹āϜāĻ¨ā§€ā§Ÿ āĻŦāĻŋāĻˇā§Ÿā§‡āϰ (minute details) āĻ—āĻ­ā§€āϰ⧇ āĻšāĻžāϰāĻŋā§Ÿā§‡ āϝāĻžāĻ“ā§ŸāĻžāϟāĻž āϖ⧁āĻŦ āϏāĻšāϜ, āϝāĻž āφāϏāϞ⧇ āφāĻĒāύāĻžāϰ āĻŽā§‚āϞ āĻĻāĻ•ā§āώāϤāĻžāϗ⧁āϞ⧋ āĻĒā§āϰāĻŽāĻžāĻŖ āĻ•āϰ⧇ āύāĻžāĨ¤ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§ŸāĻžāϰāϕ⧇ āĻĻ⧇āĻ–āĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āϏāĻ āĻŋāĻ• āϏāĻŋāĻ—āĻ¨ā§āϝāĻžāϞ (signals) āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻ…āĻĒā§āĻ°ā§Ÿā§‹āϜāĻ¨ā§€ā§Ÿ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻŦāĻŋāĻˇā§Ÿā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āύāĻž āĻĸā§‹āĻ•āĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āϟāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĄāĻŋāϜāĻžāχāύ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§Ÿā§‡āϰ āϏāĻŽā§Ÿ āĻĢ⧇āϏāĻŦ⧁āĻ• āĻĢāĻŋāĻĄ āĻ°â€ā§āϝāĻžāĻ™ā§āĻ•āĻŋāĻ‚ā§Ÿā§‡āϰ āĻāϜ-āĻ°â€ā§āϝāĻžāĻ™ā§āĻ• āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ (EdgeRank algorithm) āύāĻŋā§Ÿā§‡ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻ•āĻĨāĻž āĻŦāϞāĻžāϟāĻž āφāĻĻāĻ°ā§āĻļ āύ⧟, āĻ•āĻžāϰāĻŖ āĻāϤ⧇ āĻ…āύ⧇āĻ• āĻŽā§‚āĻ˛ā§āϝāĻŦāĻžāύ āϏāĻŽā§Ÿ āύāĻˇā§āϟ āĻšā§Ÿ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ¸ā§āϕ⧇āϞ⧇āĻŦāϞ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ (scalable system) āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāĻĒāύāĻžāϰ āĻĻāĻ•ā§āώāϤāĻž āĻĒā§āϰāĻŽāĻžāĻŖ āĻ•āϰ⧇ āύāĻžāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ (Example)

āĻāϤāĻ•ā§āώāϪ⧇ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāĻŋāωāϜ āĻĢāĻŋāĻĄ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻšāĻžāχ-āϞ⧇āϭ⧇āϞ āĻĄāĻŋāϜāĻžāχāύ āύāĻŋā§Ÿā§‡ āφāϞ⧋āϚāύāĻž āĻ•āϰ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāĻ‰ā§ŸāĻžāϰ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦ⧇ āϏāĻ¨ā§āϤ⧁āĻˇā§āϟ āĻšā§Ÿā§‡āϛ⧇āύāĨ¤ āĻāϰāĻĒāϰ, āφāĻŽāϰāĻž āĻāϰ āϏāĻŦāĻšā§‡ā§Ÿā§‡ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĻ⧁āϟāĻŋ āχāωāϜ āϕ⧇āϏ (use cases) āύāĻŋā§Ÿā§‡ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāĻŦ: ā§§. āĻĢāĻŋāĻĄ āĻĒāĻžāĻŦāϞāĻŋāĻļāĻŋāĻ‚ (Feed publishing) ⧍. āύāĻŋāωāϜ āĻĢāĻŋāĻĄ āϰāĻŋāĻŸā§āϰāĻŋāĻ­āĻžāϞ (News feed retrieval - āύāĻŋāωāϜ āĻĢāĻŋāĻĄ āĻĢāĻŋāϰāĻŋā§Ÿā§‡ āφāύāĻž āĻŦāĻž āϞ⧋āĻĄ āĻ•āϰāĻž)

āϚāĻŋāĻ¤ā§āϰ ā§Š (Figure 3) āĻāĻŦāĻ‚ āϚāĻŋāĻ¤ā§āϰ ā§Ē (Figure 4)-āĻ āĻāχ āĻĻ⧁āϟāĻŋ āχāωāϜ āϕ⧇āϏ⧇āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻĄāĻŋāϜāĻžāχāύ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšā§Ÿā§‡āϛ⧇, āϝāĻž “Design A News Feed System” āĻ…āĻ§ā§āϝāĻžā§Ÿā§‡ āφāϰāĻ“ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤

āϚāĻŋāĻ¤ā§āϰ ā§Š (Figure 3)