Thuta Learning
Cloud Providers & Platforms
IntermediateDevOps & Toolsintermediate

Modern Deployment Platform များကို နှိုင်းယှဉ်ခြင်း

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Modern Deployment Platform များကို နှိုင်းယှဉ်ခြင်း concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • Diagram/table ကို ဖတ်ပြီး platform/provider category တွေ ဘယ်လို ကွာခြားသလဲ ခြေရာခံနိုင်ရန်
  • ကိုယ့် project အတွက် ဘယ် platform category ကို ဘယ်လို ရွေးချယ်သင့်သလဲ ရှင်းပြနိုင်ရန်

နားလည်ထားရမယ့် အချက်

ဒီ platform ငါးခုကို နှိုင်းယှဉ်တာမှာ အသုံးဝင်တဲ့အချက်က ဘယ်ဟာအကောင်းဆုံးလဲ မဟုတ်ဘဲ ဘယ် workload category နဲ့ ဘယ်ဟာက ကိုက်ညီလဲဆိုတာပါ။

Static frontend hosting ဟာ ငါးခုစလုံးအတွက် သက်တောင့်သက်သာ ကိုက်ညီပါတယ် -- CDN ကနေ static file serve လုပ်တာက ကျယ်ကျယ်ပြန့်ပြန့် ဖြေရှင်းပြီးသား ပြဿနာပါ။ Full-stack framework support ကတော့ Vercel, Netlify, Cloudflare Pages ဆီ ပိုဦးတည်ပါတယ်။

Backend/API hosting နှင့် especially long-running process (WebSocket server, queue consumer) တွေက Railway နှင့် Render ဆီ ဦးတည်ပါတယ် -- ဒါက အရှင်းလင်းဆုံး category ခွဲခြားချက်ပါ။

Edge workload တွေက Cloudflare Workers ဆီ ညွှန်ပြပြီး Vercel/Netlify ရဲ့ edge function ပေါ့ပါးတွေက ဆက်စပ် case တွေကို ကာမိပါတယ်။ Managed database နှင့် background worker ကလည်း PaaS category ဆီ ထပ်မံ ဦးတည်ပါတယ်။

Workload categoryCloudflare / Vercel / Netlify / Railway / Render တွင် ကိုက်ညီမှု
Static frontend hostingCloudflare: ကောင်းစွာကိုက်ညီသည်။ Vercel: ကောင်းစွာကိုက်ညီသည်။ Netlify: ကောင်းစွာကိုက်ညီသည်။ Railway: ဖြစ်နိုင်သော်လည်း ပုံမှန်မဟုတ်။ Render: ဖြစ်နိုင်သော်လည်း ပုံမှန်မဟုတ်။
Full-stack framework supportCloudflare: ကောင်းစွာကိုက်ညီသည် (Pages)။ Vercel: ကောင်းစွာကိုက်ညီသည်။ Netlify: ကောင်းစွာကိုက်ညီသည်။ Railway: ဖြစ်နိုင်သည်။ Render: ဖြစ်နိုင်သည်။
Dedicated backend / API hostingCloudflare: ဖြစ်နိုင်သည် (Workers)။ Vercel: ဖြစ်နိုင်သည် (functions)။ Netlify: ဖြစ်နိုင်သည် (functions)။ Railway: ကောင်းစွာကိုက်ညီသည်။ Render: ကောင်းစွာကိုက်ညီသည်။
Long-running processesCloudflare: ပုံမှန်အသုံးမပြု။ Vercel: ပုံမှန်အသုံးမပြု။ Netlify: ပုံမှန်အသုံးမပြု။ Railway: ကောင်းစွာကိုက်ညီသည်။ Render: ကောင်းစွာကိုက်ညီသည်။
Edge workloadsCloudflare: ကောင်းစွာကိုက်ညီသည် (Workers)။ Vercel: ဖြစ်နိုင်သည် (edge functions)။ Netlify: ဖြစ်နိုင်သည် (edge functions)။ Railway: ပုံမှန်အသုံးမပြု။ Render: ပုံမှန်အသုံးမပြု။
Managed database availabilityCloudflare: အကန့်အသတ်ရှိ/သွယ်ဝိုက်။ Vercel: integration မှတစ်ဆင့် ဖြစ်နိုင်သည်။ Netlify: integration မှတစ်ဆင့် ဖြစ်နိုင်သည်။ Railway: ကောင်းစွာကိုက်ညီသည် (built-in)။ Render: ကောင်းစွာကိုက်ညီသည် (built-in)။
Background workersCloudflare: ဖြစ်နိုင်သည် (Workers, ကန့်သတ်ချက်များနှင့်)။ Vercel: အကန့်အသတ်ရှိ။ Netlify: အကန့်အသတ်ရှိ။ Railway: ကောင်းစွာကိုက်ညီသည်။ Render: ကောင်းစွာကိုက်ညီသည်။

