Docker & DevOps

စာဖတ်သူတို့ရေ၊ Docker အကြောင်းကို ပြောပြရင်း သူ့ရဲ့ အခြေခံအကျိုးကျေးဇူးတွေနဲ့ Containerization လောကထဲက တခြား ရွေးချယ်စရာတွေကို ကြည့်ပြီးသွားပါပြီ။ အခု နည်းနည်း ပိုနက်ရှိုင်းတဲ့ နေရာကို ဆက်သွားပြီး Docker က ဘယ်လို DevOps၊ CI/CD pipelines၊ နဲ့ microservices ဆိုတဲ့ ခေတ်သစ် ဆော့ဖ်ဝဲလ် တည်ဆောက်မှု အလုပ်စနစ်တွေမှာ အရေးပါနေသလဲဆိုတာကို ဆွေးနွေးကြည့်ရအောင်။ ဒါတွေက နည်းပညာလောကမှာ အသံကုန် ပြောနေကြတဲ့ စကားလုံးတွေ ဖြစ်တာမို့ သိထားရင် အတော်လေး အကျိုးရှိပါတယ်။

Docker နဲ့ DevOps

ပထမဆုံး DevOps အကြောင်းကနေ စပြောရအောင်။ DevOps ဆိုတာ “Development” (ဆော့ဖ်ဝဲလ် တည်ဆောက်သူတွေ) နဲ့ “Operations” (ဆော့ဖ်ဝဲလ်ကို ထိန်းသိမ်းပြီး အလုပ်လုပ်အောင် လုပ်သူတွေ) ဆိုတဲ့ အဖွဲ့နှစ်ခုကို ပေါင်းစည်းပြီး ပိုမြန်မြန်၊ ပိုထိရောက်ရောက် အလုပ်လုပ်အောင် လုပ်တဲ့ ချဉ်းကပ်ပုံတစ်ခုပါ။ ဒီမှာ Docker က ဘယ်လို ဝင်လာသလဲဆိုတော့ သူက အဖွဲ့နှစ်ခုကြားက အတားအဆီးတွေကို ဖယ်ရှားပေးပါတယ်။

ဥပမာ အနေနဲ့ ဆော့ဖ်ဝဲလ် တည်ဆောက်သူတစ်ယောက်က အက်ပ်တစ်ခုကို ရေးပြီး “ကျွန်တော့် ကွန်ပျူတာမှာ အလုပ်လုပ်တယ်” လို့ ပြောတတ်ပါတယ်။ ဒါပေမယ့် Operations အဖွဲ့က အဲဒီအက်ပ်ကို ဆာဗာမှာ ဖွင့်တဲ့အခါ အလုပ်မလုပ်တာမျိုး ဖြစ်တတ်ပါတယ်။ ဒါက ပတ်ဝန်းကျင် (environment) မတူညီလို့ပါ။ Docker က ဒီ ပြဿနာကို ဖြေရှင်းပေးတယ်။ ဆော့ဖ်ဝဲလ်ကို Container တစ်ခုထဲမှာ ထည့်ပြီး လိုအပ်တဲ့ အရာအားလုံးကို အတူပါအောင် ထုပ်ပိုးလိုက်တာမို့ ဘယ်နေရာမှာ ဖွင့်ဖွင့် အလုပ်လုပ်မှာ သေချာပါတယ်။ ဒီလိုနဲ့ Development နဲ့ Operations အဖွဲ့တွေ ပိုပြီး ချောမွေ့စွာ ပူးပေါင်းလုပ်ဆောင်နိုင်သွားတာပါ။ ဒါကြောင့် DevOps လုပ်ငန်းစဉ်မှာ Docker က အဓိက ကစားသမားတစ်ယောက် ဖြစ်လာတာပါ။

Docker နဲ့ CI/CD Pipelines

