လွယ်လွယ်ပြောရရင် Microservices ဆိုတာ App ကြီးတစ်ခုလုံးကို အပိုင်းသေးသေးလေးတွေ ခွဲပြီး တစ်ခုချင်းစီ သီးခြားစီ အလုပ်လုပ်ခိုင်းတဲ့ ဆော့ဖ်ဝဲတည်ဆောက်ပုံတစ်ခု ဖြစ်ပါတယ်။
ဥပမာ စားသောက်ဆိုင်ကြီးတစ်ဆိုင်နဲ့ Food Court ကို ယှဉ်ကြည့်လိုက်။ စားသောက်ဆိုင်ကြီးမှာ မီးဖိုခန်းက တစ်ခု၊ ဝန်ထမ်းအဖွဲ့က တစ်ဖွဲ့ — အရာအားလုံး တစ်ခုတည်းမှာ စုနေတယ်။ မီးဖိုခန်း ဓာတ်ငွေ့ပြတ်သွားရင် ဆိုင်တစ်ခုလုံး ပိတ်ရတယ်။ ထမင်းကြော်ပဲ မှာချင်တဲ့သူလည်း စောင့်နေရတယ်။
Food Court ကျတော့ မတူဘူး။ ထမင်းဆိုင်က သူ့ဟာသူ၊ အအေးဆိုင်က သူ့ဟာသူ၊ ကော်ဖီဆိုင်က သူ့ဟာသူ။ ကြက်ဥဆိုင်က ဒီနေ့ ပိတ်ထားရင်တောင် ထမင်းဆိုင်က ဆက်ဖွင့်နေတယ်။ ဆိုင်တစ်ဆိုင်ကို ပြင်ချင်ရင် အဲဒီဆိုင်ပဲ ပြင် — တခြားဆိုင်တွေ ထိစရာမလိုဘူး။
Microservices လည်း ဒီအတိုင်းပါပဲ။ အရင်ခေတ် App တွေ (Monolith လို့ ခေါ်တယ်) က စားသောက်ဆိုင်ကြီးလိုပဲ — Login စနစ်၊ ငွေပေးချေမှုစနစ်၊ ပစ္စည်းစာရင်း — အကုန် code တစ်ခုတည်းထဲမှာ။ တစ်ခုခု ပြင်ချင်ရင် တစ်ခုလုံး ပြန် deploy လုပ်ရတယ်။ တစ်ခုခု ပျက်ရင် တစ်ခုလုံး ကျတယ်။
Microservices မှာကျတော့ Login က သီးခြား service တစ်ခု၊ Payment က သီးခြား service တစ်ခု၊ Search က သီးခြား service တစ်ခု။ တစ်ခုချင်းစီက သူ့ database သူ့ဟာသူနဲ့ သီးခြားအလုပ်လုပ်တယ်။ တစ်ခုပျက်ရင် ကျန်တာတွေ ဆက်အလုပ်လုပ်နေတယ်။
တကယ့်ဥပမာ — Netflix။ Video ကြည့်နေတုန်း recommendation service ပျက်သွားရင် “ဒီလိုဇာတ်ကားတွေလည်း ကြည့်လို့ရတယ်” ဆိုတဲ့ အပိုင်း မပြတော့ဘူး။ ဒါပေမယ့် video က ဆက်ကြည့်လို့ရနေတုန်းပဲ။ Monolith ခေတ်တုန်းကလို တစ်ခုလုံး error တက်သွားတာမျိုး မဖြစ်ဘူး။ Amazon လည်း ဒီနည်းနဲ့ပဲ တည်ဆောက်ထားတာ။
ဒါပေမယ့် Microservices က အမြဲတမ်း အကောင်းဆုံးရွေးချယ်မှုတော့ မဟုတ်ဘူး။ ဆိုးကွက်လည်း ရှိတယ်။ Service တွေ များလာတော့ စီမံရတာ ရှုပ်တယ်။ တစ်ခုနဲ့တစ်ခု ဘယ်လိုဆက်သွယ်လဲ၊ ဘယ်သူက ဘယ်မှာလဲဆိုတာ လိုက်ကြည့်ရတာ — ဒါကြောင့်ပဲ “Kubernetes ဆိုတာ ဘာလဲ?” ဆောင်းပါးမှာ ရေးခဲ့သလိုမျိုး Captain တစ်ယောက် လိုလာတာ။
ဘယ်အချိန်မှာ Microservices စဉ်းစားသင့်လဲ —
- App က ကြီးလာပြီး developer အဖွဲ့က များလာတဲ့အခါ။
- အပိုင်းတစ်ခုကို သီးခြား update လုပ်ချင်တဲ့အခါ (တစ်ခုလုံး ရပ်စရာမလိုဘဲ)။
- အပိုင်းတစ်ခုချင်းစီကို သီးခြား scale ချဲ့ချင်တဲ့အခါ (ဥပမာ payment service ပဲ လူများလို့ ချဲ့တာ)။
- ဒါပေမယ့် App သေးသေးလေး၊ လူနည်းနည်းနဲ့ စလုပ်နေတုန်းဆို Monolith က ရိုးရိုးရှင်းရှင်းနဲ့ ပိုမြန်တယ်။ အသေးကနေ အကြီးကို ပြောင်းဖို့ အမြဲတမ်း နောက်ကျမနေဘူး။
ဒီလောက်ဆို Microservices ဆိုတာ Food Court လို — အပိုင်းသေးလေးတွေ သီးခြားစီ အလုပ်လုပ်တဲ့ ပုံစံဆိုတာ ရှင်းလောက်ပြီ။ ကိုယ့် App က ဆိုင်ကြီးတစ်ဆိုင်လား၊ Food Court လား — ကိုယ်တိုင်သာ ဆုံးဖြတ်ကြည့်။