# What is Monolithic ? What are Microservices ?

Microservices ဆိုတဲ့ စကားလုံးကို ကျွန်တော်တို့ ကြားဖူးကြမှာပါ။ ဒီနေ့မှာတော့ ကျွန်တော်က Microservices Vs Monolith ဆိုတာကို ကျွန်တော် မှတ်ထားတဲ့ notes ပေါ်အခြေခံပြီးတော့ အလွယ်ရှင်းပြပေးပါမယ်။

### Monolith ဆိုတာဘာလဲ။

Monolithic ဆိုတာက Traditional approach တစ်ခုပါ။ Traditional ဆိုတဲ့ အတိုင်းပဲ နည်းနည်းတော့ အောက်နေပြီပေါ့။ ဆိုကြပါဆို့ ကျွန်တော့် ဆီမှာ Application တစ်ခု ရှိတယ်။ အဲ့ Application သေချာ ပုံမှန်အတိုင်း အလုပ်လုပ်ဖို့ အတွက် လိုအပ်တဲ့ services တွေကို Single Unit တစ်ခုထဲမှာပဲ ထည့်ပြီး သုံးတာမျိုးပါ။

ဆိုလိုတာက user interface, business logic, and data access layer အဲ့လို services အကုန်လုံးကို Single Unit တစ်ခုထဲမှာပဲ ထည့်ပြီး သုံးတာမျိုးပါ။ ဒီလိုပုံစံမျိုးကို အခုထိ သုံးနေသေးတဲ့ တစ်ချို့ Organization တစ်ချို့ ရှိနေဦးမှာပါ။

ဒါဆိုသူ့ကို သုံးနေလို့ ဘယ်လို အကျိုးဆက် ရှိနေမလဲ ????  
ကျွန်တော်က Application ကို changes or update တစ်ခုခု လုပ်တော့မယ် ဆိုပါတော့။ ဒါဆိုရင် ကျွန်တော်က monolith တစ်ခုလုံးကို modifying and redeploying လုပ်ဖို့ လိုအပ်ပါတယ်။

ဒါပေမယ်လို့ Monolithic တွေက တည်ဆောက်ရတာ ရိုးတယ်။ Server တစ်လုံးထဲမှာ အားလုံးကို ပစ်ထည့်လိုက်ရတာကိုးး။ အဲ့တော့ အခုထိ လဲ Small to Medium Organization တစ်ချို့မှာ သုံးနေကြသေးတာပါပဲ။

ဒါပေမယ့်လဲ အပေါ်မှာ ပြောခဲ့ သလိုပဲ ကိုယ်က Maintain လုပ်တော့မယ် ဆိုရင် Application က ဘယ်လောက် growth ဖြစ်နေလဲ ဆိုတာကို မူတည်ပြီးတော့ အခက်အခဲ ရှုပ်ထွေးမူ တွေတော့ ရှိလာနိုင်ပါတယ်။

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeCvwjkMo3inkIKkPjQEqY2IUpIl7D4lDq20yyczkuW-9D8J0bn0g-kZl29sARqbC6V6pwZOnXXlRjL6VHpE-15gUKtefatj3eyG2j_gNetxaaRy3zWE2kcUxe0ZOLOxxfdmf3-2TSbCqGbMY-lIc9ErbUo?key=JobhWTD2KF93Pp_1GYP0xQ align="left")

---

### Microservice ဆိုတာ ဘာလဲ?

Microservice ဆိုတာကတော့ ကိုယ့်ရဲ့ Application အတွက် လိုအပ်တဲ့ Service တွေကို Single Unit တစ်ခုထဲမှာ အကုန် စုပြီး မထည့်ထားပဲနဲ့ services တွေကို တစ်ခုပေါ်တစ်ခု မှီခိုမူမရှိအောင်ထားပြီး collection အနေနဲ့ ထားတာမျိုးကိုပြောတာပါ။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1727095989006/cb005e20-ea2f-4bdc-9177-1c8e59397eb5.png align="center")

ဒီပုံလေးလိုပါ။

ဒါဆို services တွေက ဘယ်လိုမျိုး ဆက်သွယ်ကြလဲ? Network တစ်ခုပေါ်ကနေ အခြင်းခြင်းပြန်ပြီး ဆက်သွယ်ကြပါတယ်။ တစ်ခါတစ်လေကျရင်တော့ http လိုမျိုး lightweight ဖြစ်တဲ့ protocol မျိုးကို သုံးတာမျိုးတော့ Message Queues လိုမျိုးကို သုံးပြီး ဆက်သွယ်လေ့ ရှိပါတယ်။

Docker Container 2 ခု ဆက်သွယ်တဲ့ပုံစံကို မြင်ယောင်ကြည့်လို့ရပါတယ်။

**ဒါဆို ဘာအကျိုးရှိလာလဲ ??????**

  
Application run ဖို့အတွက် လိုအပ်တဲ့ services တွေက တစ်ခုနဲ့ တစ်ခု ထပ်နေတာမျိုး မရှိတော့ဘူးဆိုတာ သိခဲ့ကြပါပြီ။

အဲ့လို ဖြစ်သွားတဲ့ အတွက်

Service တစ်ခုက Application run ဖို့ အတွက် လိုအပ်တဲ့ Functionality တစ်ခု Feature တစ်ခုကို ပဲ တာဝန်ယူတယ်။ အဲ့ဒီ အတွက် update or changes တစ်ခုခု လုပ်တဲ့ အခါမှာ သူ့ကိုပဲ effect ဖြစ်ပါတော့တယ်။

ပြီးတော့ database အတွက်ဆိုရင်လဲ service တစ်ခုစီ အတွက် database တစ်ခုစီလို ပုံစံမျိုးကိုလဲ microservice မှာ သုံးလို့ ရတယ်။ ဒါကတော့ optional ပုံစံမျိုးပါပဲ။

Flexibility ပိုင်း ကနေ ပြန်ပြီး ကြည့်မယ်ဆိုရင်လဲ ကိုယ့်ရဲ့ Application က multiple language ကို different service အတွက် သုံးဖို့ လိုအပ်နေတာမျိုး အတွက်ဆိုရင်လဲ။ microservice မှာ သက်ဆိုင်ရာ environment တည်ဆောက်ပြီးတော့ ပေးလို့ရတော့ အဆင်ပြေသွားတာပေါ့။

နောက်တစ်ခုက maintenance လုပ်တဲ့ အပိုင်း။ ဒါဆိုရင်လဲ monolithic မှာလို မဟုတ်ပဲနဲ့ ကိုယ်လိုအပ်တဲ့ service အတွက်ပဲ ကွက်ပြီး လုပ်လို့ရသွားတာပေါ့။ မတော်တဆ ကိုယ်က maintenance လုပ်နေရင်း issue တက်သွားရင်တောင် Service အကုန်လုံးကို Impact မဖြစ်တော့ဘူးပေါ့။

---

ဒီလောက်ဆိုရင် Microservice ဆိုတာ ဘာလဲ Monolithic ဆိုတာဘာလဲ ဆိုတာကိုတော့ သဘောပေါ်သွားမယ်ထင်ပါတယ်။ ပုံတွေကတော့ ကျွန်တော် note ထုတ်တုန်းက [GeeksForGeeks](https://www.geeksforgeeks.org/) ကနေ ယူထားတာပါ။ ဖတ်ရှုပေးလို့ ကျေးဇူးပါဗျ။

`the-art-by-makisam.cloud`