အခု CI/CD ဆီ ဆက်သွားရအောင်။ CI/CD ဆိုတာ “Continuous Integration” နဲ့ “Continuous Deployment” ရဲ့ အတိုကောက်ပါ။ ဒါက ဆော့ဖ်ဝဲလ်ကို အမြဲတမ်း စမ်းသပ်ပြီး ဖြန့်ချိနိုင်အောင် လုပ်တဲ့ နည်းလမ်းတစ်ခုပါ။ ဥပမာ၊ သင်ဟာ ဖုန်းအက်ပ်တစ်ခု တည်ဆောက်နေတယ်ဆိုပါစို့။ ကုဒ်အသစ် ရေးတိုင်း အလိုအလျောက် စမ်းသပ်ပြီး အလုပ်လုပ်ကြောင်း သေချာမှ သုံးစွဲသူတွေ သုံးလို့ရအောင် ဖြန့်ချိမယ်ဆိုရင် ဒါက CI/CD ပါပဲ။

Docker က ဒီလုပ်ငန်းစဉ်မှာ ဘယ်လို အရေးပါလဲဆိုတော့ သူက တသမတ်တည်းဖြစ်တဲ့ ပတ်ဝန်းကျင်ကို ပေးနိုင်တာပါ။ CI/CD pipeline တစ်ခုမှာ ဆော့ဖ်ဝဲလ်ကို တည်ဆောက်တာ (build)၊ စမ်းသပ်တာ (test)၊ ဖြန့်ချိတာ (deploy) ဆိုတဲ့ အဆင့်တွေ ပါပါတယ်။ ဒီအဆင့်တိုင်းမှာ Docker Container တွေကို သုံးလိုက်ရင် အက်ပ်က ဘယ်အဆင့်မှာပဲဖြစ်ဖြစ် အတူတူပဲ အလုပ်လုပ်မှာ သေချာပါတယ်။ ဥပမာ၊ Jenkins လို CI/CD ကိရိယာတစ်ခုမှာ Docker ကို သုံးပြီး ကုဒ်အသစ်ကို Container ထဲမှာ စမ်းသပ်လိုက်၊ အဆင်ပြေရင် အဲဒီ Container ကိုပဲ ဆာဗာပေါ် တင်လိုက်နိုင်ပါတယ်။ ဒီလိုနဲ့ အချိန်ကုန်သက်သာပြီး အမှားအယွင်းတွေ နည်းသွားပါတယ်။

ဒါ့အပြင် Docker ရဲ့ ပေါ့ပါးမှုကလည်း CI/CD မှာ အထောက်အကူ ဖြစ်ပါတယ်။ Container တွေက စက္ကန့်ပိုင်းအတွင်း ဖွင့်လို့ရတာမို့ စမ်းသပ်မှု အကြိမ်ရေ များတဲ့ pipeline တွေမှာ အချိန်ကို အများကြီး သက်သာစေပါတယ်။ ဒါကြောင့် ခေတ်သစ် CI/CD လုပ်ငန်းစဉ်တွေမှာ Docker ကို မသုံးမနေ အသုံးပြုနေကြတာပါ။

Docker နဲ့ Microservices

နောက်ဆုံးအနေနဲ့ microservices အကြောင်းကို ပြောရအောင်။ Microservices ဆိုတာ ဆော့ဖ်ဝဲလ်တစ်ခုကို အစိတ်အပိုင်း သေးသေးလေးတွေ ခွဲပြီး တည်ဆောက်တဲ့ နည်းလမ်းတစ်ခုပါ။ ဥပမာ၊ သင်ဟာ စျေးဝယ်ဝက်ဘ်ဆိုက်တစ်ခု လုပ်နေတယ်ဆိုပါစို့။ အရင်ကဆိုရင် ဝက်ဘ်ဆိုက်တစ်ခုလုံးကို တစ်ခါတည်း တည်ဆောက်ပြီး တစ်ကွက်တည်း ဖြန့်ချိရတာမျိုး ဖြစ်ပါတယ်။ ဒါပေမယ့် microservices နည်းလမ်းကတော့ ဝက်ဘ်ဆိုက်ကို “ရှာဖွေမှု”၊ “စျေးခြင်းတောင်း”၊ “ငွေပေးချေမှု” ဆိုပြီး အပိုင်းသေးတွေ ခွဲလိုက်ပြီး အဲဒီအပိုင်းတိုင်းကို သီးသန့် တည်ဆောက်ပြီး အလုပ်လုပ်စေတာပါ။

