နားလည်ထားရမယ့် အချက်
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 အစား ချိတ်ဆက်အသုံးပြုနိုင်သည်။
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 -- ဒီရွေးချယ်မှုကလည်း လိုအပ်ချက် ရှင်းလင်းလာသလို နောက်ပိုင်းပြောင်းလို့ရပါတယ်။
အတူတူ စမ်းရေးကြည့်မယ်
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)}`);
}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 service — Cloud Providers & Platforms