Skip to content

Repository files navigation

Scaling āĻ“ System Design āϏāĻŋāĻŽā§āϞ⧇āϟāϰ

āϞāĻžāχāĻ­: https://msilabs.github.io/scaling-simulator/

āĻŸā§āϰāĻžāĻĢāĻŋāĻ•, āĻ…ā§āϝāĻžāĻĒ āϏāĻžāĻ°ā§āĻ­āĻžāϰ, Load Balancer, Cache, Read Replica, āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āφāϰ Autoscaling āύāĻŋāϝāĻŧ⧇ āĻšāĻžāϤ⧇-āĻ•āϞāĻŽā§‡ system design āĻļ⧇āĻ–āĻžāϰ āϏāĻŋāĻŽā§āϞ⧇āϟāϰāĨ¤

  • āĻĢā§āϰāĻŋ āĻŽā§‹āĻĄ: āĻāĻ• āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž; āύāĻŋāĻœā§‡āϰ āĻŽāϤ⧋ āϏāĻŦ āĻŦāĻĻāϞ⧇ āĻĻ⧇āĻ–ā§‹
  • ⧍ā§Ē āϘāĻŖā§āϟāĻž: āϏāĻžāϰāĻžāĻĻāĻŋāύ⧇āϰ āĻŸā§āϰāĻžāĻĢāĻŋāĻ•, autoscaling āφāϰ āφāĻ—āĻžāĻŽ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻŋ; āϚāĻžāĻ°ā§āĻŸā§‡ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–ā§‹
  • ā§ŦāϟāĻž āĻšā§āϝāĻžāϞ⧇āĻžā§āϜ: āĻĒā§āϰāϤāĻŋāϟāĻž āĻāĻ•āϟāĻž āϧāĻžāϰāĻŖāĻž āĻļ⧇āĻ–āĻžāϝāĻŧ, āĻŦāĻžāĻœā§‡āĻŸā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ, āĻ–āϰāϚ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ ā§§â€“ā§Š āϤāĻžāϰāĻž
npm install
npm run dev            # http://localhost:3000
npm test               # āĻšāĻŋāϏāĻžāĻŦ⧇āϰ unit test
npm run build:artifact # dist-artifact/index.html (āĻāĻ•āϟāĻž self-contained āĻĢāĻžāχāϞ)
node scripts/smoke-test.mjs http://localhost:3000            # āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻž
node scripts/smoke-test.mjs file://$PWD/dist-artifact/index.html

āĻĢāĻžāχāϞ

  • src/lib/model.ts: āĻāĻ• āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇āϰ āĻšāĻŋāϏāĻžāĻŦ (pure function) āφāϰ āĻ–āϰāϚ
  • src/lib/timeline.ts: ⧍ā§Ē āϘāĻŖā§āϟāĻžāϰ āϟāĻžāχāĻŽāϞāĻžāχāύ, autoscaler, āĻŸā§āϰāĻžāĻĢāĻŋāϕ⧇āϰ āϧāϰāύ
  • src/lib/challenges.ts: āĻ›āϝāĻŧāϟāĻž āĻšā§āϝāĻžāϞ⧇āĻžā§āϜ, āϞāĻ•ā§āĻˇā§āϝ, āĻŦāĻžāĻœā§‡āϟ, āϤāĻžāϰāĻž
  • src/components/: UI (Simulator.tsx āϏāĻŦ āĻœā§‹āĻĄāĻŧāĻž āĻĻ⧇āϝāĻŧ)
  • tests/sim.test.ts: unit test
  • scripts/build-single-html.mjs: Tailwind CSS āφāϰ esbuild bundle āĻāĻ•āϟāĻž HTML-āĻ āĻĸā§‹āĻ•āĻžāϝāĻŧ

Releases

Packages

Contributors

Languages