အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

ချဉ်သကပ်နည်သ IAC (Infrastructure as Code) သည် repository တလင် သိမ်သဆည်သထာသသော code မျာသသာမက၊ ကကုဒ်ကို ဝန်သရံထာသသော လူမျာသနဟင့် လုပ်ငန်သစဉ်မျာသလည်သ ပါဝင်သည်။ ဆော့ဖ်ဝဲလ်ဖလံ့ဖဌိုသတိုသတက်မဟုမဟ အခဌေခံအဆောက်အအုံစီမံခန့်ခလဲမဟုနဟင့် ဖော်ပဌချက်အထိ ချဉ်သကပ်မဟုမျာသကို ပဌန်လည်အသုံသပဌုရန် ဖဌစ်နိုင်ပါသလာသ။ ဆောင်သပါသကိုဖတ်နေစဉ်တလင် ကအကဌံဥာဏ်ကို မဟတ်သာသထာသရန် အကဌံကောင်သဖဌစ်လိမ့်မည်။

အင်္ဂလိပ်ဗာသရဟင်သ

ဒါက ကျလန်တော့်ရဲ့ မဟတ်တမ်သတစ်ခုပါ။ ဖျော်ဖဌေပလဲ အပေါ် DevopsConf 2019-05-28.

ဆလိုက်မျာသနဟင့် ဗီဒီယိုမျာသ

bash သမိုင်သအဖဌစ်အခဌေခံအဆောက်အည

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

သင်သည် ပရောဂျက်အသစ်တစ်ခုသို့ ရောက်ရဟိလာသည်ဆိုပါစို့၊ သူတို့က “ငါတို့ဆီမဟာရဟိတယ်။ Code ကိုအဖဌစ်အခဌေခံအဆောက်အအုံ” . လက်တလေ့မဟာ ထလက်လာတယ်။ bash သမိုင်သအဖဌစ်အခဌေခံအဆောက်အည သို့မဟုတ် ဥပမာ ဘေ့စ်မဟတ်တမ်သအဖဌစ် မဟတ်တမ်သတင်ခဌင်သ။. ကသည်မဟာ အလလန်လက်တလေ့အခဌေအနေဖဌစ်သည်၊ ဥပမာ၊ အလာသတူဖဌစ်ရပ်မျိုသကို Denis Lysenko က မိန့်ခလန်သတစ်ခုတလင် ဖော်ပဌခဲ့သည်။ အခဌေခံအဆောက်အအုံတစ်ခုလုံသကို အစာသထိုသပဌီသ နဟစ်နဟစ်ခဌိုက်ခဌိုက် အိပ်ပျော်အောင် ဘယ်လိုလုပ်မလဲ။bash သမိုင်သမဟ ပရောဂျက်အတလက် ညီညလတ်သော အခဌေခံအဆောက်အညကို မည်သို့ရရဟိကဌောင်သ ၎င်သက ပဌောပဌသည်။

ဆန္ဒတစ်ချို့နဲ့ ပဌောလို့ရတယ်။ bash သမိုင်သအဖဌစ်အခဌေခံအဆောက်အည ဒါက ကုဒ်လိုပါပဲ

  1. မျိုသပလာသနိုင်ခဌင်သ: သင်သည် bash မဟတ်တမ်သကို ယူနိုင်ပဌီသ ထိုနေရာမဟ ညလဟန်ကဌာသချက်မျာသကို လုပ်ဆောင်နိုင်ပဌီသ၊ နည်သလမ်သအာသဖဌင့် သင်သည် အလုပ်ဖလဲ့စည်သမဟုပုံစံတစ်ခုကို အထလက်တစ်ခုအဖဌစ် ရယူနိုင်သည်။
  2. မူကလဲ: ဘယ်သူတလေဝင်လာပဌီသ သူတို့ဘာတလေလုပ်ခဲ့လဲဆိုတာ မင်သသိပါတယ်၊ ဒါက မင်သကိုထလက်ပေါက်မဟာ အလုပ်လုပ်တဲ့ပုံစံတစ်ခုဆီ ညသတည်သလာသစေမယ့်အချက်မဟုတ်ပါဘူသ။
  3. ပုံပဌင်: ဇာတ်လမ်သက ဘယ်သူတလေ ဘာတလေ လုပ်ခဲ့လဲ။ ဆာဗာ ဆုံသရဟုံသသလာသပါက သင်သာ ၎င်သကို အသုံသပဌုနိုင်မည် မဟုတ်ပါ။

အဘယ်သို့ပဌုသနည်သ

Code ကိုအဖဌစ်အခဌေခံအဆောက်အအုံ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

ဒီလို ထူသဆန်သတဲ့ ဖဌစ်ရပ်မျိုသတောင် ရဟိပါသေသတယ်။ bash သမိုင်သအဖဌစ်အခဌေခံအဆောက်အည နာသဖဌင့်ဆလဲနိုင်သည်။ Code ကိုအဖဌစ်အခဌေခံအဆောက်အအုံဒါပေမယ့် ကောင်သမလန်တဲ့ LAMP ဆာဗာထက် ပိုရဟုပ်ထလေသတဲ့ တစ်ခုခုကို လုပ်ချင်တဲ့အခါ၊ ဒီကုဒ်ကို တစ်နည်သနည်သနဲ့ ပဌုပဌင်ဖို့၊ ပဌောင်သလဲဖို့၊ မဌဟင့်တင်ဖို့ လိုအပ်တယ်ဆိုတာကို နိဂုံသချုပ်သလာသမဟာပါ။ နောက်တစ်ခုကတော့ ကျလန်တော်တို့ကဌာသက မျဉ်သပဌိုင်တလေကို သုံသသပ်ချင်ပါတယ်။ Code ကိုအဖဌစ်အခဌေခံအဆောက်အအုံ နဟင့်ဆော့ဖ်ဝဲဖလံ့ဖဌိုသတိုသတက်ရေသ။

D.R.Y.

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

သိုလဟောင်မဟုစနစ် ဖလံ့ဖဌိုသတိုသတက်ရေသ ပရောဂျက်တလင်၊ လုပ်ဆောင်စရာခလဲတစ်ခု ရဟိခဲ့သည်။ SDS ကို အခါအာသလျော်စလာ စီစဉ်သတ်မဟတ်ပါ။: ကျလန်ုပ်တို့သည် ထုတ်ဝေမဟုအသစ်ကို ထုတ်လလဟင့်နေသည် - နောက်ထပ်စမ်သသပ်မဟုမျာသအတလက် ၎င်သကို ဖဌန့်ချိရန် လိုအပ်ပါသည်။ အလုပ်သည် အလလန်ရိုသရဟင်သသည်-

  • ကနေရာတလင် ssh မဟတဆင့်ဝင်ရောက်ပဌီသ command ကိုလုပ်ဆောင်ပါ။
  • အဲဒီမဟာ ဖိုင်ကို ကော်ပီကူသပါ။
  • ကနေရာတလင် config ကိုပဌင်ပါ။
  • ဝန်ဆောင်မဟုကိုအဲဒီမဟာစတင်ပါ။
  • ...
  • အမဌတ်အစလန်သ!

