Part 2: System design for PMs - scaling, load balancing, data
Module 9 · Sun 13 Sep, evening
தமிழில் கேளுங்கள்
NFRs என்பவை product முடிவுகள். PM வரையறுக்க வேண்டியவை: எதிர்பார்க்கும் அளவு, வளர்ச்சி, read-heavy vs write-heavy, எந்த data ஒருபோதும் இழக்கப்படக்கூடாது vs எங்கே சிறிது முரண்பாடு பரவாயில்லை, ஒவ்வொரு பயணத்துக்கும் latency இலக்குகள், எந்த வெளிப்புற APIs பயன்படுகின்றன, அவற்றின் செலவு என்ன.
- Vertical scaling = பெரிய இயந்திரம். Horizontal scaling = அதிக இயந்திரங்கள். Vertical-இல் தொடங்கு; கூடுதல் சிக்கலை load நியாயப்படுத்தும்போது horizontal-க்குச் செல்.
- ஒரு load balancer health checks உடன் servers முழுவதும் traffic-ஐப் பகிர்கிறது - round robin, least connections அல்லது weighted.
- Stateless servers user நிலையைப் பகிரப்பட்ட சேமிப்பகத்தில் வைக்கின்றன; sticky sessions ஒரு தற்காலிக வழி, இலக்கு அல்ல. முக்கியமான நிலையை ஒரே server-இல் வைக்காதே.
Bandwidth (அளவு), latency (தாமதம்) வெவ்வேறு தடைகள் - ஒன்றைச் சரிசெய்தால் மற்றொன்று சரியாகாது. DNS ஒரு domain-ஐ IP-ஆக மாற்றுகிறது; HTTPS traffic-ஐ encrypt செய்கிறது.
Data modelling: data-வை tables-ஆகப் பிரி (வகுப்பு உதாரணம்: users, photos, likes, comments, follows), primary, foreign keys மூலம் இணைக்கப்பட்டவை. Indexing பெரிய tables-இல் தேடலை வேகப்படுத்தும் (எல்லாவற்றையும் index செய்யாதே); caching மீண்டும் மீண்டும் வரும் hot reads-ஐ விரைவாகத் தரும். Users கைவிட அதிக வாய்ப்புள்ள படியை optimise செய்.