ဒါဟာ platform တစ်ခုကို ပြတ်သားစွာ ပိုကောင်းတယ်လို့ မဆိုလိုပါ။ တစ်ခုစီက landscape တစ်ခုတည်းထဲမှာ နေရာကွဲပြားစွာ ရပ်တည်ပြီး project တစ်ခုတည်းက ပေါင်းစပ်သုံးတာလည်း ကျိုးကြောင်းညီနိုင်ပါတယ်။

text
WORKLOAD-TO-PLATFORM FIT (SIMPLIFIED)
-------------------------------------
                     CF    VC    NF    RW    RD
Static hosting       ok    ok    ok    --    --
Full-stack framework ok    ok    ok    ok    ok
Backend / API        ok    ok    ok   good  good
Long-running process  --    --    --  good  good
Edge compute         good   ok    ok    --    --

CF=Cloudflare  VC=Vercel  NF=Netlify  RW=Railway  RD=Render
See the table below for the full qualitative comparison.

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

Platform ရဲ့ marketing မဟုတ်ဘဲ ကိုယ့် workload ရဲ့ ပုံစံအစစ်ကနေ စတင်ပါ -- အဆက်မပြတ် run ရမလား? Paired database လိုမလား? Edge latency အရေးကြီးလား?

  • Backend logic မရှိသော marketing site -- ငါးခုစလုံး သက်တောင့်သက်သာ အလုပ်လုပ်သည်။
  • API route ပါသော framework app -- full-stack platform ပေါ်မှာ သဘာဝကျကျ ကိုက်ညီလေ့ရှိသည်။
  • Persistent DB pool, WebSocket, (သို့) background job -- PaaS-style platform ဆီ ညွှန်ပြသည်။

Platform ပေါင်းစပ်သုံးတာဟာ ပုံမှန်ဖြစ်ပြီး မှန်ကန်တဲ့ ဆုံးဖြတ်ချက်လည်း ဖြစ်တတ်ပါတယ် -- static frontend ကို တစ်ခု၊ persistent backend ကို တခြားတစ်ခုမှာ API ဖြင့် ချိတ်ဆက်ထားနိုင်ပါတယ်။

Popularity တစ်ခုတည်းကို မှီငြမ်းပြီး မရွေးချယ်ပါနှင့် -- pricing, limit, feature set တွေက အမြဲပြောင်းလဲနေတဲ့အတွက် comparison ဟောင်းကို မယုံဘဲ ရွေးချယ်တိုင်း လက်ရှိ fit ကို ပြန်စစ်ပါ။

အတူတူ စမ်းရေးကြည့်မယ်

javascript
function classifyPlatformCategory(needs) {
  const {
    needsLongRunningBackend,
    needsManagedDatabase,
    needsEdgeCompute,
  } = needs;

  if (needsLongRunningBackend || needsManagedDatabase) {
    return "PaaS-backend";
  }
  if (needsEdgeCompute) {
    return "edge";
  }
  return "full-stack-platform";
}