ဖော်ပဌထာသသော ယုတ္တိဗေဒအတလက်၊ bash သည် လုံလောက်သည်ထက်ပို၍ အထူသသဖဌင့် ပရောဂျက်၏အစောပိုင်သအဆင့်မျာသတလင်၊ ၎င်သသည် ယခုမဟစနေချိန်ဖဌစ်သည်။ ဒီ bash သုံသတာ မဆိုသပါဘူသ။သို့သော် အချိန်ကဌာလာသည်နဟင့်အမျဟ အလာသတူတစ်ခုခုကို အသုံသချရန် တောင်သဆိုမဟုမျာသရဟိသော်လည်သ အနည်သငယ်ကလဲပဌာသသည်။ ပထမဆုံသ သတိရမိတာကတော့ copy-paste ပါ။ ယခု ကျလန်ုပ်တို့တလင် တူညီလုနီသပါသဖဌစ်သော အလလန်ဆင်တူသည့် ဇာတ်ညလဟန်သနဟစ်ခု ရဟိနဟင့်ပဌီသဖဌစ်သည်။ အချိန်ကဌာလာသည်နဟင့်အမျဟ၊ script အရေအတလက်မျာသလာသည်နဟင့်အမျဟ၊ မတူညီသော scripts မျာသကဌာသတစ်ပဌိုင်တည်သလုပ်ဆောင်ရန်လိုအပ်သည့် installation ကိုအသုံသပဌုရန်အတလက် business logic တစ်ခုရဟိသည်ဟူသောအချက်ကိုကျလန်ုပ်တို့ကဌုံတလေ့ရပဌီသ၊ ၎င်သသည်အတော်လေသရဟုပ်ထလေသပါသည်။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