Docker က ဒီ microservices တွေအတွက် အကောင်းဆုံး မိတ်ဖက်ပါ။ ဘာကြောင့်လဲဆိုတော့ အပိုင်းသေးတစ်ခုချင်းစီကို Docker Container တစ်ခုစီမှာ ထည့်ပြီး သီးသန့် စီမံလို့ ရလို့ပါ။ ဥပမာ၊ “ငွေပေးချေမှု” အပိုင်းက Python နဲ့ ရေးထားတယ်၊ “ရှာဖွေမှု” အပိုင်းက Java နဲ့ ရေးထားတယ်ဆိုရင် အဲဒီ Container တစ်ခုချင်းစီမှာ သူ့ရဲ့ လိုအပ်တဲ့ ပတ်ဝန်းကျင်ကို ထည့်ပြီး အလွယ်တကူ ဖြန့်ချိနိုင်ပါတယ်။ ဒါ့အပြင် တစ်ခုခု ပြဿနာဖြစ်ရင်—ဆိုပါစို့ “စျေးခြင်းတောင်း” အပိုင်းမှာ ချို့ယွင်းချက် ရှိသွားတယ်—အဲဒီအပိုင်းကိုပဲ ပြန်ပြင်ပြီး ဖြန့်ချိလို့ ရတာမို့ တစ်ခုလုံးကို ပြန်လုပ်စရာ မလိုပါဘူး။

Docker ရဲ့ ပေါ့ပါးမှုကလည်း microservices မှာ အရေးပါပါတယ်။ အပိုင်းသေးတွေ အများကြီး ဖြစ်လာတဲ့အခါ Virtual Machines တွေ သုံးမယ်ဆိုရင် နေရာအများကြီး ယူပြီး နှေးကွေးသွားနိုင်ပေမယ့် Docker Containers ကတော့ အနည်းငယ်ပဲ နေရာယူပြီး မြန်မြန် အလုပ်လုပ်တာမို့ microservices တွေကို ထိန်းသိမ်းရတာ ပိုလွယ်ကူစေပါတယ်။ ဒါကြောင့် Netflix၊ Amazon လို ကုမ္ပဏီကြီးတွေက microservices တွေကို Docker နဲ့ တွဲသုံးပြီး သန်းနဲ့ချီတဲ့ သုံးစွဲသူတွေကို ဝန်ဆောင်မှု ပေးနိုင်နေတာပါ။

အားလုံးကို ပေါင်းစပ်လိုက်တဲ့အခါ

DevOps၊ CI/CD၊ နဲ့ microservices ဆိုတာ တစ်ခုနဲ့တစ်ခု ဆက်စပ်နေပါတယ်။ DevOps က အဖွဲ့တွေ ပိုမြန်မြန် အလုပ်လုပ်နိုင်အောင် လုပ်ပေးတယ်၊ CI/CD က ဆော့ဖ်ဝဲလ်ကို အမြဲတမ်း စမ်းသပ်ပြီး ဖြန့်ချိနိုင်အောင် လုပ်ပေးတယ်၊ microservices ကတော့ အက်ပ်တွေကို အပိုင်းသေးတွေ ခွဲပြီး ပိုလွယ်လွယ် စီမံလို့ရအောင် လုပ်ပေးတယ်။ ဒီသုံးခုလုံးမှာ Docker က အဓိက အခန်းကဏ္ဍက ပါဝင်နေပြီး သူ့ရဲ့ တသမတ်တည်းဖြစ်မှု၊ ပေါ့ပါးမှု၊ နဲ့ အလွယ်တကူ သုံးနိုင်မှုက ဒီလုပ်ငန်းစဉ်တွေကို ပိုထိရောက်အောင် လုပ်ပေးပါတယ်။


ဒီလောက်ဆိုရင် Docker ရဲ့ DevOps၊ CI/CD pipelines၊ နဲ့ microservices တွေနဲ့ ဘယ်လို သက်ဆိုင်မှု ရှိသလဲဆိုတာ ရှင်းသွားမယ်ထင်ပါတယ်။

Scroll to Top