const projects = [
  { label: "Static docs site", needsStaticHosting: true, needsFullStackFramework: false, needsLongRunningBackend: false, needsEdgeCompute: false, needsManagedDatabase: false },
  { label: "Personalization logic close to users", needsStaticHosting: false, needsFullStackFramework: false, needsLongRunningBackend: false, needsEdgeCompute: true, needsManagedDatabase: false },
  { label: "Node API with Postgres and a worker queue", needsStaticHosting: false, needsFullStackFramework: false, needsLongRunningBackend: true, needsEdgeCompute: false, needsManagedDatabase: true },
];

for (const p of projects) {
  console.log(`${p.label} -> ${classifyPlatformCategory(p)}`);
}
You should see
Static docs site -> full-stack-platform
Personalization logic close to users -> edge
Node API with Postgres and a worker queue -> PaaS-backend
(ဒီဟာက winning product တစ်ခုတည်းကို မဖော်ပြဘဲ category သုံးမျိုးထဲက ဘယ်ဟာ ကိုက်ညီသလဲသာ ပြသည်။)

၅ မိနစ် စမ်းကြည့်

ကွဲပြားတဲ့ project idea သုံးခု ဖော်ပြပါ -- static တစ်ခု၊ backend လိုအပ်ချက် အလယ်အလတ်ရှိတဲ့ full-stack တစ်ခု၊ persistent backend လိုတဲ့ တစ်ခု။ တစ်ခုစီအတွက် ဘယ် platform category က ကိုက်ညီပြီး ဘာကြောင့်လဲ?

သတိလေးတစ်ချက်

Project ကိုယ်တိုင် ဘယ် workload category ထဲ ကျရောက်သလဲ အရင်မခွဲခြားဘဲ platform တွေကို feature-by-feature နှိုင်းယှဉ်ခြင်း။

Pricing နှင့် limit တွေ အမြဲပြောင်းလဲနေတာကြောင့် article/tutorial ဟောင်းက comparison ကို လက်ရှိ capability ပြန်မစစ်ဘဲ ယုံကြည်ခြင်း။

Wikipedia: Content delivery networkCloud Providers & Platforms

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Project ကိုယ်တိုင် ဘယ် workload category ထဲ ကျရောက်သလဲ အရင်မခွဲခြားဘဲ platform တွေကို feature-by-feature နှိုင်းယှဉ်ခြင်း။
  • Pricing နှင့် limit တွေ အမြဲပြောင်းလဲနေတာကြောင့် article/tutorial ဟောင်းက comparison ကို လက်ရှိ capability ပြန်မစစ်ဘဲ ယုံကြည်ခြင်း။
  • ဒီ course က provider/platform landscape ကို comparison-level မှာသာ သင်ပေးပါတယ် — AWS, Docker, CI/CD, Firebase, deployment fundamentals ကို နက်နက်ရှိုင်းရှိုင်း လေ့လာချင်ရင် AWS Fundamentals, Docker, CI/CD, Firebase, Cloud & Deployment tutorial တွေဆီ ဆက်သွားပါ။

လေ့ကျင့်ခန်း

ကွဲပြားတဲ့ project idea သုံးခု ဖော်ပြပါ -- static တစ်ခု၊ backend လိုအပ်ချက် အလယ်အလတ်ရှိတဲ့ full-stack တစ်ခု၊ persistent backend လိုတဲ့ တစ်ခု။ တစ်ခုစီအတွက် ဘယ် platform category က ကိုက်ညီပြီး ဘာကြောင့်လဲ?

You'll know it worked when: Static docs site -> full-stack-platform Personalization logic close to users -> edge Node API with Postgres and a worker queue -> PaaS-backend (ဒီဟာက winning product တစ်ခုတည်းကို မဖော်ပြဘဲ category သုံးမျိုးထဲက ဘယ်ဟာ ကိုက်ညီသလဲသာ ပြသည်။)

Modern Deployment Platform များကို နှိုင်းယှဉ်ခြင်း | Thuta Learning