နားလည်ထားရမယ့် အချက်
ယခင် lesson တစ်ခုမှာ application-level caching (computed result တွေကို memory ဒါမှမဟုတ် Redis ထဲ သိမ်းထားပြီး server တစ်ခုတည်းအတွက် အလုပ်ထပ်မလုပ်ရအောင်) ကို လေ့လာခဲ့ပါတယ်။ CDN နဲ့ edge caching ကတော့ တခြားပြဿနာတစ်ခု — ပထဝီအကွာအဝေး ပြဿနာကို ဖြေရှင်းပါတယ်။ US မှာရှိတဲ့ origin server တစ်ခုက ဘယ်လောက်ပဲမြန်မြန် ရန်ကုန်က user တစ်ယောက်ရဲ့ request ကို ဖြေဖို့ real time ကုန်ရပါတယ် — network packet တွေက light speed နဲ့ network hop အရေအတွက် အကန့်အသတ်ထားလို့ server-side optimization ဘယ်လောက်ပဲကောင်းကောင်း ဒီ geography ပြဿနာကို ဖယ်ရှားလို့ မရနိုင်ပါဘူး။ CDN ကတော့ ကမ္ဘာအနှံ့ region များစွာမှာ edge server တွေ deploy လုပ်ပြီး static (တစ်ခါတစ်ရံ dynamic ပါ) content ရဲ့ cache copy တွေကို ထားပေးကာ user request ကို origin ဆီပင်လယ်ရေကြောင်း ဖြတ်စေမယ့်အစား အနီးဆုံး edge server ဆီ route လုပ်ပေးလိုက်တဲ့အတွက် round-trip latency ကို သိသိသာသာ လျှော့ချပေးပြီး origin ကလည်း user တစ်ယောက်ချင်းစီကို serve မလုပ်ရဘဲ edge server တွေကိုပဲ serve လုပ်ရလို့ load ကျစေပါတယ်။ Trade-off ကတော့ freshness ပါ — edge cache က origin နဲ့ ပြန် re-validate မလုပ်ခင် stale content ကို ခဏတာ serve ပေးနေနိုင်ပါတယ် (TTL ဒါမှမဟုတ် cache-invalidation signal က ထိန်းချုပ်ပါတယ်) — ဒါကြောင့် CDN က စက္ကန့်တိုင်း မပြောင်းတဲ့ content အတွက် အကောင်းဆုံးပါ။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Tutorial Platform ဟာ lesson video၊ ပုံ၊ static asset တွေကို နိုင်ငံအများစုက learner တွေဆီ serve ပါတယ်။ CDN မရှိရင် ရန်ကုန်က learner တစ်ယောက်ဟာ US-based origin server တစ်ခုတည်းက host လုပ်ထားတဲ့ video ကြည့်ရင် request တစ်ခုစီအတွက် millisecond ရာနဲ့ချီတဲ့ round trip ခံရပါတယ်။ CDN ရှိရင်တော့ video ကို Southeast Asia အနီးအနားက edge server မှာ cache ထားလို့ region ထဲက ဒုတိယအကြိမ်ကြည့်တဲ့ viewer တွေက local latency နီးပါး ရရှိပါတယ်။ Instructor edit လုပ်တဲ့အခါ ပြောင်းတတ်တဲ့ lesson text content က TTL တို သုံးပြီး edge တွေ ချက်ချင်းလိုလို refresh ဖြစ်စေရင် course icon/video file လို ဘယ်တော့မှ (ဒါမှမဟုတ် ရှားရှားပါးပါး) မပြောင်းတဲ့ immutable asset တွေကတော့ TTL ရှည် သုံးပါတယ် — asset type တစ်ခုစီ ဘယ်လောက်ခဏခဏ ပြောင်းလဲသလဲ ကိုက်ညီအောင် CDN caching aggressiveness ကို ချိန်ညှိထားပါတယ်။
အတူတူ စမ်းရေးကြည့်မယ်
WITHOUT CDN WITH CDN
+------------------+
+------------------+ | Origin Server |
| Origin Server | | (US) |
| (US) | +------------------+
+------------------+ / | \
^ ^ ^ edge sync edge sync edge sync
| | | / | \
| | | +--------+ +--------+ +--------+
Yangon Berlin Tokyo | Edge | | Edge | | Edge |
(280ms)(120ms)(180ms) | SE Asia| | Europe | | Japan |
+--------+ +--------+ +--------+
^ ^ ^
| | |
Yangon Berlin Tokyo
(15ms) (10ms) (8ms)
Latency without CDN: 120-280ms (crosses ocean every request)
Latency with CDN: 8-15ms (served from nearby edge)CDN မရှိရင် request တိုင်းက origin server အထိ ပင်လယ်ရေကြောင်းဖြတ်ရပြီး latency များပေမယ့် CDN ရှိရင် nearby edge က serve ပေးလို့ latency ကျသွားကြောင်း ပြသပါတယ်။၅ မိနစ် စမ်းကြည့်
Tutorial Platform ရဲ့ asset အမျိုးအစား ၃ ခု — (1) course icon SVG, (2) lesson video, (3) quiz score API response — ကို CDN caching TTL အလိုက် အနှစ်ချုပ်ပေးပါ၊ ဘယ်ဟာက ရှည်ရှည်၊ ဘယ်ဟာက တိုတို ဒါမှမဟုတ် cache လုံးဝမလုပ်သင့်လဲ ရှင်းပြပါ။
သတိလေးတစ်ချက်
Instructor တစ်ယောက် lesson content ကို urgent fix လုပ်ပေမယ့် CDN TTL ရှည်နေလို့ user တွေက ပြင်ခဲ့တာကို မမြင်ရဘဲ stale version ကို ကြာကြာကြည့်နေရတတ်ပါတယ် — cache-invalidation mechanism မထားရင် ဒီပြဿနာ ဖြစ်တတ်ပါတယ်။
User-specific ဒါမှမဟုတ် sensitive data (ဥပမာ personal quiz score) ကို CDN edge မှာ cache လုပ်မိရင် user တစ်ယောက်ရဲ့ data ကို တခြားနေရာက user တစ်ယောက်ဆီ leak ဖြစ်နိုင်တဲ့ security risk ဖြစ်တတ်ပါတယ်။
Wikipedia — Content delivery network — System Design