Thuta Learning
Cloud Providers & Platforms
IntermediateDevOps & Toolsintermediate

Backend-as-a-Service (BaaS)

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

  • Backend-as-a-Service (BaaS) concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • Diagram/table ကို ဖတ်ပြီး platform/provider category တွေ ဘယ်လို ကွာခြားသလဲ ခြေရာခံနိုင်ရန်
  • ကိုယ့် project အတွက် ဘယ် platform category ကို ဘယ်လို ရွေးချယ်သင့်သလဲ ရှင်းပြနိုင်ရန်

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

BaaS ဆိုတာ backend ရဲ့ ဘုံ building block တွေကို ကိုယ်တိုင်တည်ဆောက်ရမယ့် infrastructure အစား ချိတ်ဆက်သုံးနိုင်တဲ့ ready-made service အနေနဲ့ ပေးတဲ့ platform category တစ်ခုကို ဆိုလိုပါတယ်။

  • Authentication (signup, login, session)
  • Database (structured သို့ document storage)
  • File storage
  • Realtime update
  • Custom logic အတွက် ရိုးရှင်းသော serverless function

Mental model: Frontend -> BaaS, BaaS ကနေ Auth, Database, Storage, Realtime ဆိုပြီး ကွဲပြားသော်လည်း ပေါင်းစည်းထားသော service များဆီ ကွဲထွက်ပါတယ်။

BaaS ဟာ အခြေအနေအချို့မှာ တခြားထက် ပိုကောင်းစွာ ကိုက်ညီပါတယ် -- ကိုယ်ဘယ်အခြေအနေထဲရှိသလဲ ခွဲခြားသိခြင်းက product သီးသန့်ကို reputation နဲ့ ရွေးချယ်တာထက် ပိုအရေးကြီးပါတယ်။

  • ကိုက်ညီသော အခြေအနေ: prototyping နှင့် MVP
  • ကိုက်ညီသော အခြေအနေ: small-to-medium application
  • ကိုက်ညီသော အခြေအနေ: dedicated backend engineer မရှိသော team
  • အားနည်းသော ကိုက်ညီမှု: generic building block များနှင့် မကိုက်ညီသော highly custom business logic
  • အားနည်းသော ကိုက်ညီမှု: platform ဒီဇိုင်းထုတ်ထားခြင်း မခံရသော unusual data access pattern
  • အားနည်းသော ကိုက်ညီမှု: underlying infrastructure ကို အပြည့်အဝ ထိန်းချုပ်လိုသော hard requirement
BaaS
Backend-as-a-Service -- auth, database, storage, realtime, functions ကဲ့သို့ backend building block အသင့်ပြင်ဆင်ထားသော platform အမျိုးအစားဖြစ်ပြီး ကိုယ်တိုင်တည်ဆောက်ပြီး operate လုပ်ရမည့် infrastructure အစား ချိတ်ဆက်အသုံးပြုနိုင်သည်။
text
BAAS MENTAL MODEL
-----------------
                 +------------------------+
                 |          BaaS           |
   Frontend ---->|  Auth   |  Database      |
                 |  Storage |  Realtime     |
                 +------------------------+

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

Backend ဘာလုပ်ရမလဲဆိုတာကို ရိုးရိုးသားသား စာရင်းလုပ်ခြင်းကနေ စပါ -- login, structured data, file upload, live update စတာတွေဟာ BaaS ကောင်းစွာ ကာမိလေ့ရှိတဲ့ ဘုံလိုအပ်ချက်တွေပါ။

  • Signup/login နှင့် session စီမံခန့်ခွဲမှု
  • Structured data ကို storage/query လုပ်ခြင်း
  • User file upload/retrieve ခွင့်ပြုခြင်း
  • Connected client များဆီ realtime update ပို့ခြင်း

Highly custom logic (proprietary algorithm, unusual legacy integration) ဟာ ဘယ်နေရာမှာမဆို ရှိနေဖို့ လိုအပ်ဆဲပါ -- BaaS-hosted function ဖြစ်စေ၊ custom backend သီးခြား ဖြစ်စေပါပဲ။

အများသုံးတဲ့ အလယ်လမ်းကတော့ hybrid ပါ -- generic အပိုင်းအတွက် BaaS၊ တကယ့်ထူးခြားတဲ့ အပိုင်းအတွက် custom backend code -- ဒီရွေးချယ်မှုကလည်း လိုအပ်ချက် ရှင်းလင်းလာသလို နောက်ပိုင်းပြောင်းလို့ရပါတယ်။

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

