Bad Habits in DevOps (anti-patterns)

DevOps ရဲ့ ရည်ရွယ်ချက်က software development နဲ့ operations team တို့ကို ပေါင်းစည်းပြီး idea တစ်ခုကနေ user တွေသုံးနိုင်တဲ့ product တစ်ခုဖြစ်လာဖို့ software တစ်ခုကို စတင် ရေးသားတာကနေ စပြီး အဲဒီ software ကို အသုံးပြုသူတွေဆီ လက်ထဲရောက်အောင် ပို့ဆောင်နိုင်တဲ့အချိန်ကို အတတ်နိုင်ဆုံး လျှော့ချကာ high-quality ဖြစ်တဲ့ software ကို ပေးပို့ဖို့ ဖြစ်ပါတယ်။ ဒါပေမယ့် ဒီလိုလုပ်ဆောင်တဲ့အခါမှာ မကောင်းတဲ့ အလေ့အကျင့်တွေ ပေါ်လာတတ်ပါတယ်။ ဒါတွေကို "anti-patterns" လို့ခေါ်ပါတယ်။
1. Cargo Culting (အတုယူမှားခြင်း)
"Cargo cult" ဆိုတဲ့ စကားလုံးက ဒုတိယကမ္ဘာစစ်တုန်းက Pacific ကျွန်းသားတွေဆီက စတာပါ။ သူတို့က အမေရိကန် စစ်သားတွေ လေယာဉ်ကွင်းတွေ ဆောက်ပြီး ရိုးရာဓလေ့တွေ လုပ်တဲ့အခါ ကုန်ပစ္စည်းတွေ ပါလာတဲ့ လေယာဉ်တွေ ဆင်းလာတာကို မြင်တော့၊ အဲဒီလို လေယာဉ်ကွင်း အတုတွေ၊ ဝါးနဲ့လုပ်ထားတဲ့ နားကြပ်တွေ လုပ်ပြီး အဲဒီဓလေ့တွေကို လုပ်ရင် လေယာဉ်တွေ ပြန်ဆင်းလာမယ်လို့ ယုံကြည်ခဲ့ကြတယ်။ ဒါပေမယ့် အနှစ်သာရကို နားမလည်တော့ တကယ့်ရလဒ် မရခဲ့ဘူး။
DevOps မှာလည်း အတူတူပါပဲ။ တခြားအောင်မြင်တဲ့ ကုမ္ပဏီတွေ (ဥပမာ- Netflix, Amazon) က လုပ်နေတဲ့ DevOps practices တွေကို အနှစ်သာရကို နားမလည်ဘဲ ပုံစံတူ အကုန်လိုက်လုပ်တာကို "cargo culting" လို့ခေါ်ပါတယ်။
ဥပမာ: နေ့စဉ် "daily standup meeting" လုပ်ရုံနဲ့ Agile ဖြစ်သွားပြီလို့ ထင်တာ၊ ဒါမှမဟုတ် "microservices" architecture ကို ဘာလို့သုံးလဲဆိုတဲ့ အကြောင်းရင်းကို သေချာနားမလည်ဘဲ အကုန်လုံးကို microservices တွေအဖြစ် ခွဲပစ်တာမျိုး။
ဘာကြောင့် မကောင်းလဲ: ကိုယ့်ရဲ့ team နဲ့ company culture နဲ့ မကိုက်ညီတဲ့ practices တွေကို လုပ်တာကြောင့် အချိန်ကုန်၊ လူပင်ပန်းပြီး တကယ့်တိုးတက်မှု (business value) ကို မရရှိနိုင်ပါဘူး။
2. Tool Obsession (Tool ကို စွဲလမ်းခြင်း)
DevOps မှာ automation အတွက် tools တွေက အရေးကြီးပါတယ်။ ဒါပေမယ့် tools တွေအပေါ်မှာပဲ အာရုံစိုက်ပြီး၊ tool ကို ဘယ်လိုကောင်းအောင် သုံးမလဲ၊ ဘာကြောင့် သုံးမလဲဆိုတဲ့ strategy ကို မစဉ်းစားမိတာကို "tool obsession" လို့ခေါ်ပါတယ်။
ဥပမာ: market မှာ popular ဖြစ်နေတဲ့ CI/CD tools တွေ၊ monitoring tools တွေ (ဥပမာ- Jenkins, Kubernetes, Grafana, Prometheus) ကို အကုန်ဝယ်သုံးပေမယ့်၊ အဲဒီ tools တွေက ကိုယ့်အဖွဲ့အစည်းရဲ့ လိုအပ်ချက်ကို တကယ်ဖြည့်ဆည်းပေးရဲ့လား၊ ဒါမှမဟုတ် ပိုပြီး ရှုပ်ထွေးအောင်ပဲ ဖြစ်စေလားဆိုတာ မစဉ်းစားတာမျိုး။
ဘာကြောင့် မကောင်းလဲ: Tools တွေက DevOps ရဲ့ goal ကိုရောက်ဖို့ ကူညီပေးတဲ့ အရာတွေပါ။ Tools တွေချည်း စုဆောင်းနေပြီး communication, collaboration, process improvement စတဲ့ အရေးကြီးတဲ့ အပိုင်းတွေကို လျစ်လျူရှုမိရင် တကယ့်ပြောင်းလဲမှု ဖြစ်လာမှာ မဟုတ်ပါဘူး။ "Culture" က "tools" ထက် ပိုအရေးကြီးပါတယ်။
3. Unnecessary Toil (မလိုအပ်တဲ့ ပင်ပန်းမှု)
"Toil" ဆိုတာ automation လုပ်လို့ရတဲ့၊ manual ဖြစ်နေတဲ့၊ ထပ်ခါတလဲလဲ လုပ်နေရတဲ့ အလုပ်တွေကို ဆိုလိုပါတယ်။ ဥပမာ- server ကို reboot လုပ်တာ၊ configuration files တွေကို update လုပ်တာ၊ deployment ကို manual run ပေးတာ စတဲ့ အလုပ်တွေပါ။ DevOps ရဲ့ ရည်ရွယ်ချက်တစ်ခုက အဲဒီလို toil တွေကို လျှော့ချဖို့၊ automation လုပ်ဖို့ ဖြစ်ပါတယ်။
"Unnecessary toil" ဆိုတာကတော့ ဒီလို manual အလုပ်တွေက မဖြစ်မနေ လုပ်ရမယ့် အရာတွေမဟုတ်ဘဲ automation လုပ်ဖို့ လွယ်ကူနေတာတောင် မလုပ်ဘဲ manual ထပ်ခါတလဲလဲ လုပ်နေတာကို ဆိုလိုပါတယ်။
ဥပမာ: Code ကို production environment ပေါ် တင်တဲ့အခါတိုင်း၊ developer က operations team ကို email ပို့ပြီး "ဒီ code ကို production မှာ deploy လုပ်ပေးပါ" လို့ပြောတာ၊ ဒါမှမဟုတ် log files တွေကို တစ်ခုချင်း manual ဝင်ကြည့်ပြီး troubleshooting လုပ်နေတာမျိုး။
ဘာကြောင့် မကောင်းလဲ: ဒီလို unnecessary toil တွေက engineer တွေရဲ့ အချိန်တွေကို အလဟဿကုန်စေပါတယ်။ ပိုပြီး အကျိုးရှိတဲ့အလုပ်တွေ (ဥပမာ- features အသစ်တွေ ထည့်တာ၊ innovation လုပ်တာ) ကို အာရုံမစိုက်နိုင်တော့ဘဲ ပင်ပန်းနေရပါတယ်။ ဒါ့အပြင် manual လုပ်တာဖြစ်တဲ့အတွက် လူအမှား (human error) တွေ ဖြစ်နိုင်ခြေလည်း များစေပါတယ်။
ဒီ anti-patterns တွေကို ရှောင်ရှားနိုင်ဖို့အတွက် DevOps practices တွေကို ဘာကြောင့် လုပ်ရတာလဲ၊ ဘယ်လို ရလဒ်တွေ ရစေချင်တာလဲဆိုတာကို နားလည်ဖို့ အရေးကြီးပါတယ်။ Tools တွေကိုလည်း ကိုယ့်ရဲ့ လိုအပ်ချက်နဲ့ ကိုက်ညီအောင် ရွေးချယ်ပြီး၊ ထပ်ခါတလဲလဲ လုပ်နေရတဲ့ manual အလုပ်တွေကို automation နဲ့ အစားထိုးဖို့ အမြဲတမ်း ကြိုးစားနေရပါမယ်။