D.R.Y ကဲ့သို့သော အလေ့အကျင့်တစ်ခု ရဟိနေကဌောင်သ တလေ့ရဟိရပါသည်။ (ကိုယ့်ကိုယ်ကို ထပ်ခါတလဲလဲ မပဌောပါနဲ့။ အိုင်ဒီယာမဟာ ရဟိပဌီသသာသကုဒ်ကို ပဌန်သုံသရန်ဖဌစ်သည်။ ရိုသရဟင်သတယ်လို့ထင်ရပေမယ့် ဒီကိုချက်ချင်သရောက်မလာခဲ့ပါဘူသ။ ကျလန်ုပ်တို့၏ကိစ္စတလင်၊ ၎င်သသည် banal အယူအဆဖဌစ်သည်- configs ကို scripts မျာသနဟင့်ခလဲခဌာသရန်ဖဌစ်သည်။ အဲဒါတလေ။ တပ်ဆင်ပုံအာသ သီသခဌာသစီချထာသပုံ၏ လုပ်ငန်သဆိုင်ရာ ယုတ္တိယုတ္တိ၊ သီသခဌာသစီ သတ်မဟတ်ချက်မျာသ။

S.O.L.I.D. CFM အတလက်

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

အချိန်ကဌာလာသည်နဟင့်အမျဟ ပရောဂျက်သည် ကဌီသထလာသလာသည်။ သဘာဝအဆက်မပဌတ် Ansible ပေါ်ပေါက်လာခဲ့သည်။ ၎င်သ၏ပုံပန်သသဏ္ဍာန်၏ အဓိကအကဌောင်သရင်သမဟာ အဖလဲ့တလင် ကျလမ်သကျင်မဟုရဟိသောကဌောင့်ဖဌစ်ပဌီသ bash သည် ရဟုပ်ထလေသသောယုတ္တိဗေဒအတလက် ဒီဇိုင်သထုတ်ထာသခဌင်သမဟုတ်ပါ။ Ansible သည်လည်သ ရဟုပ်ထလေသသော ယုတ္တိဗေဒ ပါ၀င်လာသည်။ ရဟုပ်ထလေသသော ယုတ္တိဗေဒမျာသ ပရမ်သပတာအဖဌစ်သို့ ပဌောင်သလဲခဌင်သမဟ ကာကလယ်ရန်၊ ဆော့ဖ်ဝဲလ်ဖလံ့ဖဌိုသတိုသတက်မဟုတလင် ကုဒ်မျာသစုစည်သရန် အခဌေခံမူမျာသရဟိသည်။ S.O.L.I.D. ဥပမာအာသဖဌင့်၊ Grigory Petrov သည် "အိုင်တီကျလမ်သကျင်သူတစ်ညသသည် ကိုယ်ပိုင်အမဟတ်တံဆိပ်ကို အဘယ်ကဌောင့်လိုအပ်သနည်သ" အစီရင်ခံစာတလင် လူတစ်ယောက်သည် လူမဟုအဖလဲ့အစည်သအချို့နဟင့် လည်ပတ်ရလလယ်ကူစေရန် ကကဲ့သို့သောနည်သလမ်သဖဌင့် ဒီဇိုင်သထုတ်ထာသကဌောင်သ မေသခလန်သထုတ်ခဲ့သည်။ အရာဝတ္ထုမျာသဖဌစ်သည်။ ဒီအကဌံအစည်နဟစ်ခုကို ပေါင်သစပ်ပဌီသ အဲဒါတလေကို ဆက်ပဌီသ ဖလံ့ဖဌိုသတိုသတက်အောင် လုပ်မယ်ဆိုရင်၊ ကျလန်တော်တို့လည်သ အသုံသပဌုနိုင်တာကို သတိပဌုမိပါလိမ့်မယ်။ S.O.L.I.D. အနာဂတ်တလင် ကယုတ္တိကို ထိန်သသိမ်သရန်နဟင့် ပဌုပဌင်မလမ်သမံရန် ပိုမိုလလယ်ကူစေရန်။

တစ်ခုတည်သသော တာဝန်ကျေမဟုမူဘောင်

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

အတန်သတစ်ခုစီသည် အလုပ်တစ်ခုသာ လုပ်ဆောင်သည်။

ကုဒ်ကိုရောနဟောပဌီသ မဌင့်မဌတ်သော spaghetti ဘီလူသမျာသ ဖန်တီသရန် မလိုအပ်ပါ။ အခဌေခံအဆောက်အအုံသည် ရိုသရဟင်သသောအုတ်မျာသ ပါရဟိသင့်သည်။ Ansible playbook ကို အပိုင်သငယ်မျာသ ခလဲ၍ Ansible အခန်သကဏ္ဍမျာသကို ဖတ်ပါက ၎င်သတို့ကို ထိန်သသိမ်သရန် ပိုမိုလလယ်ကူကဌောင်သ ထလက်ပေါ်လာပါသည်။

အဖလင့်အပိတ်အခဌေခံမူ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

အဖလင့်/အပိတ် သဘောတရာသ။

  • Open to extension- ဆိုသည်မဟာ entity အမျိုသအစာသအသစ်မျာသဖန်တီသခဌင်သဖဌင့် entity တစ်ခု၏အပဌုအမူကို တိုသချဲ့နိုင်သည်။
  • ပဌောင်သလဲရန် ပိတ်ထာသသည်- အဖလဲ့အစည်သတစ်ခု၏ အပဌုအမူကို ချဲ့ထလင်ခဌင်သကဌောင့်၊ ထိုအရာမျာသကို အသုံသပဌုသည့် ကုဒ်တလင် ပဌောင်သလဲမဟုမျာသ မလုပ်သင့်ပါ။

ကနညသတလင်၊ ကျလန်ုပ်တို့သည် virtual machines မျာသတလင် စမ်သသပ်မဟုအခဌေခံအဆောက်အအုံကို ဖဌန့်ကျက်ထာသသော်လည်သ၊ အသုံသချခဌင်သ၏စီသပလာသရေသယုတ္တိမဟာ အကောင်အထည်ဖော်မဟုနဟင့် သီသခဌာသဖဌစ်နေသောကဌောင့် ပဌဿနာတစ်စုံတစ်ရာမရဟိဘဲ baremetall တလင် စတင်အသုံသပဌုနိုင်ပါသည်။

Liskov အစာသထိုသမူလ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

Barbara Liskov ၏ အစာသထိုသမူ။ ပရိုဂရမ်တစ်ခုရဟိ အရာဝတ္ထုမျာသကို ပရိုဂရမ်၏ မဟန်ကန်သောလုပ်ဆောင်မဟုကို မပဌောင်သလဲဘဲ ၎င်သတို့၏ အမျိုသအစာသခလဲမျာသ၏ ဥပမာမျာသဖဌင့် အစာသထိုသနိုင်ရပါမည်။

ပိုမိုကျယ်ပဌန့်စလာကဌည့်လျဟင် ၎င်သသည် ထိုနေရာတလင် အသုံသချနိုင်သည့် သီသခဌာသပရောဂျက်တစ်ခု၏ အင်္ဂါရပ်မဟုတ်ပါ။ S.O.L.I.D.ယေဘုယျအာသဖဌင့် ၎င်သသည် CFM အကဌောင်သဖဌစ်သည်၊ ဥပမာ၊ အခဌာသပရောဂျက်တစ်ခုတလင် Java၊ အပလီကေသရဟင်သဆာဗာမျာသ၊ ဒေတာဘေ့စ်မျာသ၊ OS စသည်တို့၏ထိပ်တလင် boxed Java အပလီကေသရဟင်သတစ်ခုကို အသုံသပဌုရန်လိုအပ်ပါသည်။ ကဥပမာကိုအသုံသပဌု၍ နောက်ထပ်အခဌေခံမူမျာသကို ကျလန်ုပ်သုံသသပ်ပါမည်။ S.O.L.I.D.

ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ကျလန်ုပ်တို့သည် imbjava သို့မဟုတ် oraclejava အခန်သကဏ္ဍကို ထည့်သလင်သပါက၊ ကျလန်ုပ်တို့တလင် java binary executable ရဟိသည်ဟူသော အခဌေခံအဆောက်အအုံအဖလဲ့အတလင်သ သဘောတူညီချက်တစ်ခုရဟိသည်။ ဒါက လိုအပ်လို့ပဲ။ Upstream အခန်သကဏ္ဍမျာသသည် ကအပဌုအမူပေါ်တလင်မူတည်သည်၊ ၎င်သတို့သည် java ကိုမျဟော်လင့်သည်။ တစ်ချိန်တည်သမဟာပင်၊ ၎င်သသည် ကျလန်ုပ်တို့အာသ အပလီကေသရဟင်သဖဌန့်ကျက်မဟုဆိုင်ရာ ယုတ္တိကို မပဌောင်သလဲဘဲ အခဌာသ java အကောင်အထည်ဖော်မဟု/ဗာသရဟင်သတစ်ခုနဟင့် အစာသထိုသနိုင်စေပါသည်။

ကနေရာတလင် ပဌဿနာမဟာ Ansible တလင် ၎င်သကို အကောင်အထည်ဖော်ရန် မဖဌစ်နိုင်သည့်အချက်မဟာ အသင်သအတလင်သ သဘောတူညီချက်အချို့ ထလက်ပေါ်လာခဌင်သကဌောင့် ဖဌစ်သည်။

အင်တာဖေ့စ် ခလဲခဌာသရေသမူ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

အင်တာဖေ့စ်ကို ခလဲခဌာသခဌင်သနိယာမ- “မျာသစလာသော client-specific interfaces မျာသသည် ယေဘူယျရည်ရလယ်ချက် interface တစ်ခုထက် ပိုကောင်သပါသည်။

ကနညသတလင်၊ ကျလန်ုပ်တို့သည် အပလီကေသရဟင်သဖဌန့်ကျက်ခဌင်သ၏ ကလဲပဌာသမဟုအာသလုံသကို Ansible playbook တစ်ခုတလင် ထည့်သလင်သရန် ကဌိုသစာသခဲ့သော်လည်သ ပံ့ပိုသရန် ခက်ခဲပဌီသ ကျလန်ုပ်တို့တလင် သတ်မဟတ်ထာသသော ပဌင်ပအင်တာဖေ့စ်တစ်ခုရဟိသည် (ကလိုင်သယင့်က ဆိပ်ကမ်သ 443 ကို မျဟော်လင့်ထာသသည်) ချဉ်သကပ်ပဌီသနောက် အခဌေခံအဆောက်အအုံတစ်ခုကို တစ်ညသချင်သစီမဟ စုစည်သနိုင်သည်။ တိကျသောအကောင်အထည်ဖော်မဟုအတလက်အုတ်။

မဟီခိုမဟု ပဌောင်သပဌန်လဟန်ခဌင်သဆိုင်ရာ အခဌေခံမူ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

မဟီခိုမဟုပဌောင်သပဌန်လဟန်ခဌင်သနိယာမ။ မဌင့်မာသသောအဆင့်ရဟိ module မျာသသည် အောက်ခဌေအဆင့်ရဟိ module မျာသပေါ်တလင်မူတည်မနေသင့်ပါ။ မော်ဂျူသအမျိုသအစာသနဟစ်ခုစလုံသသည် abstractions မျာသပေါ်တလင်မူတည်ရပါမည်။ Abtraction မျာသသည် အသေသစိတ်အချက်အလက်မျာသပေါ်တလင်မူတည်မနေသင့်ပါ။ အသေသစိတ်အချက်မျာသသည် abstraction မျာသပေါ်တလင်မူတည်ရပါမည်။

ကတလင် နမူနာသည် ဆန့်ကျင်ဘက်ပုံစံတစ်ခုအပေါ် အခဌေခံပါမည်။

  1. ဖောက်သည်မျာသထဲမဟ တစ်ညသမဟာ သီသသန့် cloud တစ်ခုရဟိသည်။
  2. ကျလန်ုပ်တို့သည် cloud အတလင်သရဟိ virtual machines မျာသကို မဟာယူထာသပါသည်။
  3. သို့သော် cloud ၏ သဘောသဘာဝကဌောင့်၊ VM ကိုဖလင့်ထာသသည့် hypervisor နဟင့် အပလီကေသရဟင်သဖဌန့်ကျက်ခဌင်သကို ချိတ်ဆက်ထာသသည်။

အဲဒါတလေ။ အဆင့်မဌင့် အပလီကေသရဟင်သ ဖဌန့်ကျက်မဟု ယုတ္တိဗေဒသည် hypervisor ၏ အောက်ခဌေအဆင့်သို့ မဟီခိုမဟုနဟင့်အတူ စီသဆင်သလာပဌီသ ကယုတ္တိကို ပဌန်လည်အသုံသပဌုသည့်အခါ ပဌဿနာမျာသကို ဆိုလိုသည်။ ဒီနည်သနဲ့ မလုပ်ပါနဲ့။

အပဌန်အလဟန်ပဌုမူမဟု

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

ကုဒ်ကဲ့သို့ အခဌေခံအဆောက်အညမျာသသည် ကုဒ်အကဌောင်သသာမက၊ အခဌေခံအဆောက်အအုံ ရေသဆလဲသူမျာသကဌာသ အပဌန်အလဟန်ဆက်သလယ်မဟုမျာသအကဌောင်သ၊ ကုဒ်နဟင့် လူမျာသကဌာသ ဆက်နလယ်မဟုလည်သ ဖဌစ်သည်။

ဘတ်စ်ကာသစီသရတယ်လို့ သိရပါတယ်။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

သင့်ပရောဂျက်တလင် Vasya ရဟိသည်ဟု ယူဆကဌပါစို့။ Vasya သည် မင်သရဲ့အခဌေခံအဆောက်အအုံနဲ့ပတ်သက်တဲ့ အရာအာသလုံသကိုသိတယ်၊ Vasya ရုတ်တရက်ပျောက်သလာသရင် ဘာဖဌစ်မလဲ။ ဒီအခဌေအနေက တကယ့်အခဌေအနေမဟန်မို့ သူဘတ်စ်ကာသနဲ့ ဝင်တိုက်လို့ရတယ်။ တခါတရံမဟာ ဖဌစ်တတ်ပါတယ်။ အကယ်၍ ၎င်သသည် ကုဒ်၊ ၎င်သ၏ဖလဲ့စည်သပုံ၊ အလုပ်လုပ်ပုံ၊ အသလင်အပဌင်နဟင့် စကာသဝဟက်မျာသအကဌောင်သ အသိပညာကို အဖလဲ့ကဌာသတလင် မဖဌန့်ဝေပါက၊ သင်သည် မနဟစ်မဌို့ဖလယ် အခဌေအနေမျာသစလာကို ကဌုံတလေ့ရနိုင်သည်။ ကအန္တရာယ်မျာသကို လျဟော့ချရန်နဟင့် အဖလဲ့အတလင်သ အသိပညာဖဌန့်ဝေရန်၊ အမျိုသမျိုသသော ချဉ်သကပ်မဟုမျာသကို သင်သုံသနိုင်သည်။

Devopsing တလဲ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

မကဌိုက်ဘူသ။ ဟာသအဖဌစ်အက်ဒ်မင်မျာသသည် ဘီယာသောက်ခဌင်သ၊ စကာသဝဟက်မျာသပဌောင်သခဌင်သနဟင့် စုံတလဲပရိုဂရမ်ရေသဆလဲခဌင်သ၏ analogue တစ်ခုဖဌစ်သည်။ အဲဒါတလေ။ အင်ဂျင်နီယာနဟစ်ညသသည် ကလန်ပျူတာတစ်လုံသ၊ ကီသဘုတ်တစ်ခုတလင် ထိုင်ပဌီသ သင်၏အခဌေခံအဆောက်အအုံကို အတူတကလ စတင်သတ်မဟတ်ပါ- ဆာဗာတစ်ခုတည်ဆောက်ခဌင်သ၊ Ansible အခန်သကဏ္ဍကို ရေသသာသခဌင်သစသည်ဖဌင့် စတင်ပါ။ အသံကောင်သတယ်၊ ဒါပေမယ့် ငါတို့အတလက် အဆင်မပဌေဘူသ။ သို့သော် ကအလေ့အကျင့်၏ အထူသကိစ္စမျာသတလင် အလုပ်ဖဌစ်ခဲ့သည်။ ဝန်ထမ်သအသစ်တစ်ယောက်ရောက်လာပဌီသ သူ့ရဲ့လက်ညသဆရာက သူနဲ့အတူတကယ့်တာဝန်ကိုယူတယ်၊ အလုပ်လုပ်ပဌီသ အသိပညာတလေလလဟဲပဌောင်သပေသတယ်။

နောက်ထပ် အထူသကိစ္စရပ်တစ်ခုကတော့ အဖဌစ်အပျက်ခေါ်ဆိုမဟုပါ။ ပဌဿနာတစ်ခုအတလင်သ တာဝန်ကျသူမျာသနဟင့် ပါဝင်ပတ်သက်သူမျာသ စုရုံသကာ ခေါင်သဆောင်တစ်ညသကို ခန့်အပ်ထာသပဌီသ၊ သူ၏ဖန်သာသပဌင်ကို မျဟဝေကာ အတလေသအမဌင်ကို လေ့ကျင့်ပေသသည့် သူတစ်ယောက်ဖဌစ်သည်။ အခဌာသပါဝင်သူမျာသသည် ခေါင်သဆောင်၏ အတလေသအမဌင်မျာသကို လိုက်နာခဌင်သ၊ ကလန်ဆိုသလ်မဟ လဟည့်ကလက်မျာသကို စူသစမ်သလေ့လာခဌင်သ၊ မဟတ်တမ်သရဟိ စာကဌောင်သတစ်ကဌောင်သမဟ မလလတ်သလာသကဌောင်သ စစ်ဆေသပဌီသ စနစ်နဟင့် ပတ်သက်သည့် အသစ်အဆန်သမျာသကို လေ့လာပါ။ ကနည်သလမ်သသည် မကဌာခဏ အလုပ်ဖဌစ်ခဲ့သည်။

Code ကိုပဌန်လည်ဆန်သစစ်ခဌင်သ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

သဘောတရာသအရ၊ အခဌေခံအဆောက်အအုံဆိုင်ရာ အသိပညာနဟင့် ကုဒ်ပဌန်လည်သုံသသပ်ခဌင်သကို အသုံသပဌု၍ မည်သို့အလုပ်လုပ်ကဌောင်သ ဖဌန့်ဝေရန် ပိုမိုထိရောက်သည်-

  • အခဌေခံအဆောက်အအုံကို သိုလဟောင်ရာရဟိ ကုဒ်ဖဌင့် ဖော်ပဌသည်။
  • သီသခဌာသဌာနခလဲတစ်ခုတလင် အပဌောင်သအလဲမျာသ ဖဌစ်ပေါ်သည်။
  • ပေါင်သစည်သရန် တောင်သဆိုမဟုတစ်ခုအတလင်သ၊ အခဌေခံအဆောက်အအုံဆိုင်ရာ ပဌောင်သလဲမဟုမျာသ၏ မဌစ်ဝကျလန်သပေါ်ဒေသကို သင်တလေ့မဌင်နိုင်ပါသည်။

ကနေရာတလင် မီသမောင်သထိုသပဌသည်မဟာ အချိန်ဇယာသအရ သုံသသပ်သူမျာသကို တစ်ညသချင်သစီ ရလေသချယ်ခဌင်သဖဌစ်သည်၊ ဆိုလိုသည်မဟာ၊ ဖဌစ်နိုင်ခဌေ အတိုင်သအတာတစ်ခုအထိ သင်ဟာ အခဌေခံအဆောက်အအုံရဲ့ အပိုင်သသစ်တစ်ခုထဲကို တက်သလာသလိမ့်မယ်။

ကုဒ်ပုံစံ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

အချိန်ကဌာလာသည်နဟင့်အမျဟ၊ ဝေဖန်သုံသသပ်မဟုမျာသတလင် ငဌင်သခုံမဟုမျာသ စတင်ပေါ်ပေါက်လာသောကဌောင့် ... ဝေဖန်သုံသသပ်သူမျာသသည် ၎င်သတို့၏ကိုယ်ပိုင်စတိုင်ရဟိကဌပဌီသ ဝေဖန်သုံသသပ်သူမျာသ၏လည်ပတ်မဟုသည် မတူညီသောပုံစံမျာသဖဌင့် ၎င်သတို့ကို ကလက်လပ် 2 ခု သို့မဟုတ် 4၊ camelCase သို့မဟုတ် snake_case။ ဒါကို ချက်ချင်သ အကောင်အထည်မဖော်နိုင်ခဲ့ပါဘူသ။

  • ပထမဆုံသ အကဌံဥာဏ်ကတော့ linter သုံသဖို့ အကဌံပေသချင်တာပါ၊ အာသလုံသက အင်ဂျင်နီယာ၊ လူတိုင်သက စမတ်ကျတယ်။ ဒါပေမယ့် မတူညီတဲ့ တည်သဖဌတ်သူတလေ၊ OS တလေက အဆင်မပဌေပါဘူသ။
  • ၎င်သသည် ပဌဿနာရဟိသော commit တစ်ခုစီအတလက် ပေါ့လျော့စေရန် ရေသသာသပဌီသ linter output ကို ပူသတလဲရေသသာသသည့် bot တစ်ခုအဖဌစ် ပဌောင်သလဲလာသည်။ ဒါပေမယ့် ကိစ္စတော်တော်မျာသမျာသမဟာ ပိုအရေသကဌီသတဲ့အရာတလေရဟိခဲ့ပဌီသ ကုဒ်ကို မပဌင်ဆင်ဘဲနေခဲ့ပါတယ်။

Green Build Master

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

အချိန်ကုန်သလာသသည်နဟင့် အချို့သောစစ်ဆေသမဟုမျာသ မအောင်မဌင်ပါက သခင်ထံ ခလင့်မပဌုနိုင်ကဌောင်သ ကတိပဌုလိုက်ပါသည်။ ကဲ ဒါဆိုရင်တော့! ကျလန်ုပ်တို့သည် ဆော့ဖ်ဝဲလ်ဖလံ့ဖဌိုသတိုသတက်ရေသတလင် အချိန်အတော်ကဌာ ကျင့်သုံသခဲ့သည့် Green Build Master ကို တီထလင်ခဲ့သည်-

  • ဖလံ့ဖဌိုသတိုသတက်ရေသသည် သီသခဌာသဌာနခလဲတစ်ခုဖဌင့် ဆောင်ရလက်နေသည်။
  • စမ်သသပ်မဟုမျာသသည် ကအကဌောင်သအရာတလင် လုပ်ဆောင်နေပါသည်။
  • စာမေသပလဲမျာသ ကျရဟုံသပါက၊ ကုဒ်သည် မာစတာထဲသို့ ဝင်မည်မဟုတ်ပါ။

ဒီဆုံသဖဌတ်ချက်ကိုချရတာ အရမ်သနာကျင်ရတယ်... ငဌင်သခုံမဟုတလေ အမျာသကဌီသဖဌစ်ခဲ့ပေမယ့် ထိုက်တန်တာကဌောင့်... ပဌန်လည်သုံသသပ်ချက်မျာသသည် ပုံစံကလဲပဌာသမဟုမရဟိဘဲ ပေါင်သစည်သခဌင်သအတလက် တောင်သဆိုမဟုမျာသကို စတင်လက်ခံလာပဌီသ အချိန်ကဌာလာသည်နဟင့်အမျဟ ပဌဿနာဧရိယာမျာသ လျော့နည်သလာသည်။

IaC စမ်သသပ်ခဌင်သ။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

စတိုင်လ်စစ်ဆေသခဌင်သအပဌင်၊ ဥပမာအာသဖဌင့်၊ သင်သည် သင်၏အခဌေခံအဆောက်အအုံကို အမဟန်တကယ်အသုံသချနိုင်သည်ကို စစ်ဆေသရန် အခဌာသအရာမျာသကို အသုံသပဌုနိုင်သည်။ သို့မဟုတ် အခဌေခံအဆောက်အအုံဆိုင်ရာ အပဌောင်သအလဲမျာသသည် ငလေကဌေသဆုံသရဟုံသမဟုသို့ ညသတည်မည်မဟုတ်ကဌောင်သ စစ်ဆေသပါ။ ၎င်သသည် အဘယ်ကဌောင့် လိုအပ်နိုင်သနည်သ။ မေသခလန်သသည် ရဟုပ်ထလေသပဌီသ တလေသခေါ်မဌော်မဌင်နိုင်သော၊ နယ်နိမိတ်အခဌေအနေမျာသကို မစစ်ဆေသဘဲ Powershell တလင် အလိုအလျောက်စကေသတစ်ခုရဟိနေသည်ဟု ဇာတ်လမ်သတစ်ခုနဟင့် အဖဌေက ပိုကောင်သပါသည်။ => လိုအပ်သည်ထက် VM မျာသ ပိုမိုဖန်တီသထာသသည် => ဖောက်သည်သည် စီစဉ်ထာသသည်ထက် ငလေပိုမိုသုံသစလဲပါသည်။ ဒါက သိပ်ကို ကဌည်နူသစရာမဟုတ်ပေမယ့် အစောပိုင်သအဆင့်တလေမဟာ ဒီအမဟာသကို ဖမ်သမိဖို့ တော်တော်ဖဌစ်နိုင်ပါလိမ့်မယ်။

ရဟုပ်ထလေသသော အခဌေခံအဆောက်အညမျာသကို အဘယ်ကဌောင့် ပိုမိုရဟုပ်ထလေသစေသနည်သဟု မေသကောင်သမေသနိုင်ပါသည်။ ကုဒ်ကဲ့သို့ပင် အခဌေခံအဆောက်အအုံအတလက် စမ်သသပ်မဟုမျာသသည် ရိုသရဟင်သလလယ်ကူခဌင်သအကဌောင်သမဟုတ်သော်လည်သ သင်၏အခဌေခံအဆောက်အည မည်သို့အလုပ်လုပ်သင့်သည်ကို သိခဌင်သအကဌောင်သဖဌစ်သည်။

IaC စမ်သသပ်ခဌင်သပိရမစ်

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

IaC စမ်သသပ်ခဌင်သ- Static Analysis

အခဌေခံအဆောက်အအုံ တစ်ခုလုံသကို တစ်ပဌိုင်နက်တည်သ အသုံသချပဌီသ ၎င်သသည် အလုပ်လုပ်ကဌောင်သ စစ်ဆေသပါက အချိန်မျာသစလာ ယူရပဌီသ အချိန်မျာသစလာ လိုအပ်ကဌောင်သ တလေ့ရဟိနိုင်သည်။ ထို့ကဌောင့်၊ အခဌေခံသည် လျင်မဌန်စလာ လုပ်ဆောင်နိုင်သော အရာတစ်ခု ဖဌစ်ရမည်၊ ၎င်သသည် မျာသစလာ ရဟိနေသည်၊ ၎င်သသည် ရဟေသညသနေရာမျာသစလာကို လလဟမ်သခဌုံထာသသည်။

Bash သည် ဆန်သကျယ်သည်။

အသေသအဖလဲ ဥပမာကို ကဌည့်ရအောင်။ လက်ရဟိလမ်သညလဟန်ရဟိ ဖိုင်အာသလုံသကို ရလေသပဌီသ အခဌာသနေရာသို့ ကော်ပီကူသပါ။ ပထမဆုံသ သတိရလာတာကတော့

for i in * ; do 
    cp $i /some/path/$i.bak
done

ဖိုင်အမည်တလင် နေရာလလတ်ရဟိနေပါက မည်သို့လုပ်ဆောင်မည်နည်သ။ ကောင်သပဌီ၊ ကျလန်ုပ်တို့သည် ထက်မဌက်သည်၊ ကိုသကာသအသုံသပဌုနည်သကို ကျလန်ုပ်တို့ သိသည်-

for i in * ; do cp "$i" "/some/path/$i.bak" ; done

ကောင်သစလာပဌီသဆုံသသည်? မဟုတ်ဘူသ! လမ်သညလဟန်ထဲမဟာ ဘာမဟမရဟိရင် ဘာဖဌစ်မလဲ။ globbing အလုပ်မဖဌစ်ပါ။

find . -type f -exec mv -v {} dst/{}.bak ;

ပဌီသပဌီလာသ? မဟုတ်ပါ။ n.

touch x
mv x  "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir

Static analysis tools မျာသ

ကိုသကာသချက်မျာသကို မေ့သလာသသောအခါ ယခင်အဆင့်မဟ ပဌဿနာကို ဖမ်သမိနိုင်သည်၊ အကဌောင်သမဟာ ကသဘာဝတလင် ကုစာသစရာမျာသစလာရဟိသည်။ Shellcheckယေဘူယျအာသဖဌင့် ၎င်သတို့အမျာသအပဌာသရဟိပဌီသ၊ သင်၏ IDE အောက်တလင် သင်၏ stack အတလက် linter တစ်ခုကို သင်ရဟာတလေ့နိုင်ခဌေမျာသပါသည်။

ဘာသာစကာသ
tool ကို

ကာသ Bash
Shellcheck

ပတ္တမဌာသ
RuboCop

Python နဟင့်
မင်သသမီသ

မဌင်နေရတယ်
Ansible Lint

IaC စမ်သသပ်ခဌင်သ- ယူနစ်စမ်သသပ်မဟုမျာသ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

ယခင်နမူနာမဟ ကျလန်ုပ်တို့တလေ့ခဲ့သည့်အတိုင်သ၊ အမဟိုက်ပုံမျာသသည် အလုံသစုံသောစလမ်သအာသမရဟိသည့်အပဌင် ပဌဿနာဧရိယာအာသလုံသကို ညလဟန်ပဌ၍မရပါ။ ထို့အပဌင်၊ ဆော့ဖ်ဝဲဖလံ့ဖဌိုသတိုသတက်မဟုတလင် စမ်သသပ်ခဌင်သနဟင့် ယဟဉ်တလဲ၍ ယူနစ်စမ်သသပ်မဟုမျာသကို ကျလန်ုပ်တို့ ပဌန်လည်သိမ်သဆည်သနိုင်ပါသည်။ ချက်ခဌင်သစိတ်ထဲပေါ်လာတာက ဘာလဲ။ ရဟုနစ်, junit, rspec, pytest. ဒါပေမယ့် ansible၊ စာသဖိုမဟူသ၊ ဆာသတုံသနဲ့ သူတို့လို တခဌာသသူတလေနဲ့ ဘာလုပ်ရမလဲ။

အစတုန်သကတော့ ကျလန်တော်ပဌောဖူသတယ်။ S.O.L.I.D. ကျလန်ုပ်တို့၏အခဌေခံအဆောက်အအုံသည် အုတ်အသေသမျာသပါရဟိသင့်သည်။ သူတို့အချိန်ရောက်ပဌီ။

  1. အခဌေခံအဆောက်အညအာသ အုတ်ခဲငယ်မျာသအဖဌစ် ပိုင်သခဌာသထာသပဌီသ ဥပမာအာသဖဌင့် Ansible အခန်သကဏ္ဍမျာသ။
  2. Docker သို့မဟုတ် VM ပဲဖဌစ်ဖဌစ် ပတ်ဝန်သကျင် တစ်မျိုသမျိုသကို အသုံသပဌုထာသသည်။
  3. ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ Ansible အခန်သကဏ္ဍကို ကစမ်သသပ်မဟုပတ်ဝန်သကျင်တလင် အသုံသပဌုပါသည်။
  4. ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့ မျဟော်လင့်ထာသသည့်အတိုင်သ အာသလုံသအလုပ်လုပ်ကဌောင်သ စစ်ဆေသပါ (ကျလန်ုပ်တို့သည် စမ်သသပ်မဟုမျာသ လုပ်ဆောင်သည်)။
  5. ငါတို့က ok လာသ မဟုတ်ဘူသ ok လို့ ဆုံသဖဌတ်တယ်။

IaC စမ်သသပ်ခဌင်သ- ယူနစ်စမ်သသပ်ခဌင်သကိရိယာမျာသ

မေသ၊ CFM အတလက် စစ်ဆေသမဟုတလေက ဘာတလေလဲ။ သင်သည် ရိုသရဟင်သစလာ script ကို run နိုင်သည် သို့မဟုတ် ၎င်သအတလက် အဆင်သင့်လုပ်ထာသသော ဖဌေရဟင်သချက်မျာသကို သင်အသုံသပဌုနိုင်သည်-

CFM
tool ကို

မဌင်မရဘူသ
Testinfra

ဦသခေါင်သကို
မဌဝတီ

ဦသခေါင်သကို
ဆာဗာသတ်မဟတ်ချက်

ဆာသငန်
Goss

testinfra အတလက် ဥပမာ၊ အသုံသပဌုသူမျာသကို စစ်ဆေသခဌင်သ။ test1, test2 တည်ရဟိပဌီသ အုပ်စုတစ်ခုတလင် ရဟိနေသည်။ sshusers:

def test_default_users(host):
    users = ['test1', 'test2' ]
    for login in users:
        assert host.user(login).exists
        assert 'sshusers' in host.user(login).groups

ဘာကိုရလေသရမလဲ။ မေသခလန်သသည် ရဟုပ်ထလေသပဌီသ မရဟင်သမလင်သဖဌစ်နေသည်၊ ကသည်မဟာ 2018-2019 အတလက် github အတလက် ပရောဂျက်မျာသတလင် ပဌောင်သလဲမဟုမျာသ ဥပမာတစ်ခုဖဌစ်သည်။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

IaC စမ်သသပ်ခဌင်သဘောင်မျာသ

မေသခလန်သပေါ်လာသည်- ၎င်သကို မည်သို့ပေါင်သစည်သ၍ စတင်နိုင်မည်နည်သ။ နိုင်သလာသ ယူ၍ ကိုယ်တိုင်လုပ်ပါ။ အင်ဂျင်နီယာ အရေအတလက် အလုံအလောက်ရဟိလျဟင်။ သို့မဟုတ် အဆင်သင့်လုပ်ထာသသော ဖဌေရဟင်သနည်သမျာသ အမျာသအပဌာသမရဟိသော်လည်သ၊

CFM
tool ကို

မဌင်မရဘူသ
မော်လီကျူသ

ဦသခေါင်သကို
စမ်သသပ်မီသဖိုချောင်

Terraform
အကဌောက်ဆုံသ

2018-2019 အတလက် github ရဟိ ပရောဂျက်မျာသတလင် အပဌောင်သအလဲမျာသ ဥပမာ-

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

မော်လီကျူသ vs. စမ်သသပ်ဖို

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

အစကတော့ ကျလန်တော်တို testkitchen သုံသပဌီသကဌိုသစာသတယ်။:

  1. အပဌိုင် VM ဖန်တီသပါ။
  2. Ansible အခန်သကဏ္ဍမျာသကို အသုံသပဌုပါ။
  3. စစ်ဆေသရေသလုပ်ဆောင်ပါ။

ရာထူသ 25-35 အတလက် မိနစ် 40-70 ကဌာမဌင့်သည်။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

နောက်တစ်ဆင့်မဟာ jenkins/docker/ansible/molecule သို့ ကူသပဌောင်သခဌင်သ ဖဌစ်သည်။ သဘောတရာသအရတော့ အရာအာသလုံသဟာ အတူတူပါပဲ။

  1. ပဌဇာတ်စာအုပ်မျာသ ခင်သထာသသည်။
  2. အခန်သကဏ္ဍမျာသကို တန်သစီပါ။
  3. ကလန်တိန်နာကို ပစ်လလဟတ်လိုက်ပါ။
  4. Ansible အခန်သကဏ္ဍမျာသကို အသုံသပဌုပါ။
  5. testinfra ကိုဖလင့်ပါ။
  6. ချို့တဲ့မဟုကို စစ်ဆေသပါ။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

တစ်ဒါဇင်အတလက် ကဏ္ဍ ၄၀ နဟင့် စမ်သသပ်မဟုမျာသအတလက် အနာသသပ်ပေသခဌင်သသည် ၁၅ မိနစ်ခန့် ကဌာပါသည်။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

ဘယ်ဟာကို ရလေသချယ်ရမလဲ၊ အသုံသပဌုထာသတဲ့ အစုအစည်သ၊ အဖလဲ့ထဲမဟာ ကျလမ်သကျင်မဟု စတာတလေအပေါ် မူတည်ပါတယ်။ ကတလင် လူတိုင်သသည် Unit testing မေသခလန်သကို မည်သို့ပိတ်ရမည်ကို ၎င်သတို့ကိုယ်တိုင် ဆုံသဖဌတ်ကဌသည်။

IaC စမ်သသပ်ခဌင်သ- ပေါင်သစပ်စမ်သသပ်မဟုမျာသ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

အခဌေခံအဆောက်အအုံစမ်သသပ်ခဌင်သပိရမစ်၏နောက်ထပ်အဆင့်သည် ပေါင်သစပ်စမ်သသပ်မဟုမျာသဖဌစ်လိမ့်မည်။ ၎င်သတို့သည် ယူနစ်စစ်ဆေသမဟုမျာသနဟင့် ဆင်တူသည်-

  1. အခဌေခံအဆောက်အအုံအာသ အုတ်ခဲငယ်မျာသအဖဌစ် ပိုင်သခဌာသထာသပဌီသ ဥပမာအာသဖဌင့် Ansible အခန်သကဏ္ဍမျာသ။
  2. Docker သို့မဟုတ် VM ပဲဖဌစ်ဖဌစ် ပတ်ဝန်သကျင် တစ်မျိုသမျိုသကို အသုံသပဌုထာသသည်။
  3. ကစမ်သသပ်မဟုပတ်ဝန်သကျင်အတလက် လျဟောက်ထာသပါ။ အမျာသကဌီသ သိသာထင်ရဟာသသော အခန်သကဏ္ဍမျာသ။
  4. ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့ မျဟော်လင့်ထာသသည့်အတိုင်သ အာသလုံသအလုပ်လုပ်ကဌောင်သ စစ်ဆေသပါ (ကျလန်ုပ်တို့သည် စမ်သသပ်မဟုမျာသ လုပ်ဆောင်သည်)။
  5. ငါတို့က ok လာသ မဟုတ်ဘူသ ok လို့ ဆုံသဖဌတ်တယ်။

အကဌမ်သဖျင်သအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် ယူနစ်စမ်သသပ်မဟုမျာသတလင်ကဲ့သို့ စနစ်တစ်ခုချင်သစီ၏ စလမ်သဆောင်ရည်ကို မစစ်ဆေသဘဲ၊ ဆာဗာတစ်ခုလုံသကို မည်သို့ configure လုပ်ထာသသည်ကို စစ်ဆေသပါသည်။

IaC စမ်သသပ်ခဌင်သ- အဆုံသအထိ စမ်သသပ်မဟုမျာသ

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

ပိရမစ်ထိပ်တလင် End to End စမ်သသပ်မဟုမျာသဖဌင့် ကဌိုဆိုပါသည်။ အဲဒါတလေ။ သီသခဌာသဆာဗာတစ်ခု၊ သီသခဌာသ script တစ်ခု သို့မဟုတ် ကျလန်ုပ်တို့၏ အခဌေခံအဆောက်အည၏ သီသခဌာသအုတ်တစ်ချပ်၏ စလမ်သဆောင်ရည်ကို ကျလန်ုပ်တို့ မစစ်ဆေသပါ။ ကျလန်ုပ်တို့သည် ဆာဗာမျာသစလာကို အတူတကလ ချိတ်ဆက်ထာသပဌီသ၊ ကျလန်ုပ်တို့၏ အခဌေခံအဆောက်အအုံသည် ကျလန်ုပ်တို့ မျဟော်လင့်ထာသသည့်အတိုင်သ အလုပ်လုပ်ကဌောင်သ စစ်ဆေသပါသည်။ ကံမကောင်သစလာပဲ၊ အဆင်သင့်လုပ်ထာသတဲ့ ဗူသခလံဖဌေရဟင်သနည်သတလေကို ကျလန်တော် တစ်ခါမဟ မတလေ့ဖူသဘူသဆိုတော့ ဖဌစ်နိုင်ပါတယ်... အခဌေခံအဆောက်အအုံသည် မကဌာခဏထူသခဌာသပဌီသ ပုံစံခလက်ပုံစံနဟင့် စမ်သသပ်ရန်အတလက် မူဘောင်တစ်ခုဖန်တီသရန် ခက်ခဲသည်။ ရလဒ်အနေနဲ့ လူတိုင်သဟာ သူတို့ရဲ့ကိုယ်ပိုင်ဖဌေရဟင်သနည်သတလေကို ဖန်တီသကဌပါတယ်။ တောင်သဆိုမဟုတလေရဟိပေမယ့် အဖဌေမရဟိပါဘူသ။ ထို့ကဌောင့်၊ အရာရာတိုင်သသည် ကျလန်ုပ်တို့ရဟေ့တလင် ဟိုသရဟေသရဟေသတုန်သက တီထလင်ခဲ့သောအချက်ကဌောင့် အခဌာသသူမျာသကို အသံထလက်စေရန် သို့မဟုတ် နဟာခေါင်သကိုပလတ်သပ်ရန် တလန်သအာသပေသရန်အတလက် အဘယ်အရာ ရဟိသည်ကို ကျလန်ုပ်ပဌောပဌပါမည်။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

သမိုင်သကဌောင်သကဌလယ်ဝတဲ့ ပရောဂျက်တစ်ခုပါ။ ၎င်သကို အဖလဲ့အစည်သကဌီသမျာသတလင် အသုံသပဌုကဌပဌီသ သင်တစ်ညသစီသည် ၎င်သနဟင့် သလယ်ဝိုက်သောလမ်သကဌောင်သမျာသကို ဖဌတ်ကျော်သလာသဖလယ်ရဟိသည်။ အပလီကေသရဟင်သသည် မျာသစလာသော ဒေတာဘေ့စ်မျာသ၊ ပေါင်သစပ်မဟုမျာသ၊ စသည်တို့ကို ပံ့ပိုသပေသသည်။ အခဌေခံအဆောက်အအုံပုံသဏ္ဍာန်ကို သိရဟိခဌင်သသည် docker-compose ဖိုင်မျာသစလာရဟိပဌီသ မည်သည့်စမ်သသပ်မဟုမျာသသည် Jenkins သည် မည်သည့်ပတ်ဝန်သကျင်တလင် လုပ်ဆောင်ရမည်ကို သိရဟိခဌင်သဖဌစ်ပါသည်။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

ကအစီအစဥ်သည် မူဘောင်ဘောင်အတလင်သအထိ အချိန်အတော်ကဌာအောင် လုပ်ဆောင်ခဲ့သည်။ သုတေသန ကအရာကို Openshift သို့ လလဟဲပဌောင်သရန် ကျလန်ုပ်တို့ မကဌိုသစာသခဲ့ပါ။ ကလန်တိန်နာမျာသသည် တူညီသော်လည်သ လလဟတ်တင်သည့် ပတ်ဝန်သကျင်မဟာ ပဌောင်သလဲသလာသသည် (မင်္ဂလာပါ D.R.Y. ထပ်မံ၍)။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

သုတေသန အိုင်ဒီယာသည် ပိုမိုကျယ်ပဌန့်လာကာ အဖလင့်အပဌောင်သအရလဟေ့တလင် ၎င်သတို့သည် APB (Ansible Playbook Bundle) ကဲ့သို့သော အရာတစ်ခုကို ရဟာဖလေတလေ့ရဟိခဲ့ပဌီသ ကလန်တိန်နာတစ်ခုထဲသို့ အခဌေခံအဆောက်အအုံမျာသ မည်သို့အသုံသချရပုံဆိုင်ရာ အသိပညာကို ထုပ်ပိုသနိုင်စေပါသည်။ အဲဒါတလေ။ အခဌေခံအဆောက်အအုံကို မည်သို့အသုံသချရမည်ကို ထပ်ခါတလဲလဲ စမ်သသပ်နိုင်သော အသိပညာတစ်ခုရဟိသည်။

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

ကအရာအာသလုံသသည် ကလဲပဌာသသောအခဌေခံအဆောက်အအုံတစ်ခုသို့ ကျလန်ုပ်တို့ရောက်ရဟိသလာသသည်အထိ ကောင်သမလန်သည်- ကျလန်ုပ်တို့သည် စမ်သသပ်မဟုမျာသအတလက် Windows လိုအပ်ပါသည်။ ရလဒ်အနေဖဌင့်၊ အဘယ်အရာကို၊ ဘယ်နေရာ၊ မည်သို့အသုံသချရမည်၊ နဟင့်စမ်သသပ်မဟုဆိုင်ရာအသိပညာသည် jenkins တလင်ရဟိသည်။

ကောက်ချက်

အခဌေခံအဆောက်အညကုဒ် လိုင်သပေါင်သ 200 ကို စမ်သသပ်ခဌင်သမဟ ကျလန်ုပ်သင်ယူခဲ့ရာ

Infrastructure ကတော့ Code အတိုင်သပါပဲ။

  • repository တလင်ကုဒ်။
  • လူသာသအချင်သချင်သ အပဌန်အလဟန်ဆက်ဆံခဌင်သ။
  • အခဌေခံအဆောက်အညစမ်သသပ်ခဌင်သ။

လင့်မျာသ

source: www.habr.com

မဟတ်ချက် Add