DEV Community

Aung Myat Moe
Aung Myat Moe

Posted on • Originally published at aungmyatmoe.me on

Architectural Problems in Nutshell

Problem ကိုဘယ်လို Solve ရမလဲပေါ့။ SWE တွေဖြစ်တာကြောင့် Code ရေးပြီး Solve မှာပေါ့။ ရှင်းပါပြီတဲ့။ ဒီ Solution ဟာ Reliable ဖြစ်ရဲ့လား။ နောက်တစ်ယောက်ကို Handover လုပ်တဲ့အခါမှာအဆင်ပြေရဲ့လား။ ဘယ်သူကမှ ဘာမှန်းမသိတဲ့ Code တွေကိုမရေးချင်သလိုဖတ်လည်းမဖတ်ချင်ကြပါဘူး။ Reliable ဖြစ်လား၊ မဖြစ်လားဆိုတာက တာဝန်ယူမှု၊ တာဝန်ခံမှု နဲ့တိုက်ရိုက်အချိုးကျတယ်။ ခုပြဿနာကိုလောလောဆယ်ရှင်းသွားပေမဲ့နောက်နေ့ကြတော့ဒီကောင်ကကန့်လန့်ကြီးခံနေတယ်ဆိုရင် Architectural Problem ဖြစ်နေပါပြီ။

ရှင်းတဲ့အခါမှာ ပြဿနာကိုဘယ်လို Defines မှာလဲပေါ့။ ပြဿနာကို Defines နိုင်ဖို့က Business Domain ကိုသိဖို့လိုတယ်။ ဒါကဘာလုပ်တာလဲပေါ့။ ဆိုပါစို့ Facebook ဆို Post တင်ဖို့၊ Friend တွေရဲ့ Post တွေကြည့်ဖို့‌။ သူ့ရဲ့အဓိက Domain ကဒါပဲလေ။ အဓိက Abstract ကိုသိဖို့လိုတယ်။ Abstract ကိုသေချာမသိရင် သောကြာနေ့ရောက်တိုင်းဖင်ကြိမ်းနေရမှာ။ Based ။ ကိုယ့်ရဲ့ Application က Request လေးနည်းနည်းလေးဆိုကိစ္စမရှိဘူး။ Write Request 10K/s ဆိုဘယ်လိုလုပ်မလဲ။ Read Request အတွက် Scale ရတာကလက်ပေါက်မကပ်ဘူး။ Replicate လုပ်၊ Scale Out လုပ်ပေါ့။ ဒီလို Scale တာက Infra Level မှာပဲ Scale တာဖြစ်တယ်။ Code Level မှာပါ Scale နိုင်ဖို့လိုတယ်။ Code Level ကို Scale တဲ့အခါဘယ်လို Scale မှာလဲ ဘယ်နေရာကို Scale မှာလဲဆိုတာလည်းသိဖို့လိုတယ်။

Expensive Task တွေလုပ်ရမယ်ဆိုပါစို့။ ကိုယ့်ရဲ့ App က JavaScript သုံးထားတယ်ဆိုရင် File Processing လိုကိစ္စတွေမှာခွေးအကြီးလှည်းတက်နင်းသလိုဖြစ်သွားမှာပေါ့။ ဒီတော့နေရာတကာမှာ JavaScript သုံးမရဘူးပေါ့။ အဲ့တော့ဘယ်လိုလုပ်မလဲ။ Expensive Task တွေကဘာတွေလဲအရင် Define ဖို့လိုတယ်။ ဘာတွေလုပ်ရမှာလဲပေါ့။ Invoice တွေကို PDF အနေနဲ့ Generate ပြီး Mail နဲ့ပို့တာမျိုး၊ Invitation Code 3, 4, 5 သိန်းကို XSLT Format နဲ့ပြန်ထုတ်တာမျိုးလား။ ဒါတွေပေါ်မူတည်ပြီးတော့ကိုယ်သုံးမဲ့ Language ကပြောင်းသွားမှာဖြစ်တယ်။

တစ်ခု JavaScript နဲ့ Expensive Task တွေလုပ်နေမဲ့အစား Computing Power ပိုကောင်းတဲ့ Rust လို၊ Go လိုကောင်မျိုးသုံးတာမျိုး။ ဒါမျိုးကို Problem Solve လုပ်တယ်လို့ခေါ်တယ်။ တစ်ခုတည်းမှာ Stuck နေတာက Problem Solving မဟုတ်ဘဲနဲ့ တမင်တွယ်ကပ်နေတာသပ်သပ်ပဲဖြစ်တယ်။

Code Level Scale တဲ့နေရာမှာ Independent Scale Out နိုင်ဖို့လိုအပ်တယ်။ ကိုယ့်ရဲ့ App က ML Model တွေပါလာရင်ဘယ်လိုလုပ်မလဲ။ ဒီ Service တွေကိုဘယ်လိုခွဲထားမလဲ။ Data တွေ Train ဖို့ဘယ်လိုလုပ်မှာလဲ။ Facebook လို Dynamic ပြောင်းနေတဲ့ Content တွေကိုဘယ်လို Cache မှာလဲ။ ကိုယ်သုံးနေတဲ့ Tech မှာပါလား။ မပါရင်ပါတဲ့ကောင်နဲ့ဘယ်လို Integrate မလဲ။ ‌ Service to Service Talk ရင်ဘယ်လိုလုပ်မှာလဲ။ Message Queue သုံးမှာလား၊ Message Streaming လုပ်မှာလား။ Failure ဖြစ်ရင်ဘယ်လိုထိန်းမှာလဲ စသည်ဖြင့် ဒါတွေကိုပါ Considering လုပ်ဖို့လိုပါတယ်။

Top comments (0)