System Design - 4chi qism.
Salom do’stlar. Men bir loyihani 0 ta foydalanuvchidan 1 million foydalnuvchigacha olib chiqayotgan dasturchiman. Ko’rishmaganimizga ham ancha bo’lib qoldi. Men boshqa bir loyihani millionlab foydalanuvchilarga olib chiqish bilan band edim.
Bu postni o’qishdan oldin hikoyamning birinchi, ikkinchi va uchinchi qismlarini albatta o’qib chiqing.
O’tgan safar cache haqida gaplashgan edik. Bu safar biz sizlar bilan CDN haqida suhbat olib boramiz.
Lekin undan oldin, keling, serverlarimiz haqida yana ozgina to’xtalsak. Men serverlarda Frankfurtdagi Data Centerga joylashtirganman:

Rasmda “X” bilan Frankfurtdagi Data Center tahminan ko’rsatilgan. Frankfurt aynan u yerda bo’lmasligi mumkin. Geografiyadan maktabda 3 bahoga o’qiganman.
Shuning uchun ham loyihamiz O’zbekistondagi foydalanuvchilarimiz uchun Avstraliyadagi foydalanuvchilarizga qaraganda tezroq ishlaydi. Sababi O’zbekiston Frankfurtga yaqinroq va ma’lumot kamroq distanisyani bosib o’tadi. Huddi shu sababga ko’ra Yevropadan kirib ishlatadigan foydalanuvchilarimiz bizning dasturni tezroq ishlata oladilar.
Qaniydi dunyodagi barcha foydalanuvchilarimizni deyarli bir xil tezlik bilan taminlab bera olsak. Avstraliyadagi foydalanuvchilar ham, Amerikadagilar ham, Yaponiyadagilar ham dasturimizdan maza qilib foydalana olishsa. Kutib qolishmasa.
Uning uchun biz ma’lumot bosib o’tadigan masofani kamaytirishimiz kerak. Yani, Yevropadagi foydalanuvchilarimiz jo’natadigan requestlar Frankfurtdagi serverlarimizga borsin. O’zbekistondan kelayotgan serverlar Toshkentdagi serverlarga borsin. Amerikadan kelayotgan serverlar New Yorkdagi serverlarga borsin. Va hokazo.
Mana shu ishni amalga oshirish uchun bizga CDN yaxshigina yordam bera oladi.
Aynan qanday yordam berishini tepadagi xaritani o’zgartirilgan variantiga qarab yaxshiroq tushunib olish mumkin:

Yani, CDN bizga Frankfurtdagi serverda joylashgan loyihamizning nusxalarini (hammasini ham emas, ba’zi qismlarini. Pastroqda aniqlik kiritamiz) dunyoning har xil joylarida joylashgan serverlarda saqlashga yordam beradi. Natijada, Amerikadan kirayotganlarning requestlari Amerikadagi serverga boradi. Avstraliyadagilarning requestlari Avstraliyadagi serverlarga boradi. Va hokazo. Natijada ma’lumotlar ancha kamroq masofani bosib o’tadi va foydalanuvchilarimiz tez ishlaydigan dasturimizni maza qilib ishlata oladilar.
Lekin loyihamiz nusxalari qanday qilib dunyo bo’ylab joylashgan serverlarga borib qoladi?
Juda ham yaxshi savol. Tahminan quyidagicha.
Deylik Avstraliyalik foydalanuvchi dasturimizga kirdi va dasturimizdan “best-book.pdf” faylini yuklab olishni so’rayapti.