နားလည်ထားရမယ့် အချက်
ဒီစကားလုံးသုံးလုံးက အမြဲမှောက်တတ်ကြပေမယ့် အဓိပ္ပာယ်ကတော့ တကယ် ကွဲပြားပါတယ်။ Database က data ကို storage လုပ်တယ် — ဒါ့ထက်ပိုမလုပ်ပါ။ Backend မှာ server-side application logic (validation, calculation, business decision) တွေ ပါဝင်ပါတယ်။ API ကတော့ system တွေ စကားပြောနိုင်ဖို့ interface/contract တစ်ခုပါ။
ပုံမှန် flow: Frontend -> API -> Backend -> Database။ User က frontend မှာ ခလုတ်နှိပ်တယ်၊ API ကနေ request ပို့တယ်၊ backend code က ဆုံးဖြတ်တယ်၊ ပြီးမှ database ထဲက data ကို ဖတ်/ရေးတယ်။
| Layer | လုပ်ငန်း |
|---|---|
| Database | data ကို storage/organize လုပ်တယ်၊ request တစ်ခု ဘာလုပ်ခွင့်ရှိလဲ ဆုံးဖြတ်ခြင်းမပါ |
| Backend | server-side logic run တယ်: input validate, business rule apply, ဘာ read/write လုပ်မလဲ ဆုံးဖြတ်တယ် |
| API | backend ကို တစ်ခုခု လုပ်ဖို့ system တခြားတွေ တောင်းဆိုနိုင်တဲ့ interface/contract ကို သတ်မှတ်ပေးတယ် |
Beginner Mistake
'backend' ဆိုပြီး database ကို ဆိုလိုတာ (သို့) API ဟာ database တစ်ခုလိုပဲ ထင်တာက များပြားတဲ့ အမှားပါ။ API က almost data storage မလုပ်ပါ — ဒါက တံခါးတစ်ခုသာပါ။
Layer သုံးခုစလုံးက သီးခြားစီ ပြောင်းလဲနိုင်ပါတယ် — database product ပြောင်းလို့ရသလို backend အတူတူအပေါ် API ကွဲကွဲထုတ်လို့ရပါတယ်။ Team တစ်ခုမှာ engineer အသီးသီးက layer တစ်ခုစီကို တာဝန်ယူနိုင်တာက ဒီအတွက်ပါပဲ။
REQUEST FLOW: FRONTEND TO DATABASE
----------------------------------
REQUEST FLOW: FRONTEND TO DATABASE
------------------------------------
[ Frontend ] -- request --> [ API ]
|
v
[ Backend ]
(validation, business logic)
|
v
[ Database ]
(stores the data)လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
real bug ကို debug လုပ်တဲ့အခါ ဒီခွဲခြားမှုက ဘယ်ကနေ စရှာရမလဲ ပြောပြပါတယ်။ 'data isn't saving' က database/backend write logic ကို ညွှန်းတတ်ပြီး, '404/500 error' က API layer/backend route handling ကို ညွှန်းတတ်ပါတယ်။
'request success ဖြစ်ပေမယ့် number တွေမှား' ဆိုတာက database နဲ့ ဘာမှမပတ်သက်ဘဲ backend calculation logic ကို ညွှန်းလေ့ရှိပါတယ်။ symptom က layer ဘယ်ခုနဲ့ ပတ်သက်လဲ ခေါ်တတ်ဖို့က debugging skill တစ်ခုပါ။
လူတစ်ယောက်တည်းလည်း Role သုံးခု ဆောင်ရွက်နိုင်
project သေးသေးတစ်ခုမှာ database, backend, API သုံးခုလုံးကို လူတစ်ယောက်တည်းက design/ရေး/define လုပ်နိုင်ပေမယ့် role သုံးခုက concept အနေနဲ့ ကွဲပြားနေဆဲပါ။
အတူတူ စမ်းရေးကြည့်မယ်
function classifyResponsibility(description) {
const text = description.toLowerCase();
const apiHints = ["endpoint", "other apps", "expose", "http request", "public interface"];
const databaseHints = ["store", "persist", "save", "table", "row", "record", "durable"];
const backendHints = ["validate", "calculate", "business rule", "process", "authoriz", "authenticat"];
const matchesAny = (hints) => hints.some((hint) => text.includes(hint));
if (matchesAny(apiHints)) return "API";
if (matchesAny(databaseHints)) return "Database";
if (matchesAny(backendHints)) return "Backend";
return "Unclear";
}
const tasks = [
"store user records permanently",
"validate a password before login",
"expose an endpoint other apps can call",
"calculate shipping cost based on cart items",
"save a new order permanently",
];
for (const task of tasks) {
console.log(`"${task}" -> ${classifyResponsibility(task)}`);
}"store user records permanently" -> Database
"validate a password before login" -> Backend
"expose an endpoint other apps can call" -> API
"calculate shipping cost based on cart items" -> Backend
"save a new order permanently" -> Database၅ မိနစ် စမ်းကြည့်
classifyResponsibility function ကို သင့် project ကရော responsibility ၃ ခုနဲ့ စမ်းသပ်ပြီး Database/Backend/API classification မှန်မမှန် စစ်ဆေးပါ။
သတိလေးတစ်ချက်
'backend' ဆိုတဲ့ စကားလုံးကို 'database' အစား သုံးခြင်း — layer နှစ်ခုက တကယ်ကွဲပြားပါတယ်
API ဟာ database တစ်ခုလိုပဲ data ကို storage လုပ်တယ်လို့ ထင်ခြင်း
Quiz: ဘယ် Layer လဲ
Wikipedia: API — How Databases Work