CDN nima va qanday ishlaydi? Push va pull CDN
Assalamu Alaykum bugun System Design interviewlarida va performanceni ko'tarish uchun juda qulay bo'lgan CDN va u qanday ishlashi haqida gaplashamiz.
CDN nima ?
CDN — bu butun dunyo bo'yicha tarqalgan serverlar tarmog'i bo'lib sizga kerak bo'lgan kontentni samarali(tez) yektazib beradi. CDNsiz agarda siz biror sayt ochsangiz unga dunyoning har yeridan ulanmoqchi bo'lishsa server bir joydaligi uchun ba'zi foydalauvchinlar so'rov juda uzoq masofa bosib kelishiga to'g'ri keladi va bu vaqt talab qiladi, CDN bilan esa u sizga yaqin bo'lgan serverga sizni yo'nlatiradi va tezda ma'lumotlarni olishingiz mumkin. Bundan tashqari saytga ko'p odamlar tashrif buyurishni boshlashsa sayt infrastrukturasi yoki tarmoq sozlamalari yoki backend dosh berolmasligi mumkin, bu esa daromad yo'qotilishiga yoki foydalanuvchi ishonchi tushishiga sabab bo'ladi , CDN esa buni trafikni asosiy qismini o'zida saqlab qolish orqali oldini oladi.
CDN 1-marta 1999 yilda html fayllarni tezlashtirish uchun ishlatilgan va hozir dinamik(o'zgaruvchan) kontent bilan ham ishlay oladi .
CDN nega kerak yoki uning foydalari :
Latencyni kamaytirish (eng yaqin serverdan ma'lumot olish) caching eng ko'p foydalaniladigan kontentlarni edge serverlarda saqlash
Kontentga erishishni osonlashtiradi(eng yaqindagi qulasa undan keyingi yaqindagiga jo'natadi)
Yuqori traffik bilan ishlashni yaxshilaydi (serverlar orasida bo'linadi)
Xavsizlik (DDos, SSL/TLS)
Compress va optimizatsiya . Fayl hajmini compresslash orqali kamaytirish
Kontent cache bo'lganda unga TTL(time to live ) qo'yiladi va shuncha vaqtdan keyin u o'chirib tashlanadi buni cache invalidation uslublari orqali ham o'chirish mumkin .
CDNdagi asosiy qism va konseptsiyalar
Content Provider Origin Server . Asl kontentni ta'milayotgan web server (sizning server)
CDN entry point . CDNga sizdan haqiqiy kontentni olib beradigan serverlar.
CDN Origin Shield. yuqori traffik paytida sizning serverni himoya qiladigan CDN servis (hamma edge server bir paytda yangi kontent uchun so'rov yuborganda ushlab qoladi )
CDN Edge Server (PoP ham deyiladi) . Kontentlarni foydalanuvchiga beradigan serverlar
CDN footprint. Edge serverlar foydalanuvchiga ma'lumot yetkazib bera oladigan geografik maydon .
CDN selector. Bir nechta CDN orasidan bizga eng qulay CDN tanlab beruvchi servis.
Bizda 2 xil CDN turi mavjud Pull va Push .
Push CDN
Push CDN qachonki serverda o'zgarish bo'lsa shu yangi kontentni qabul qiladi. Siz kontent bilan ta'minlashni o'z bo'yningizga olasiz , CDNga yuklash va CDNga yo'naltiradigan URLni o'zgartirish . Kontent faqatgina yangi kelganda yoki o'zgarganda yuklanadi , bu traffikni kamaytiradi .
Kichik traffikga ega bo'lgan yoki kontent tez o'zgarmaydigan saytlar uchun push CDN yaxshi ishlaydi. Kontent CDNga bir marta yuklanadi , har doim CDN tomonidan tortib olinmaydi.
Push CDN qanday ishlaydi ?
Ma'lumot yuklash. Fayllar CDNga sayt tomonidan yuklanadi.
Distribution.CDN yuklangan ma'lumotlarni edge serverlarga yetkazadi.
Foydalanuvchi so'rovi . So'rov kelgan u foydalanuvchiga eng yaqin serverdan yuboriladi
Kontentni boshqarish. Bu uslubdagi muammo , kontentda nimadir o'zgarish bo'lsa , kimdir qo'lda CDNni ham o'zgartirishi kerak, yangi o'zgarishlar hammaga borishi uchun.

Pull CDN
Pull CDN 1-foydalanuvchidan so'rov kelganda kontentni sizning serverdan yuklab oladi. Kontent sizning serverda bo'lib CDNga yo'naltiriladigan URLlarni o'zgartirasiz . Natijada so'rov sekinlashadi toki kontent cachelanguncha.
Time-to-live (TTL) kontent qancha vaqt cachelanib turishini belgilaydi . Pull CDN CDNdagi kontent hajmini iloji boricha kamaytiradi , ammo fayllar cachedan o'chgani tufayli ortiqcha traffik olib kelishi va o'zgarish bo'lishidan oldin yuklab olishi mumkin .
Ko'p traffikga ega bo'lgan saytlar pull CDN bilan yaxshi ishlaydi , faqat yaqinda ishlatilgan kontentlar CDNda saqlanadi.
Pull CDN qanday ishlaydi?
Foydalanuvchi so'rovi .Qachon foydalanuvchi site manzilini kiritsa va kontent(rasm, video ) uchun so'rov yuborsa , so'rovlar eng yaqin CDN edge serverga yo'naltiriladi.
Cache Miss.Cacheda ma'lumot topilmasa ya'ni CDN edge serverda biz xohlagan kontent bo'lmasa , u origin serverdan kontentni so'raydi .
Cache Saqlash :CDN edge server kelgan ma'lumotni cachega saqlaydi .
Kontentni berish .So'ralgan kontent foydalanuvchiga beriladi , keyingi shu kontentga kelgan so'rovlar cachedan olib beriladi.

CDN ishlatishning yomon tomonlari
CDN xizmati narxi traffikga qarab katta bo'lishi mumkin , ammo bu uni ishlatmaslik biznesga qancha zarar keltirilishi bilan solishtirilishi kerak.
Kontent eski bo'lishi mumkin (pull CDNda)
CDN static kontentga yo'naltiradigan URLlarni o'zgartirishga majbur qiladi.
Dinamik kontent caching (CDN buni qanday qiladi?)
CDNlar ko'p holatda statik kontent bilan ishlaydi ammo hozirda dinamik qism ham cachelanmoqda , hech bo'lmasa compress qilish orqali yordam bermoqda. Hozir dinamik kontentni qanday cachelashni bir uslubini ko'ramiz.
Fragment yoki qisman cachelash, butun sahifani cachelash o'rniga u qismlarga bo'linadi va masalan mahsulot tavsifi statik bu cachelanadi , “siz uchun tavsiya qilinadi” qismi shaxsiy bo'lgani uchun origindan qaytib olib kelinadi . Bu CDN qavatida amalga oshadi va dinamik kontentni cachelashga yordam beradi.
CDN va API gateway farqi
Ikkalasi orasidagi eng oddiy ammo muhim farqi bu Gateway va CDN nima yetkazib berishida va trafikni qanday boshqarishida.
API gateway dinamic API so'rovlari bilan ishlaydi— ularni yo'naltiradi, xavsizlikni tekshiradi va so'rov backend(bussiness mantig'igacha ) yetib borishni taminlaydi.
CDN static fayllarni — rasmlar, videolar yoki cachelangan web sahifalarni foydalanuvchiga eng yaqin serverdan yetkazib beradi.
Qisqa qilib aytganda, API Gateway => Dinamik API trafikni boshqaradi, CDN => Statik kontent tezlashtirib beradi.
CDN xuddi reverse proxy kabi ishlaydi (keyingi maqola proxylar haqida bo'ladi)
Mashhur CDN Providerlari
Quyida bir nechta keng foydalaniladigan CDN providerlarini ko'ramiz:
Akamai: Eng eski va katta CDN provideri , kuchli xavfsizlik xususiyatlari va katta serverlar tarmog'i borligi bilan mashhur .
Cloudflare: Performance va xavsizlik taklif qiladi, kichik saytlar uchun tekin versiyasi mavjud.
Amazon CloudFront: AWS bilan bog'langan, oson kengayadi va boshqa AWS servislari bilan yaxshi bog'lanadi.
Bular bir nechta misol xolos har bir cloudda o'zining CDNni mavjud.
Xulosa
Pull va Push CDN orasidagi farqni bilish bu bizga foydali CDN uslubi tanlashga yordam beradi. Pull CDN ko'pincha dinamik (tez o'zgaradigan) kontentlar uchun , server o'zi ma'lumotni olib cachelaydi. Push CDN esa boshqariladigan va kam o'zgaradigan kontent uchun qulayroq va doim cacheda bo'ladi (qo'lda boshqarish kerak bo'lsa ham) .