javascript
function suggestBackendApproach(project) {
  const { needsAuth, needsDatabase, needsRealtime, hasCustomComplexBusinessLogic, hasDedicatedBackendTeam } = project;

  if (hasCustomComplexBusinessLogic && hasDedicatedBackendTeam) {
    return "custom backend";
  }
  if (needsAuth || needsDatabase || needsRealtime) {
    return "BaaS";
  }
  return "custom backend";
}

const projects = [
  { label: "Weekend prototype with login and a database", needsAuth: true, needsDatabase: true, needsRealtime: false, hasCustomComplexBusinessLogic: false, hasDedicatedBackendTeam: false },
  { label: "Fintech platform with complex settlement logic and a backend team", needsAuth: true, needsDatabase: true, needsRealtime: false, hasCustomComplexBusinessLogic: true, hasDedicatedBackendTeam: true },
];

for (const p of projects) {
  console.log(`${p.label} -> ${suggestBackendApproach(p)}`);
}
You should see
Weekend prototype with login and a database -> BaaS
Fintech platform with complex settlement logic and a backend team -> custom backend
(Generic လိုအပ်ချက်ရှိတဲ့ prototype ကို BaaS၊ custom logic + backend team ရှိတဲ့ project ကို custom backend လို့ suggest လုပ်သည်။)

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

ရင်းနှီးတဲ့ app idea တစ်ခုရဲ့ backend လိုအပ်ချက်တွေကို list လုပ်ပါ။ ဘယ်လိုအပ်ချက်တွေကို BaaS platform က တိုက်ရိုက် ကာမိနိုင်ပြီး ဘယ်လိုအပ်ချက်တွေကို custom logic ထပ်ထည့်ဖို့ လိုအပ်မလဲ?

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

BaaS ဆိုတာ backend code လုံးဝမလိုဘူးလို့ ယူဆခြင်း -- custom business logic ဟာ ဘယ်နေရာမှာမဆို ရှိနေဖို့ လိုအပ်ဆဲဖြစ်ပြီး BaaS platform host လုပ်ပေးတဲ့ function တွေထဲမှာ ဖြစ်လေ့ရှိသည်။

BaaS-vs-custom-backend ရွေးချယ်မှုကို အမြဲတမ်း၊ အားလုံး-သို့မဟုတ်-ဘာမှမဟုတ် အဖြစ် ယူဆခြင်း -- hybrid approach ဟာ အများသုံးပြီး နောက်ပိုင်းပြောင်းတာလည်း ပုံမှန်ဖြစ်သည်။

Wikipedia: Mobile backend as a serviceCloud Providers & Platforms

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

  • BaaS ဆိုတာ backend code လုံးဝမလိုဘူးလို့ ယူဆခြင်း -- custom business logic ဟာ ဘယ်နေရာမှာမဆို ရှိနေဖို့ လိုအပ်ဆဲဖြစ်ပြီး BaaS platform host လုပ်ပေးတဲ့ function တွေထဲမှာ ဖြစ်လေ့ရှိသည်။
  • BaaS-vs-custom-backend ရွေးချယ်မှုကို အမြဲတမ်း၊ အားလုံး-သို့မဟုတ်-ဘာမှမဟုတ် အဖြစ် ယူဆခြင်း -- hybrid approach ဟာ အများသုံးပြီး နောက်ပိုင်းပြောင်းတာလည်း ပုံမှန်ဖြစ်သည်။
  • ဒီ course က provider/platform landscape ကို comparison-level မှာသာ သင်ပေးပါတယ် — AWS, Docker, CI/CD, Firebase, deployment fundamentals ကို နက်နက်ရှိုင်းရှိုင်း လေ့လာချင်ရင် AWS Fundamentals, Docker, CI/CD, Firebase, Cloud & Deployment tutorial တွေဆီ ဆက်သွားပါ။

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

ရင်းနှီးတဲ့ app idea တစ်ခုရဲ့ backend လိုအပ်ချက်တွေကို list လုပ်ပါ။ ဘယ်လိုအပ်ချက်တွေကို BaaS platform က တိုက်ရိုက် ကာမိနိုင်ပြီး ဘယ်လိုအပ်ချက်တွေကို custom logic ထပ်ထည့်ဖို့ လိုအပ်မလဲ?

You'll know it worked when: Weekend prototype with login and a database -> BaaS Fintech platform with complex settlement logic and a backend team -> custom backend (Generic လိုအပ်ချက်ရှိတဲ့ prototype ကို BaaS၊ custom logic + backend team ရှိတဲ့ project ကို custom backend လို့ suggest လုပ်သည်။)

Backend-as-a-Service (BaaS) | Thuta Learning