Monolith ကို ခွဲခြမ်းစိတ်ဖြာခြင်း - SOA နဲ့ Microservices
အရင်အခန်းမှာ၊ Application အကြီးကြီးတစ်ခုဖြစ်တဲ့ Monolith က စီမံခန့်ခွဲရတာ ဘယ်လောက်ခက်ခဲလာနိုင်လဲဆိုတာကို ကျွန်တော်တို့တွေ့ခဲ့ရပါတယ်။ ဒါကြောင့် အဓိပ္ပါယ်အရှိဆုံး ဖြေရှင်းချက်ကတော့ အဲ့ဒီ Application အကြီးကြီးကို အပိုင်းသေးသေးလေးတွေအဖြစ် ခွဲထုတ်ဖို့ပါပဲ။ ဒီအခန်းမှာတော့ Distributed Systems (နေရာအနှံ့မှာ ခွဲပြီးထားတဲ့ System) တွေအကြောင်းကို လေ့လာပါမယ်။ Service-Oriented Architecture (SOA) လို့ခေါ်တဲ့ အစောပိုင်းကြိုးပမ်းမှုတစ်ခုကနေစပြီး၊ သူ့ရဲ့ခေတ်မီပြီး လူကြိုက်များတဲ့ ပြောင်းလဲတိုးတက်မှုဖြစ်တဲ့ Microservices အကြောင်းကို အသေးစိတ်လေ့လာသွားပါမယ်။
တစ်ခုတည်းကနေ အများကြီးဆီသို့
Section titled “တစ်ခုတည်းကနေ အများကြီးဆီသို့”Distributed System ဆိုတာက Component တစ်ခုချင်းစီက Network ကနေ ဆက်သွယ်ပြီး အတူတကွအလုပ်လုပ်တဲ့ System တစ်ခုပါ။ Code အားလုံးက တစ်နေရာတည်းမှာ (Monolith ထဲမှာ) run မယ့်အစား၊ မတူညီတဲ့ Process တွေ၊ Computer တွေပေါ်မှာ ခွဲပြီးထားတာဖြစ်ပါတယ်။ ဒါက Modern Large-scale Application အားလုံးနီးပါးရဲ့ အခြေခံအုတ်မြစ်ပါပဲ။
စည်းမျဉ်းအသစ်များ - Distributed Systems တွေရဲ့ စိန်ခေါ်မှုများ
Section titled “စည်းမျဉ်းအသစ်များ - Distributed Systems တွေရဲ့ စိန်ခေါ်မှုများ”Monolith ကနေ Distributed System ကို ပြောင်းလိုက်တဲ့အခါ၊ ကြားထဲမှာ Network ကို ထည့်သွင်းလိုက်ရပြီး၊ Network ဆိုတာက ကြိုတင်ခန့်မှန်းလို့မရပါဘူး။
-
Network က အမြဲတမ်း အားကိုးလို့မရဘူး: Connection တွေက ဘယ်အချိန်မဆို ပြတ်တောက်သွားနိုင်တယ်၊ ပျက်သွားနိုင်တယ်။
-
Latency (Data သွားလာချိန် ကြန့်ကြာမှု) အမြဲတမ်းရှိတယ်: Network ကနေ Data တွေသွားလာဖို့ အမြဲတမ်း အချိန်ယူရတယ်။ Monolith ထဲက Function တစ်ခုကိုခေါ်တာက မျက်စိတစ်မှိတ်အတွင်းဖြစ်ပေမယ့်၊ Network Call တစ်ခုက အဆထောင်ပေါင်းများစွာ ပိုနှေးတယ်။
-
Bandwidth က အကန့်အသတ်ရှိတယ်: သင်က Data အများကြီးကို Network ကနေ ချက်ချင်းပို့လို့မရဘူး။
Network က ပြီးပြည့်စုံတယ်လို့ ဘယ်တော့မှ မယူဆသင့်ပါဘူး။ ကောင်းမွန်တဲ့ Distributed Architecture တစ်ခုက ဒီစိန်ခေါ်မှုတွေကို ထည့်သွင်းစဉ်းစားပြီး ဒီဇိုင်းဆွဲထားပါတယ်။
ရှေ့ပြေးဖြစ်ခဲ့သော - SOA (Service-Oriented Architecture)
Section titled “ရှေ့ပြေးဖြစ်ခဲ့သော - SOA (Service-Oriented Architecture)”SOA ဆိုတာ Monolith ကို ခွဲခြမ်းဖို့အတွက် ပထမဆုံးလူကြိုက်များခဲ့တဲ့ Architectural Style တွေထဲက တစ်ခုပါ။
-
ဘာလဲဆိုတော့: SOA က Application အကြီးကြီးတစ်ခုကို Business Function အလိုက်ခွဲထားတဲ့ Service တစ်ခုစီအဖြစ် ခွဲထုတ်တာပါ (ဥပမာ - “Human Resources Service,” “Finance Service”)။ ဒီ Service တွေက လုပ်ငန်းတစ်ခုလုံးမှာ ပြန်လည်အသုံးပြုနိုင်ဖို့ ရည်ရွယ်ပါတယ်။
-
အဓိကအချက် (အားနည်းချက်) The ESB: SOA မှာ Service တွေက များသောအားဖြင့် Enterprise Service Bus (ESB) လို့ခေါ်တဲ့ အဓိက “ပိုက်လိုင်းကြီး” ကနေတစ်ဆင့် ဆက်သွယ်ကြတယ်။ ESB က Message တွေ ဘယ်ကိုသွားရမလဲဆိုတာ လမ်းကြောင်းပေးတာ၊ Data တွေကို Format ပြောင်းပေးတာ၊ နဲ့ Business Rule တွေကို ထိန်းချုပ်တာတွေ ပြုလုပ်တယ်။ ဒါက ESB ကို အလွန်ရှုပ်ထွေးစေပြီး၊ သူပျက်သွားရင် အကုန်လုံးရပ်သွားနိုင်တဲ့ အားနည်းချက် (Single Point of Failure) ဖြစ်စေပါတယ်။