Part 2: System design for PMs - scaling, load balancing, data
Module 9 · Sun 13 Sep, evening
हिंदी में सुनें
NFRs product decisions हैं। PM को define करना चाहिए: expected scale और growth, read-heavy vs write-heavy, कौन-सा data कभी lose नहीं होना चाहिए vs कहाँ थोड़ी inconsistency चल सकती है, हर journey के latency targets, और कौन-से external APIs use होते हैं और उनकी cost क्या है।
- Vertical scaling = बड़ी machine. Horizontal scaling = ज़्यादा machines. Vertical से शुरू करो; horizontal तब जाओ जब load extra complexity को justify करे।
- Load balancer health checks के साथ traffic को servers पर बाँटता है - round robin, least connections या weighted.
- Stateless servers user state को shared storage में रखते हैं; sticky sessions एक workaround हैं, goal नहीं। Critical state एक server पर मत रखो।
Bandwidth (volume) और latency (delay) अलग bottlenecks हैं - एक ठीक करने से दूसरा ठीक नहीं होता। DNS domain को IP में बदलता है; HTTPS traffic encrypt करता है।
Data modelling: data को tables में बाँटो (class example: users, photos, likes, comments, follows), जो primary और foreign keys से जुड़े हों। Indexing बड़ी tables में lookups तेज़ करती है (सब कुछ index मत करो); caching बार-बार होने वाले hot reads जल्दी serve करती है। उस step को optimise करो जहाँ users के छोड़ने की संभावना सबसे ज़्यादा है।