နားလည်ထားရမယ့် အချက်
Localhost ဆိုတာ software ရေးဖို့ ကမ္ဘာပေါ်မှာ အလုံခြုံဆုံး နေရာပါ။ ကိုယ့် machine ပေါ်မှာ project run နေချိန် ကိုယ်တစ်ယောက်တည်းသာ မြင်ရပြီး crash ဖြစ်ရင်တောင် ပြန် restart လုပ်ရုံပါပဲ။
| အချက် | Local vs Production |
|---|---|
| Visibility | Local: ကိုယ်တစ်ယောက်တည်း ကြည့်ရတယ်။ Production: အင်တာနက်ပေါ်က ဘယ်သူမဆို ရောက်နိုင်တယ်။ |
| Risk of failure | Local: crash ဖြစ်ရင် restart ရုံပါပဲ။ Production: outage, အရောင်းဆုံးရှုံးမှု, data ပေါက်ကြားမှုတောင် ဖြစ်နိုင်တယ်။ |
| Data | Local: fake (သို့) sample data။ Production: user အစစ်တွေရဲ့ data။ |
ဒီကွာဟချက်ကနေ software မှာ အသုံးအများဆုံး စကားစုတစ်ခု ပေါ်လာတာပါ — "my machine မှာတော့ အလုပ်လုပ်တယ်"။ Environment variable, OS, config, network latency, traffic ပမာဏ ကွာခြားချက်တွေကြောင့် code က production မှာ ကွာခြားစွာ ကျင့်ဆောင်နိုင်ပါတယ်။
Production ကလည်း localhost မှာ မလိုအပ်တဲ့ HTTPS, monitoring, logging, reliability တွေကို တောင်းဆိုပါတယ်။ ဒါက ကြောက်စရာ မဟုတ်ဘဲ လေးစားထိုက်တာကို ပြသချင်တာပါ။ ဒီ lesson ဟာ ဒီ course တစ်ခုလုံးမှာ ထပ်ကြာအောင် ပြန်တွေ့ရမယ့် သတိပေးချက်ကို စိုက်ထူပေးပါတယ်။
LOCALHOST VS PRODUCTION
-----------------------
DEVELOPER'S LAPTOP THE INTERNET
------------------- -------------
http://localhost:3000 https://thutatech.com
only you can see it anyone can reach it
crashing is fine, just restart must stay up and secure
fake or sample data real user dataလက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
အောက်က code က software ရေးရာမှာ ကျယ်ကျယ်ပြန့်ပြန့် အသုံးပြုတဲ့ pattern တစ်ခုရဲ့ အသေးဆုံး version ကို ပြပါတယ် — app ဟာ ဘယ် environment မှာ run နေလဲ ဖတ်ပြီး၊ အဲဒီအဖြေအပေါ် အခြေခံပြီး behavior ကို ပြောင်းလဲပေးခြင်း ဖြစ်ပါတယ်။ detectEnvironment function က platform ပေးထားတဲ့ special variable တစ်ခုကို စစ်ပြီး၊ variable မရှိရင် default value ကို ဘေးကင်းစွာ ပြန်ပေးပါတယ်။ getApiUrl ကတော့ အဖြေအပေါ်မူတည်ပြီး app က တကယ် live ဖြစ်နေရင် production API address ကို၊ မဟုတ်ရင် local address ကို ပြန်ပေးပါတယ်။
နောက်ဆုံးလိုင်းက verbose logging ဖြစ်ပြီး develop နေချိန် on ထား production မှာ off ထားသင့်တဲ့ setting အတိအကျပါပဲ၊ ရှေ့ lesson ကို ပဲ့တင်ထပ်နေတာပါ။ ဒီ function ကို defensive ပုံစံနဲ့ ရေးထားတာ သတိပြုပါ — environment variable mechanism ရှိမရှိ အရင်စစ်ပြီးမှ ထိတွေ့တာမို့ ဒီ mechanism မရှိတဲ့ context မှာ crash မဖြစ်ပါ။
Real project တွေမှာ ဒီလို defensive အလေ့အထက အလွန်အရေးကြီးပါတယ် — code တစ်ခုတည်းက execution context အမျိုးမျိုးမှာ run တတ်လို့ပါ။ ဒီ pattern သေးသေးလေး — environment ကို ရှာ၊ ပြီးမှ ပြောင်း — ဟာ database ဘယ်ခုနဲ့ ချိတ်မလဲ၊ secret ဘယ်ခုကို load လုပ်မလဲ၊ feature ဘယ်ခုကို production ရောက်မှ on လုပ်မလဲ ဆုံးဖြတ်ပုံနဲ့ တိုက်ရိုက် ကြီးထွားလာတာပါ။
Local != Production
Localhost မှာ အလုပ်လုပ်တာဟာ production မှာလည်း အလုပ်လုပ်မယ်လို့ ဘယ်တော့မှ မယူဆပါနှင့်။ Environment variable, network, database, security ကွာခြားချက်တွေက local မှာ ဘယ်တော့မှ မတွေ့ရဘဲ production ရောက်မှသာ ပေါ်လာတတ်ပါတယ်။
အတူတူ စမ်းရေးကြည့်မယ်
function detectEnvironment() {
if (typeof process !== "undefined" && process.env && process.env.NODE_ENV) {
return process.env.NODE_ENV;
}
return "development";
}
function getApiUrl(env) {
return env === "production"
? "https://api.thutatech.com"
: "http://localhost:4000";
}
const currentEnv = detectEnvironment();
console.log(`Detected environment: ${currentEnv}`);
console.log(`API URL: ${getApiUrl(currentEnv)}`);
console.log(`Verbose logging enabled: ${currentEnv !== "production"}`);Detected environment: development
API URL: http://localhost:4000
Verbose logging enabled: true၅ မိနစ် စမ်းကြည့်
detectEnvironment() က "production" ပြန်ပေးမယ်ဆိုရင် output က ဘယ်လို ပြောင်းမလဲ စာရွက်ပေါ်မှာ ကြိုတွက်ကြည့်ပါ၊ ပြီးမှ code ထဲက return "development" ကို return "production" လို့ ပြင်ပြီး run ပြီး စစ်ဆေးကြည့်ပါ။
သတိလေးတစ်ချက်
Localhost မှာ အလုပ်လုပ်တာကို production readiness ရဲ့ သက်သေအဖြစ် ယူဆမိခြင်း
Environment variable, database, network setting ကွာခြားချက်တွေကို deploy မလုပ်ခင် စစ်ဆေးဖို့ မေ့ကျန်ခြင်း
MDN: How do you set up a local testing server? — Cloud & Deployment