LAMP, MEAN, MERN တွေကို လေ့လာသင့်သေးရဲ့လား
Web Developer တွေအနေနဲ့ ဒိတ်အောက်သွားတဲ့ LAMP, MEAN, MERN တွေကို လေ့လာသင့်သေးရဲ့လား။ Stack တွေနဲ့ ပတ်သက်လို့ သိသင့်တာတွေ ရှင်းပြလိုက်ပါတယ်။
ဟိုးအရင်က tech လောကမှာ LAMP တခေတ်ရှိခဲ့ဖူးတယ်။ Linux, Apache, MySQL နဲ့ PHP လေးခုအတွဲပေါ့။ အဲခေတ်မှာ အင်တာနက်ပေါ် မြင်ရသမျှ forum တွေ၊ blog website တွေ၊ startup ကုမ္မဏီတွေ ပြောရရင် 2007-2008 ဝန်းကျင်မှာ Contact Us ဆိုပြီး ဖြည့်ရတဲ့ form မှန်သမျှ အကုန်နီးနီးက LAMP နဲ့ရေးထားတာချည်းပဲ။ LAMP ခေတ်က Developer ဖြစ်ရတာ အချောင်လည်ဆုံး အချိန်လို့တောင် ပြောလို့ရတယ်။ သူ့ရှေ့က C++ ခေတ်ကိုလည်း ကျော်ခဲ့ပြီးပြီ။ JavaEE ကိုလည်း ကျော်ခဲ့ပြီ။ အခုခေတ်လို အသက်ရှူတိုင်း framework အသစ်တခု ထွက်နေတဲ့ အချိန်လည်း မရောက်သေးဘူး။
နောက်တော့ NodeJS ထွက်လာတယ်။
NodeJS မတိုင်ခင်အချိန်က JavaScript ကို Browser ထဲမှာပဲ interpreter ထည့်ပြီး client-side မှာ JS code တွေ run ဖို့အဓိက သုံးခဲ့ကြတယ်။ ဥပမာ Chrome ရဲ့ V8 Engine ပေါ့။ V8 Engine ဆိုတာက interpreter ရယ်၊ JIT compiler ရယ်ကို single binary (C++) အဖြစ်ရေးထားတဲ့ software ကြီး။
ဒါပေမယ့် V8 Engine က standalone process အနေနဲ့ OS ပေါ်တိုက်ရိုက် run လို့မရဘူး။ NodeJS ကလည်း ဒါမျိုး ပထမဆုံး လုပ်ပေးနိုင်ခဲ့တဲ့ project တော့မဟုတ်ပေမယ့် သူ့ရဲ့ single threaded (non-blocking) design ကြောင့် Web Application တွေတည်ဖို့ သဘောကျစရာ option တခု ဖြစ်လာတယ်။ non-blocking ဆိုတာ အလွယ်ပြောရရင် API ခေါ်နေတုန်း၊ local file တခုခုကို လှမ်းဖတ်နေတုန်း၊ ဒါမှမဟုတ် MySQL DB ဆီ CRUD statement တွေ commit နေတုန်းမှာ စောင့်နေဖို့မလိုပဲ နောက် client request တခုကို serve နိုင်တယ်ပေါ့။
နောက် 2010 ဝန်းကျင်မှာ Facebook က React နဲ့ Google က Angular တို့လို frontend framework တွေအပြိုင်ထွက်လာတယ်။ အဲမှာ MEAN နဲ့ MERN တခေတ် စတော့တာပဲ။ MongoDB, Express, Angular ဒါမှမဟုတ် React နဲ့ Node ပေါ့။ Frontend ရော၊ Backend ပါ JavaScript တခုတည်းဖြစ်သွားမယ်။ ဘယ်လောက်ထိ ရေးရလွယ်သွားလဲဆိုရင် MEAN တို့၊ MERN တို့သုံးပြီး ကော်ဖီဖျော်ထားတာ မအေးခင် ပုံစံကြမ်းတခု ချက်ချင်းကောက်ရေးပြီး deploy လိုက်လို့တောင် ရတယ်။ 10 နှစ်လောက်အကြာမှာ NextJS တို့၊ GraphQL တို့၊ tRPC တို့နဲ့ Cloud native တခေတ်ကို ထပ်ကူးသွားပြီပေါ့လေ။
ဒါပေမယ့် developer လောကထဲ အခုမှဝင်ခဲ့မယ့် Junior တွေက LAMP, MEAN နဲ့ MERN ဒီ stack တွေနဲ့ ရင်းနှီးထားသင့်တယ်လို့ ပြောချင်တယ်။ အထူးသဖြင့် LAMP ပေါ့။
တချိန်က LAMP က သန်းနဲ့ချီတဲ့ developer တွေအတွက် starter pack ကြီးလိုကိုဖြစ်ခဲ့တာ။ စျေးပေါပေါ VPS တခုပေါ် အကုန်ကောက်တင်ပြီး FileZilla လောက်သုံးတတ်လည်း အလုပ်ရဖို့ အာမခံတယ်။ Laravel လို framework မျိုးတွေကြောင့် php project တွေကပိုစနစ်ကျလာတယ်။ Junior တွေက Web Development လေ့လာတဲ့အခါ တခြားဟာတွေ မလုပ်သေးခင် အနည်းဆုံးတော့ LAMP သုံးပြီး server configuration တွေ backend logic တွေ SQL query တွေရဲ့ အခြေခံလောက် တီးမိခေါက်မိရှိအောင် ရေးကြည့်ခဲ့ဖူးသင့်တယ်။
ဘာလာလာ JavaScript နဲ့ဒေါင်းချင်တာဆိုရင်တော့ MEAN နဲ့ MERN ၂ ခုထဲက တခုခုကို မဖြစ်မနေ လေ့လာသင့်တယ်။ NodeJS ပါလာလို့ LAMP လို Web Server သီးသန့်မလိုတော့ဘူး။ asynchronous programming လည်းရှိပြီးသား။ MySQL နဲ့စာရင် read/write အများကြီး ပို efficient ဖြစ်တဲ့ Mongo ကိုရွေးထားတယ်။
2013 မှာ Paypal က NodeJS စသုံးပြလိုက်ပြီးကတည်းက 2014-15 ဝန်းကျင်မှာပေါ်တဲ့ startup တိုင်းနီးပါး အကုန်လုံး ထမင်းနဲ့ မာမီးပဲ (MERN-MEAN) ပဲ။ ကျွန်တော် secondary high school ကို 2016 မှာပြီးတယ်။ အဲအချိန်က LAMP ကိုအတော်လေးသုံးကြသေးပြီး MERN/MEAN က အရှိန်ရနေပြီပေါ့။ ဒါပေမယ့် အခုကျ LAMP က legacy ဖြစ်သွားပြီ။ Angular က React ကိုလုံးဝ ရှုံးသွားပြီး MERN ကလည်း static site generation, SSR နဲ့ serverless တဆင့်ပြီးတဆင့် ခုန်တက်သွားပြီ။ stack အသစ်တွေက flexible ပိုဖြစ်လာ၊ ပိုကောင်းလာတယ်ဆိုပေမယ့် Junior တွေက အဟောင်းတွေကို တန်းကျော်ပစ်ခဲ့ဖို့ မသင့်ဘူး။
ဘာလို့လဲဆိုတော့ Web Application တွေတကယ် ဘယ်လိုအလုပ်လုပ်လဲဆိုတာကို အဲဒီ stack တွေကကောင်းကောင်းသင်ပေးနိုင်တာမို့ပဲ။ routing (HTTP multiplexer) ဘယ်လိုအလုပ်လုပ်လဲ၊ session နဲ့ token ဘာကွာလဲ၊ Relational နဲ့ Document DB ဘယ်ဟာ သုံးမှာလဲ စသဖြင့် ဒါတွေသေချာနားလည်ခဲ့မှသာ legacy code တွေကိုင်ရတဲ့အခါ မျက်ရည်မျက်ခွက် မဖြစ်မှာပါ။
အဓိကအချက်က stack တခုခုမှာ ကောင်းကောင်းမြင်တတ် သွားပြီဆိုတာနဲ့ နောက်ထပ် ဘာလာလာ ခပ်မြန်မြန်ပဲ adapt လုပ်သွားနိုင်လိမ့်မယ်။ ဘာလို့လဲဆို တကယ်တမ်းဘာ stack သုံးလဲက အရေးမှ မကြီးတာ။ Software Engineer ကောင်းတယောက်ဖြစ်ဖို့ဆိုရင် tool တွေကိုမှီခိုနေလို့မရဘူး။ principle တွေကို ကြေလည်ထားဖို့သာ အရေးကြီးတယ်။
PHP နဲ့ MVP pattern ရေးပြတတ်တဲ့သူ၊ Node နဲ့ RestAPI ဆောက်နိုင်တဲ့သူ၊ raw SQL တွေ ကောင်းကောင်းရေးတတ်တဲ့သူက တခြားဘာကြီးပဲလာလာ ခပ်မြန်မြန် လေ့လာသွားနိုင်မှာပဲ။ ဒီတော့ Framework Developer မဖြစ်စေနဲ့။ ငါက ဒီဟာနဲ့မှ ရေးမယ်လို့မပြောနဲ့။ တယောက်တည်းကို သစ္စာရှိသွားတယ်ဆိုတာ အချစ်မှာပဲ ကောင်းတယ်။