Blue-Green and Canary Deployment

Continuous Integration, Continuous Development Cloud Computing , DevOps လောကမှာတော့ Blue-Green Deployment နဲ့ Canary  Deployment ဆိုတာ မသိမဖြစ်တွေ ပါပဲ။

လူတိုင်း ကွန်ပျူတာကို လက်ပတ်နာရီလို၊ ဖုန်းလို သယ်သွားနေတဲ့ Digital ခေတ်မှာ အသုံးပြု သူတွေ အတွက် No/Low downtime application တွေ ဟာ လိုအပ်လာပါတယ်။

ဒီအတွက် Application တွေ Host လုပ်တဲ့ Infrastructure သမားတွေ ဟာလဲ Application Developer များ အတွက် No/Low downtime Environment တွေ ရှိနေဖို့ လုပ်ဆောင်ထား‌ပေးဖို့ လိုအပ်လာပါတယ်။

ဒီလို လုပ်ထားပေးဖို့ ဆိုရင် အပေါ် က Blue-Green Deployment နဲ့ Canary Deployment ဆိုတာကို ပြည့်ပြည့် ဝဝ နားလည်ဖို့ လဲ လိုပါတယ်။

Blue-Green Deployment တခု လုပ်ဖို့ ဆိုရင် 

Blue နဲ့ Green environment တထပ်တည်း တူတဲ့ Infrastructure ရှိနေရမှာ ဖြစ်ပြီး၊

Developer က Green Environment မှာ New Version release လုပ်ပြီး စမ်း၊

Blue Environment က Production Live Traffic ကို Handle လုပ်။

New version release လုပ်လို့ ရပြီ ဆိုတဲ့ အချိန်မှာ Blue Environment က Traffic ကို Green Environment ကို Transfer လုပ်ပေးခြင်း ဖြင့် no/low dowmtime application တခု ရနိုင်ပါတယ်။

အလားတူ Blue မှာ စမ်း Green မှာ release လုပ်နဲ့ တလှည့်စီ သွားနေတာကို support လုပ်နေရမှာ ပါ။

ဒါကို ပဲ Blue-Green Deployment လို့ ခေါ် တာပါပဲ။



ကျတော်တို့ Facebook သုံးရင်း နဲ့ တချို့  Feature အသစ်တွေ ကိုယ့်ဆီမှာ ပေါ် နေပြီး ကိုယ့် သူငယ်ချင်းဆီမှာ ရ မနေတာမျိုး၊ သူများတွေ ဆီမှာ Feature အသစ်တွေ ရနေပြီး ကိုယ့်မှာ ရ မနေ တာမျိုး ကြုံဖူးကြမှာ ပါ။

အဲ့ဒီလို ဖြစ်အောင် လုပ်ထား တာကို Feature Toggle/ Feature Flag လို့ ခေါ် ပြီး၊ လူတိုင်းမှာ ရမနေပဲ Random user တွေ မှာပဲ ရနေအောင် လုပ်ထားတာကိုတော့ Canary Development လို့ ခေါ် ပါတယ်။

Application Developer တွေ အနေနဲ့  တကယ့် Production မှာ deploy လုပ်စရာ မလိုပဲ

ဒီ Feature Flag ကို on/off လုပ်ပေး နိုင်ခြင်း ဖြင့် application နဲ့ user တွေ ရဲ့  Behaviour ကို အမှားနည်းနည်းနဲ့ အချိန်မကုန်ပဲ လေ့ လာ ပြု ပြင် ထိန်းသိမ်းနိုင်ပါတယ်။



ဒီတော့ အပေါ် က Deployment ၂ မျိုးမှာ 

Blue-Green Deployment ကတော့ Live Traffic ကို Environment ၂ ခု ကြားမှာ 100% Switch လုပ်ပေးတာနဲ့ ၊

Canary Deployment မှာကတော့ Random user အနည်းငယ်အတွက် Traffic ကို ခွဲထုတ်ပေးတာ ကွာခြားသွားတာပါ။

တကယ်လို့ သင်ဟာ CICD ကို ရှယ်ပလန်နဲ့ သုံးနေတဲ့ အလုပ်တခုမှာ DevOps သမား၊ Infra သမားတယောက် ဖြစ်နေမယ်ဆိုရင် ဒီ နည်းလမ်းတွေ ကို ရင်းနှီးနေရမှာ ဖြစ်ပြီး လိုအပ်တဲ့ Infra ကို သေချာ support ပေး နိုင်ရမှာပဲဖြစ်ပါတယ်။

AWS မှာ ဆိုရင် Elastic Beanstalk , Azure မှာဆိုရင် App Service, Google မှာ ဆိုရင် App Engine တွေ နဲ့ ဒီနည်း ၂ မျိုးကို စမ်းကြည့် လို့ရပါတယ်။

အားလုံးပဲ မြန်မာနှစ်သစ်မှာ အသိပညာ အသစ်တွေ နဲ့ ကျန်းမာ ချမ်းသာ ကြပါစေ။ 

ပျော်ရွှင်ပါစေဗျာ။

(Be knowledgeable, pass it on then)