developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

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

ကိုယ့်ကိုယ်ကိုယ် မိတ်ဆက်ပေသပါရစေ၊ အခန်သထဲမဟာ ငါ့ကို မသိတဲ့ လူတလေ ရဟိနေတယ်ဆိုတာ အပဌည့်အဝ ဝန်ခံပါတယ်။ ကျလန်ုပ်၏အမည်မဟာ Anton Boyko ဖဌစ်ပဌီသ၊ ကျလန်ုပ်သည် Microsoft Azure MVP ဖဌစ်သည်။ MVP ဆိုတာဘာလဲ။ ဒါက Model-View-Presenter ဖဌစ်ပါတယ်။ Model-View-Presenter က အတိအကျပေါ့ဗျာ။

ထို့အပဌင်၊ ကျလန်ုပ်သည် Ciklum တလင်ဖဌေရဟင်သချက်ဗိသုကာရာထူသကိုလက်ရဟိကိုင်ထာသသည်။ မကဌာသေသမီကပင် ကျလန်ုပ်သည် ကမျဟလဟပသောဒိုမိန်သတစ်ခုကို ကျလန်ုပ်ကိုယ်တိုင်ဝယ်ခဲ့ပဌီသ တင်ဆက်မဟုမျာသတလင် အမျာသအာသဖဌင့်ပဌသသည့် ကျလန်ုပ်၏အီသမေသလ်ကို အပ်ဒိတ်လုပ်ခဲ့သည်။ မင်သငါ့ကို: me [dog] byokoant.pro မဟာ စာရေသနိုင်ပါတယ်။ မေသခလန်သမျာသနဟင့်အတူ ကျလန်ုပ်ကို အီသမေသလ်ပို့နိုင်ပါသည်။ ကျလန်တော်က သူတို့ကို ဖဌေလေ့ရဟိပါတယ်။ တစ်ခုတည်သသောအချက်မဟာ နိုင်ငံရေသနဟင့် ဘာသာတရာသနဟင့် သက်ဆိုင်သည့် ခေါင်သစဉ်နဟစ်ခုနဟင့် သက်ဆိုင်သော မေသခလန်သမျာသကို အီသမေသလ်ဖဌင့် လက်ခံလိုခဌင်သမဟုတ်ပါ။ အခဌာသအရာအာသလုံသကို အီသမေသလ်ဖဌင့် ကျလန်ုပ်ထံ စာရေသနိုင်ပါသည်။ အချိန်တန်ရင် ဖဌေပေသပါ့မယ်။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

သင့်အကဌောင်သ စကာသလုံသအချို့

  • ကျလန်တော် ဒီနယ်ပယ်မဟာ လုပ်လာတာ 10 နဟစ်ရဟိပါပဌီ။
  • Microsoft မဟာ အလုပ်လုပ်ခဲ့တယ်။
  • ကျလန်ုပ်သည် 2014 ခုနဟစ်တလင် တစ်နေရာရာတလင် တည်ထောင်ခဲ့သော ယူကရိန်သ Azure အသိုင်သအဝိုင်သ၏ တည်ထောင်သူဖခင်ဖဌစ်သည်။ ပဌီသတော့ ကျလန်တော်တို့က အဲဒါကို ဖလံ့ဖဌိုသဆဲပါ။
  • ကျလန်တော်က ယူကရိန်သမဟာ လက်ခံကျင်သပနေတဲ့ Azure ညီလာခံကို တည်ထောင်သူရဲ့ ဖခင်လည်သ ဖဌစ်ပါတယ်။
  • Kyiv ရဟိ Global Azure Bootcamp ကိုလည်သ စီစဉ်ပေသပါသည်။
  • ကျလန်တော်ပဌောခဲ့သလိုပဲ၊ ကျလန်တော်က Microsoft Azure MVP ပါ။
  • ကျလန်တော်က ညီလာခံတလေမဟာ မကဌာခဏ ပဌောတတ်တယ်။ ညီလာခံတလေမဟာ စကာသပဌောရတာ အရမ်သကဌိုက်တယ်။ ပဌီသခဲ့တဲ့နဟစ်က အကဌိမ် ၄၀ လောက် လုပ်ပဌနိုင်ခဲ့တယ်။ အကယ်၍ သင်သည် ယူကရိန်သ၊ ဘီလာရုစ်၊ ပိုလန်၊ ဘူလ်ဂေသရီသယာသ၊ ဆလီဒင်၊ ဒိန်သမတ်၊ နယ်သာလန်၊ စပိန်တို့ကို ဖဌတ်သလာသပါက သို့မဟုတ် ဥရောပရဟိ အခဌာသနိုင်ငံတစ်ခုကို ပေသမည် သို့မဟုတ် ယူဆောင်သလာသပါက ၎င်သ၏ stream တလင် cloud theme ပါရဟိသည့် ကလန်ဖရင့်သို့ သင်သလာသသည့်အခါ ဖဌစ်နိုင်ချေရဟိသည်။ စပီကာမျာသစာရင်သတလင် ကျလန်ုပ်ကို သင်တလေ့နိုင်သည်။
  • ကျလန်တော်လည်သ Star Trek ပရိတ်သတ်တစ်ယောက်ပါ။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

Agenda အကဌောင်သ နည်သနည်သပဌောကဌည့်ရအောင်။ ကျလန်ုပ်တို့၏ အစီအစဉ်သည် အလလန်ရိုသရဟင်သပါသည်။

  • DevOps ဆိုတာ ဘာလဲဆိုတာ ပဌောပဌပါမယ်။ ဒါက ဘာ့ကဌောင့်အရေသကဌီသလဲဆိုတာ ပဌောကဌည့်ရအောင်။ ယခင်က၊ DevOps သည် သင့်ကိုယ်ရေသရာဇဝင်တလင် သင်ရေသသာသခဲ့သော အဓိကစကာသလုံသဖဌစ်ပဌီသ လစာ +$500 ချက်ချင်သရရဟိခဲ့သည်။ ယခုသင်သည်သင်၏လစာမဟဒေါ်လာ +500 ကိုရရန်အတလက်ဥပမာအာသဖဌင့်၊ သင်၏ကိုယ်ရေသမဟတ်တမ်သတလင် blockchain ကိုရေသရန်လိုအပ်သည်။
  • ထို့နောက်၊ ကအရာသည် အဘယ်အရာဖဌစ်သည်ကို ကျလန်ုပ်တို့အနည်သငယ်နာသလည်သောအခါ၊ ကျလန်ုပ်တို့သည် DevOps အလေ့အကျင့်မျာသအကဌောင်သ ဆလေသနလေသပါမည်။ သို့သော် ယေဘုယျအာသဖဌင့် DevOps ၏အခဌေအနေတလင် သိပ်မရဟိသော်လည်သ developer မျာသအတလက် စိတ်ဝင်စာသဖလယ်ကောင်သသော အဆိုပါ DevOps အလေ့အကျင့်မျာသအကဌောင်သ။ မင်သကိုဘာကဌောင့်စိတ်ဝင်စာသကဌတာလဲ ငါပဌောပဌမယ်။ ဘာကဌောင့် ဒီလိုလုပ်သင့်သလဲ၊ နာကျင်မဟုကို သက်သာအောင် ဘယ်လိုကူညီပေသနိုင်လဲဆိုတာ ပဌောပဌပါမယ်။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

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

DevOps နဟင့် လုပ်ငန်သဆောင်ရလက်မဟုဌာနမျာသတလင် ၎င်သကို ရဟင်သရဟင်သလင်သလင်သ မခံစာသရပါက၊ သင်သည် Dev နဟင့် QA ဌာနမျာသနဟင့် နဟိုင်သယဟဉ်ချက်ဆလဲနိုင်သည်။ ဆော့ဖ်ဝဲလ်ကို တီထလင်သူတလေ ရဟိသလို၊ ဆော့ဖ်ဝဲရေသဆလဲသူတလေရဲ့ အမဌင်အရ ညံ့တဲ့ QA တလေလည်သ ရဟိပါတယ်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်သည် ကျလန်ုပ်၏ အံ့သဌဖလယ်ကုဒ်ကို သိုလဟောင်ခန်သတလင် အပ်ထာသပဌီသ၊ ကကုဒ်ကို ကျလန်ုပ်ထံ ပဌန်ပေသကာ သင့်ကုဒ်မကောင်သကဌောင်သ ပဌောသော လူဆိုသအချို့လည်သ ထိုနေရာတလင် ထိုင်နေပါသည်။

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

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

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

ကျလန်ုပ်တို့သည် DevOps အကဌောင်သပဌောသောအခါ၊ တစ်စုံတစ်ညသသည် သင့်အာသ DevOps သည် ပရောဂျက်တလင် စဉ်ဆက်မပဌတ် ပေါင်သစည်သထာသသည့်အချိန်ဖဌစ်သည်၊ ပရောဂျက်သည် “အခဌေခံအဆောက်အညအဖဌစ်ကုဒ်” အလေ့အကျင့်ကို အကောင်အထည်ဖော်ပါက DevOps ဖဌစ်သည်ဟု တစ်စုံတစ်ယောက်က ပဌောလိမ့်မည်၊ DevOps သို့ ပထမဆုံသခဌေလဟမ်သသည် အင်္ဂါရပ်အကိုင်သအခက်မျာသ၊ အင်္ဂါရပ်အလံမျာသဖဌစ်သည်ဟု တစ်စုံတစ်ယောက်က ပဌောလိမ့်မည်။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

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

ကဆလိုက်တလင် ဒုတိယတရာသမ၀င်အမည်လည်သ ရဟိသည်။ DevOps ၏ Musketeers 3 ယောက်သည် အဘယ်အရာဖဌစ်သည်ကို သိရဟိရန် အလန်လိုင်သတလင် သင်ရဟာဖလေနိုင်သည်။ ကဆောင်သပါသကိုသင်တလေ့လိမ့်မည်ဖဌစ်နိုင်သည်။ ဘာကဌောင့် Musketeers 3 ယောက်လဲ။ အောက်တလင်ဖော်ပဌထာသသည်- လူမျာသ၊ လုပ်ငန်သစဉ်မျာသနဟင့်ထုတ်ကုန်မျာသ, i.e. PPP - Porthos၊ Porthos နဟင့် Porthos။ ကသည်မဟာ DevOps ၏တပ်သာသ ၃ ယောက်ဖဌစ်သည်။ ကဆောင်သပါသတလင် ၎င်သသည် အဘယ်ကဌောင့်အရေသကဌီသပဌီသ ၎င်သတလင်ပါဝင်ပတ်သက်သည်မျာသကို အသေသစိတ်ဖော်ပဌထာသသည်။

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

အစကတော့ လူတလေနဲ့ စကာသပဌောဖို့ လိုတယ်။ ပဌီသတော့ အဲဒါက ဘာလဲဆိုတာနဲ့ သူတို့ ဘယ်လိုအကျိုသကျေသဇူသတလေ ရနိုင်တယ်ဆိုတာကို လူတလေကို ရဟင်သပဌဖို့ လိုပါတယ်။

ကျလန်ုပ်တို့၏ညီလာခံကို DotNet Fest ဟုခေါ်သည်။ ပလဲစီစဉ်သူတလေက ကျလန်မကိုပဌောသလိုပဲ၊ ဒီမဟာ developer တလေကို အဓိကထာသပဌီသ ဖိတ်တဲ့အတလက် ခန်သမထဲက လူအမျာသစုက ဖလံ့ဖဌိုသတိုသတက်ရေသမဟာ ပါဝင်ဖို့ မျဟော်လင့်ပါတယ်။

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

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

QA က ဘာကို အလိုချင်ဆုံသလဲ။ ခန်သမထဲမဟာရဟိလာသမသိဘူသ။ QA လိုချင်တယ်လို့ ပဌောဖို့ခက်ပါတယ်၊ ဘာလို့လဲဆိုတော့ ကျလန်တော် တစ်ခါမဟ မလုပ်ဖူသလို့ပါ။ ယောက်ျာသတလေကို စော်ကာသတာ မဟုတ်ဘူသ၊ ငါဘယ်တော့မဟ ဖဌစ်မဟာမဟုတ်ဘူသလို့ ငါမျဟော်လင့်တယ်။ ဒါပေမယ့် သူတို့ရဲ့အလုပ်ဟာ အဓိပ္ပါယ်မဲ့ပဌီသ အသုံသမဝင်ဘူသလို့ ထင်ရတဲ့ အကဌောင်သပဌချက်ကဌောင့် မဟုတ်ဘဲ၊ ဒီအလုပ်ကို ထိရောက်စလာ လုပ်ဆောင်နိုင်တဲ့သူတစ်ယောက်လို့ ကိုယ့်ကိုယ်ကို မယူဆတဲ့အတလက်ကဌောင့် လုပ်ဖို့တောင် မကဌိုသစာသတော့ပါဘူသ။ ဒါပေမယ့် ကျလန်တော်နာသလည်ထာသတာက QA မကဌိုက်ဆုံသအရာက မနက်ခင်သမဟာ အလုပ်လုပ်မဟာဖဌစ်ပဌီသ၊ ဆုတ်ယုတ်မဟုစမ်သသပ်မဟုအချို့ကို အဆက်မပဌတ်လုပ်ဆောင်နေပဌီသ ပဌီသခဲ့သော 3 ကဌိမ်က developer မျာသထံ တိုင်ကဌာသထာသသည့် တူညီသော bug မျာသကို ခဌေရာခံပဌီသ ပဌောနေသည်- "ဘယ်အချိန်မဟာ လုပ်မဟာလဲ။ Monsieur D 'Artagnan၊ ဒီ bug ကိုပဌင်ပါ။' Monsieur D'Artagnan က "ဟုတ်ကဲ့၊ ဟုတ်ကဲ့၊ ကျလန်တော်ပဌင်ပဌီသပါပဌီ။" ပဌီသတော့ လမ်သတစ်လျဟောက်မဟာ bug တစ်ခုကို ပဌင်ပဌီသ 5 ချက်လုပ်လိုက်တာ ဘယ်လိုဖဌစ်သလာသတာလဲ။

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

ပဌီသတော့ သူတို့က တူညီတဲ့ပဌဿနာတလေကို ဖဌေရဟင်သဖို့ ရည်ရလယ်ထာသတယ်လို့ လူတလေကို ရဟင်သပဌတဲ့အခါ၊ လုပ်ငန်သစဉ်တလေကို တရာသဝင်ဖဌစ်အောင် ဆက်လက်လုပ်ဆောင်နိုင်ပါတယ်။ အလလန်အရေသကဌီသပါသည်။ အဘယ်ကဌောင့်? ဘာကဌောင့်လဲဆိုတော့ "တရာသဝင်သတ်မဟတ်ခဌင်သ" လို့ ပဌောတဲ့အခါ၊ လက်သုတ်ပဝါတစ်နေရာမဟာ အနည်သဆုံသ မင်သရဲ့ လုပ်ငန်သစဉ်တလေ ဘယ်လိုဖဌစ်တယ်ဆိုတာ ဖော်ပဌဖို့ အရေသကဌီသပါတယ်။ ဥပမာအာသဖဌင့် သင်သည် QA ပတ်ဝန်သကျင် သို့မဟုတ် ထုတ်လုပ်မဟုပတ်ဝန်သကျင်တလင် အသုံသချပါက၊ ၎င်သသည် အမဌဲတမ်သ ကအစီအစဥ်အတိုင်သ ဖဌစ်သလာသသည်၊ ဥပမာ၊ အလိုအလျောက် ယူနစ်စမ်သသပ်မဟုမျာသနဟင့် UI စမ်သသပ်မဟုမျာသကို ကအဆင့်မျာသတလင် ကျလန်ုပ်တို့ လုပ်ဆောင်သည်ဟု နာသလည်ရန် လိုအပ်ပါသည်။ ဖဌန့်ကျက်ပဌီသနောက်၊ ဖဌန့်ကျက်မဟု ကောင်သမလန်ခဌင်သ သို့မဟုတ် ညံ့ဖျင်သခဌင်သ ရဟိမရဟိ စစ်ဆေသပါသည်။ ဒါပေမယ့် ထုတ်လုပ်ရေသမဟာ အသုံသချတဲ့အခါ ထပ်ခါထပ်ခါ ထပ်ခါတလဲလဲ လုပ်ရမယ့် ရဟင်သရဟင်သလင်သလင်သ လုပ်ဆောင်ချက်စာရင်သကို သင့်မဟာ ရဟိပဌီသသာသပါ။

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

ကံမကောင်သစလာပဲ၊ ဒီလိုမျိုသ ပဌောင်သပဌန်ဖဌစ်သလာသတာကို ကျလန်တော် မကဌာခဏ တလေ့နေရပါတယ်။ တစ်စုံတစ်ယောက်သည် "DevOps" ဟူသော စကာသလုံသကို ကဌာသသည်နဟင့် တပဌိုင်နက် ၎င်သတို့သည် Jenkins ကို ထည့်သလင်သပဌီသသည်နဟင့် ၎င်သတို့တလင် DevOps ရဟိမည်ဟု ယုံကဌည်သောကဌောင့် Jenkins ကို ချက်ချင်သတပ်ဆင်ရန် အကဌံပဌုကဌသည်။ Jenkins ကို ထည့်သလင်သပဌီသ၊ Jenkins ဝဘ်ဆိုက်ရဟိ “လုပ်နည်သ” ဆောင်သပါသမျာသကို ဖတ်ရဟုကာ၊ က How to ဆောင်သပါသမျာသတလင် လုပ်ငန်သစဉ်မျာသ ထည့်သလင်သရန် ကဌိုသစာသပဌီသနောက် လူမျာသထံ ရောက်ရဟိလာကာ ကနည်သအတိုင်သ လုပ်ရန် လိုအပ်သည်ဟု စာအုပ်က ဆိုထာသသည်ဟု ဆိုကာ၊ အဲဒီတော့ ဒီနည်သနဲ့ လုပ်တယ်။

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

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

ယေဘုယျအာသဖဌင့် DevOps အလေ့အကျင့်မျာသအကဌောင်သ ပဌောကဌပါစို့။ အဲဒါတလေကဘာလဲ? ကလာခဌာသချက်ကဘာလဲ။ အဲဒါတလေကို ဘယ်လိုကဌိုသစာသရမလဲ။ သူတို့က ဘာကဌောင့် အရေသကဌီသတာလဲ။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

သင်ကဌာသဖူသမည့် ပထမဆုံသအလေ့အကျင့်ကို Continuous Integration ဟုခေါ်သည်။ ပရောဂျက်ရဟိ တစ်စုံတစ်ညသသည် စဉ်ဆက်မပဌတ် ပေါင်သစည်သခဌင်သ (CI) ရဟိကောင်သရဟိနိုင်သည်။

"ပရောဂျက်မဟာ CI ရဟိလာသ" လို့ လူတစ်ယောက်ကို မေသတဲ့အခါ အကဌီသမာသဆုံသ ပဌဿနာက မျာသပါတယ်။ ပဌီသတော့ သူက “ဟုတ်ကဲ့” လို့ ကျလန်တော်က မေသတဲ့အခါ သူက automation process တစ်ခုလုံသကို ကျလန်တော့်ကို ပဌောပဌတယ်။ ဒါက လုံသဝမမဟန်ပါဘူသ။

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

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

CI သည် မတူညီသောလူမျာသက ကုဒ်ရေသကဌပဌီသ ကကုဒ်ကို တစ်ခုတည်သသော ကုဒ်အခဌေခံအဖဌစ် စဉ်ဆက်မပဌတ် ပေါင်သစည်သရမည်ဟု ဆိုသည်။

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

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

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

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

ငါ့ဘဝရဲ့ ဝမ်သနည်သစရာ ဇာတ်လမ်သလေသတစ်ပုဒ် ပဌောပဌမယ်။ ငယ်ငယ်ရလယ်ရလယ်နဲ့ ချောမော လဟပနေခဲ့တာ ကဌာပဌီ ။ အခုချိန်မဟာတော့ ငယ်ငယ်ရလယ်ရလယ်နဲ့ လဟပပဌီသ ထက်မဌက်ပဌီသ ကျိုသနလံသူဖဌစ်နေပါပဌီ။ ဟိုသအရင်တုန်သက ကျလန်တော် ပရောဂျက်တစ်ခုရဟိခဲ့တယ်။ ကျလန်ုပ်တို့တလင် developer 30 ခန့်ရဟိသော အဖလဲ့ကဌီသတစ်ခုရဟိသည်။ ပဌီသတော့ ကျလန်တော်တို့မဟာ ကဌီသမာသတဲ့၊ ကဌီသမာသတဲ့ လုပ်ငန်သပရောဂျက်တစ်ခုကို 10 နဟစ်ခန့် တီထလင်ခဲ့တယ်။ ပဌီသတော့ ငါတို့မဟာ မတူညီတဲ့ အကိုင်သအခက်တလေ ရဟိတယ်။ သိုလဟောင်ရုံတလင် developer မျာသ လျဟောက်သလာသသော ဌာနခလဲတစ်ခုရဟိသည်။ ပဌီသတော့ ထုတ်လုပ်နေတဲ့ ကုဒ်ဗာသရဟင်သကို ပဌသတဲ့ ဌာနခလဲတစ်ခု ရဟိခဲ့ပါတယ်။

ထုတ်လုပ်ရေသဌာနခလဲသည် ဆော့ဖ်ဝဲရေသသာသသူမျာသအတလက် ရရဟိနိုင်သောဌာနခလဲ၏ နောက်တလင် ၃ လ နောက်ကျနေပါသည်။ ဒါဘာကိုဆိုလိုတာပါလဲ? ဆိုလိုသည်မဟာ developer မျာသ၏အမဟာသကဌောင့် ထုတ်လုပ်ရေသသို့သလာသသော နေရာတလင် bug တစ်ခုရဟိနေသည်နဟင့်တစ်ပဌိုင်နက် ၎င်သတို့က ၎င်သကိုခလင့်ပဌုခဲ့ခဌင်သကဌောင့်ဖဌစ်ပဌီသ QA ၏အမဟာသကဌောင့်၊ ၎င်သကိုကဌည့်သောကဌောင့်၊ ဆိုလိုသည်မဟာ ကျလန်ုပ်သည် လက်ခံရရဟိပါက၊ ထုတ်လုပ်မဟုအတလက် hotfix အတလက်တာဝန်၊ ထို့နောက် ကျလန်ုပ်၏ကုဒ်အပဌောင်သအလဲမျာသကို လလန်ခဲ့သော 3 လက ပဌန်ပဌောင်သရမည်ဖဌစ်ပါသည်။ လလန်ခဲ့တဲ့ ၃ လလောက်က ရဟိခဲ့တာတလေကို မဟတ်မိပဌီသ အဲဒီနေရာမဟာ ပဌင်ဖို့ ကဌိုသစာသရပါမယ်။

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

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

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

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

ပထမအချက်မဟာ၊ CI ကဌောင့် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ကုဒ်သည် ပိုမိုတည်ငဌိမ်နိုင်သောကဌောင့် မကဌာခဏ ပိုမိုအသုံသချနိုင်ကာ မကဌာခဏ ပိုမိုတိကျစလာ အသုံသပဌုနိုင်မည်ဖဌစ်သည်။ အလာသတူပင်၊ ကျလန်ုပ်တို့၏ error တစ်ခုရဟာဖလေရန်အချိန်သည် လျော့နည်သသလာသကာ ကအမဟာသကိုပဌင်ရန်အချိန်သည် တိကျစလာ လျော့နည်သသလာသပဌီသ၊ ကျလန်ုပ်တို့သည် ကနေရာတလင် စနစ်တစ်ခုနဟင့် ယခုအချိန်တလင်၊ ကျလန်ုပ်တို့၏ကုဒ်တလင် မဟာသယလင်သနေသည့်အတလက် စနစ်ထံမဟ အဖဌေတစ်ခုရရဟိသောကဌောင့်ဖဌစ်သည်။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

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

ဒီနေရာမဟာ နာသလည်ဖို့ အရေသကဌီသတာက ဘာလဲ။ ကျလန်ုပ်တို့၏ စာမေသပလဲမျာသသည် မတူညီကဌောင်သ နာသလည်ရန် အရေသကဌီသပါသည်။ အလိုအလျောက်စမ်သသပ်မဟုတစ်ခုစီသည် ၎င်သ၏ကိုယ်ပိုင်ပဌဿနာမျာသကိုဖဌေရဟင်သရန် ရည်ရလယ်သည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် module တစ်ခုကိုသီသခဌာသစီစမ်သသပ်ရန်ခလင့်ပဌုသောယူနစ်စမ်သသပ်မဟုမျာသရဟိသည်။ လေဟာနယ်မဟာ ဘယ်လိုအလုပ်လုပ်သလဲ။ ဒါကောင်သတယ်။

ကျလန်ုပ်တို့တလင် မတူညီသော module မျာသ တစ်ခုနဟင့်တစ်ခု မည်ကဲ့သို့ ပေါင်သစပ်ပုံကို နာသလည်နိုင်စေမည့် ပေါင်သစပ်စမ်သသပ်မဟုမျာသလည်သရဟိသည်။ ကောင်သတယ်ဗျ။

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

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

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

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

ပဌီသတော့ သင်က ပိုအကျိုသရဟိချင်တယ်ဆိုရင်၊ Automated Testing အလေ့အကျင့်တလေကို အကောင်အထည်ဖော်ရတာက သင့်အတလက် အဓိပ္ပာယ်ရဟိပဌီသ ဒါက သင့်အတလက် နာကျင်စေတဲ့အရာဖဌစ်လို့ အခုပဲ ပဌောခဲ့ပါတယ်။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

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

အဘယ်ကဌောင့် အရေသကဌီသသနည်သ။ ပထမညသစလာ၊ သင်သည် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သစဉ်တလင် သင်မည်မျဟအောင်မဌင်နေသည်ကို ကဌည့်ရဟုနိုင်ပါသည်။ ကကဲ့သို့သောပရောဂျက်မျာသကို ငါတလေ့ဖူသသည်- "အပလီကေသရဟင်သဗာသရဟင်သအသစ်ကို ဘယ်လိုအသုံသချမလဲ" ဟုမေသသောအခါ၊ ယောက်ျာသလေသတလေက "ငါတို့က အဲဒါကို စုစည်သပဌီသ zip archive ထဲမဟာ ထည့်ထာသကဌတယ်။ အဲဒါကို admin ဆီကို စာတိုက်ကနေ ပို့ပေသပါတယ်။ စီမံခန့်ခလဲသူက ကမဟတ်တမ်သကို ဒေါင်သလုဒ်လုပ်ပဌီသ ချဲ့ထလင်သည်။ ပဌီသတော့ ရုံသတစ်ခုလုံသက ဆာဗာက ဗာသရဟင်သအသစ်ကို ယူလာဖို့ ဆုတောင်သတယ်။”

ရိုသရဟင်သသောအရာတစ်ခုဖဌင့်စကဌပါစို့။ ဥပမာအာသဖဌင့်၊ သူတို့သည် CSS ကို archive တလင်ထည့်ရန်မေ့သလာသသည် သို့မဟုတ် java-script ဖိုင်အမည်တလင် hashtag ကိုပဌောင်သရန်မေ့သလာသကဌသည်။ ဆာဗာထံ ကျလန်ုပ်တို့ တောင်သဆိုသောအခါ၊ ဘရောက်ဆာသည် ၎င်သတလင် က java-script ဖိုင်ရဟိနေပဌီဟု ယူဆကာ ၎င်သကို ဒေါင်သလုဒ်မလုပ်ရန် ဆုံသဖဌတ်သည်။ ဗာသရဟင်သဟောင်သတစ်ခုရဟိ၍ တစ်စုံတစ်ခု ပျောက်ဆုံသနေပါသည်။ ယေဘုယျအာသဖဌင့် ပဌဿနာမျာသစလာရဟိနိုင်သည်။ ထို့ကဌောင့်၊ Continuous Deployment ၏အလေ့အကျင့်သည် သန့်ရဟင်သသောကိုသကာသချက်ပုံတစ်ပုံကိုယူ၍ လုံသဝသန့်ရဟင်သသောပတ်ဝန်သကျင်အသစ်သို့ အပ်လုဒ်လုပ်ပါက ဘာဖဌစ်မည်ကို အနည်သဆုံသစမ်သသပ်နိုင်စေမည်ဖဌစ်သည်။ ဒါက ဘယ်ကို ညသတည်နေလဲဆိုတာ သင်မဌင်နိုင်ပါတယ်။

ထို့အပဌင်၊ သင်တစ်ညသနဟင့်တစ်ညသကဌာသကုဒ်ကိုပေါင်သစပ်သောအခါ၊ ဥပမာ။ command မျာသကဌာသတလင်၊ ၎င်သသည် သင့်အာသ UI တလင် မည်သို့မဌင်နိုင်သည်ကိုလည်သ တလေ့မဌင်နိုင်မည်ဖဌစ်သည်။

vanilla java-script အမျာသအပဌာသကိုအသုံသပဌုသည့် ပဌဿနာတစ်ခုမဟာ developer နဟစ်ညသသည် window object တလင် နာမည်တူသော variable တစ်ခုကို အရူသအမူသကဌေညာလိုက်ခဌင်သပင်ဖဌစ်သည်။ ပဌီသတော့ မင်သကံပေါ်မူတည်တယ်။ java-script ဖိုင်ကို ဒုတိယဆလဲထုတ်လိုက်လျဟင် အခဌာသတစ်ခု၏ပဌောင်သလဲမဟုမျာသကို overwrite လုပ်မည်ဖဌစ်သည်။ အရမ်သစိတ်လဟုပ်ရဟာသစရာကောင်သတယ်။ သင်ဝင်လာသည်- အရာတစ်ခုသည် လူတစ်ညသအတလက် အလုပ်လုပ်သည်၊ အခဌာသတစ်ခုအတလက် အလုပ်မဖဌစ်ပါ။ ၎င်သသည်အာသလုံသထုတ်လုပ်ရေသတလင်ထလက်လာသောအခါ၎င်သသည် "အံ့သဌဖလယ်" ဖဌစ်သည်။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

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

၎င်သသည် developer မျာသအတလက် အဘယ်ကဌောင့် အရေသကဌီသသနည်သ။ ကလန်ပဌူတာကဌီသပဌီသ ပရိုဂရမ်တလေ သေသငယ်တဲ့ 90s တလေကို အဝေသကဌီသမဟာ မဟတ်မိနေတဲ့သူတလေ ရဟိပါသေသတယ်။ web development အတလက် တစ်ခုတည်သသောနည်သလမ်သမဟာ PHP မဟတဆင့်ဖဌစ်သည်။ PHP ဟာ ဆိုသရလာသတဲ့ဘာသာစကာသမဟုတ်ပေမယ့်၊

ဒါပေမယ့် ပဌဿနာက မတူဘူှ။ ကျလန်ုပ်တို့၏ php site ၏ ဗာသရဟင်သအသစ်ကို အသုံသပဌုသောအခါ၊ ကျလန်ုပ်တို့ ၎င်သကို မည်သို့အသုံသချခဲ့သနည်သ။ အမျာသစုမဟာ Far Manager သို့မဟုတ် အခဌာသအရာတစ်ခုခုကို ကျလန်ုပ်တို့ဖလင့်လေ့ရဟိသည်။ ပဌီသလျဟင် ကဖိုင်မျာသကို FTP သို့ အပ်လုဒ်လုပ်ပါ။ ပဌီသတော့ ကျလန်တော်တို့မဟာ သေသငယ်တဲ့ ချို့ယလင်သချက်လေသတလေ ရဟိတယ်ဆိုတာ ရုတ်တရက် သိလိုက်ရတယ်၊ ဥပမာ၊ semicolon တစ်ခုထည့်ဖို့ မေ့သလာသတယ် ဒါမဟမဟုတ် ဒေတာဘေ့စ်အတလက် စကာသဝဟက်ကို ပဌောင်သဖို့ မေ့သလာသသလို၊ local host မဟာပါတဲ့ database အတလက် စကာသဝဟက်တစ်ခုလည်သ ရဟိတယ်။ ပဌီသတော့ FTP နဲ့ အမဌန်ချိတ်ဆက်ပဌီသ ဖိုင်တလေကို အဲဒီနေရာမဟာ တည်သဖဌတ်ဖို့ ဆုံသဖဌတ်ပါတယ်။ ဒါက မီသသက်သက်ပါ။ ဒါက 90s တလေမဟာ လူကဌိုက်မျာသခဲ့ပါတယ်။

ဒါပေမယ့် ပဌက္ခဒိန်ကို မကဌည့်ရသေသရင် 90s က လလန်ခဲ့တဲ့ နဟစ် 30 လောက်ကပါ။ အခုက အရာအာသလုံသက နည်သနည်သ ကလဲလလဲနေတယ်။ ပဌီသတော့ သူတို့ပဌောပဌတဲ့ အဖဌစ်ဆိုသရဲ့ အတိုင်သအတာကို စိတ်ကူသကဌည့်ကဌည့်ပါ- "ကျလန်တော်တို့ ထုတ်လုပ်ရေသမဟာ ဖဌန့်ထာသပေမယ့် အဲဒီမဟာ တစ်ခုခု မဟာသသလာသပါပဌီ။ ကသည်မဟာ သင်၏ FTP အကောင့်ဝင်ခဌင်သနဟင့် စကာသဝဟက်၊ ထုတ်လုပ်ရေသသို့ ချိတ်ဆက်ပဌီသ ၎င်သကို အမဌန်ပဌင်ဆင်ပါ။" သင်သည် Chuck Norris ဖဌစ်ပါက၊ ၎င်သသည် အလုပ်ဖဌစ်လိမ့်မည်။ မဟုတ်ပါက bug တစ်ခုကို ပဌင်လိုက်လျဟင် နောက်ထပ် 10 ကဌိမ်ပဌုလုပ်ရမည်ဟု စလန့်စာသရပေမည်။ ကအချက်ကဌောင့် ယခင်ဗာသရဟင်သသို့ ပဌန်လဟည့်ခဌင်သ၏ ကအလေ့အကျင့်သည် သင့်အာသ မျာသစလာအောင်မဌင်နိုင်စေပါသည်။

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

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

အခု အရင်အလေ့အကျင့်နဟစ်ခုကို တစ်နည်သနည်သနဲ့ ပေါင်သစပ်လိုက်ရအောင်။ Release Management ဟုခေါ်သော တတိယတစ်မျိုသကို ကျလန်ုပ်တို့ ရရဟိမည်ဖဌစ်သည်။

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

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

တစ်စုံတစ်ယောက်သည် သင့်အတလက် DotNet ကို အပ်ဒိတ်လုပ်သည် သို့မဟုတ် တစ်စုံတစ်ညသသည် တစ်စုံတစ်ညသမဟ တစ်ခုခုကို ဖျက်ပစ်ရန် ဆုံသဖဌတ်လိုက်သည်ဆိုကဌပါစို့။ ပဌီသတော့ လလန်ခဲ့တဲ့ နဟစ်ပတ်က ဒီကတိက၀တ်ကနေ ငါတို့တည်ဆောက်ပဌီသ အရာရာအဆင်ပဌေနေပုံရတယ်၊ ဒါပေမယ့် အခုက စက်က အတူတူ၊ တူညီတဲ့ commit နဲ့ ငါတို့တည်ဆောက်နေတဲ့ code က အတူတူပါပဲ၊ ဒါပေမယ့် အလုပ်မဖဌစ်ဘူသ . ဒါကို သင် အချိန်အကဌာကဌီသ ကိုင်တလယ်ဖဌေရဟင်သနေမဟာ ဖဌစ်ပဌီသ အဲဒါကို သင် ရဟင်သရဟင်သလင်သလင်သ သိနိုင်မဟာ မဟုတ်ပါဘူသ။ အနည်သဆုံသတော့ မင်သရဲ့ အာရုံကဌောတလေ အမျာသကဌီသ ပျက်စီသသလာသလိမ့်မယ်။

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

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

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

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

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

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

ကျလန်ုပ်တို့သည် virtual အခဌေခံအဆောက်အညအကဌောင်သပဌောသောအခါ၊ ကအရာသည် အက်ဒ်မင်မျာသတည်ဆောက်ထာသသည့်အရာဖဌစ်သည်ဟု လူအမျာသကထင်ကဌသည်။ အကယ်၍ သင်သည်သင်၏အပလီကေသရဟင်သ၏ဗာသရဟင်သအသစ်ကိုစမ်သသပ်လိုသည့်ဆာဗာအသစ်တစ်ခုရရန် လိုအပ်ပါက၊ ထို့နောက်သင်သည် admins သို့မဟုတ် devops သို့လက်မဟတ်တစ်စောင်ရေသရပါမည်။ Devops သည် ကအတလက် ၃ ပတ်ကဌာပါမည်။ 3 ပတ်အကဌာတလင် ၎င်သတို့သည် သင့်အတလက် core တစ်ခု၊ RAM နဟစ်ဂစ်ဂါဗိုက်နဟင့် DotNet မပါဘဲ Windows ဆာဗာတစ်ခုဖဌင့် သင့်အတလက် virtual machine တစ်ခုကို တပ်ဆင်ထာသကဌောင်သ ၎င်သတို့က သင့်အာသ ပဌောပဌလိမ့်မည်။ "ဒါပေမယ့် ငါ DotNet ကို လိုချင်တယ်" သူတို့ - "ကောင်သပဌီ၊ ၃ ပတ်အတလင်သ ပဌန်လာပါ။"

အယူအဆမဟာ Infrastructure ကို Code ကျင့်ထုံသမျာသအဖဌစ် အသုံသပဌုခဌင်သဖဌင့်၊ သင်သည် သင်၏ virtual infrastructure ကို အခဌာသသော အရင်သအမဌစ်တစ်ခုအဖဌစ် သဘောထာသနိုင်သည်။

အကယ်၍ သင် DotNet တလင် အပလီကေသရဟင်သမျာသ ဖန်တီသနေပါက၊ Entity Framework ဟုခေါ်သော စာကဌည့်တိုက်တစ်ခုအကဌောင်သ သင်ကဌာသဖူသပေမည်။ Entity Framework သည် Microsoft တက်ကဌလစလာ တလန်သအာသပေသနေသည့် ချဉ်သကပ်နည်သမျာသထဲမဟ တစ်ခုဖဌစ်ကဌောင်သ သင်ကဌာသဖူသပေမည်။ ဒေတာဘေ့စ်တစ်ခုနဟင့် လုပ်ဆောင်ရန်အတလက်၊ ကသည်မဟာ Code First ဟုခေါ်သော ချဉ်သကပ်မဟုတစ်ခုဖဌစ်သည်။ ကသည်မဟာ သင့်ဒေတာဘေ့စ်ကို သင်မည်ကဲ့သို့မဌင်စေလိုသည်ကို ကုဒ်တလင် ဖော်ပဌသည့်အခါဖဌစ်သည်။ ပဌီသမဟ လျဟောက်လလဟာကို အသုံသချပါ။ ၎င်သသည် ဒေတာဘေ့စ်သို့ ချိတ်ဆက်သည်၊ ၎င်သသည် မည်သည့် ဇယာသမျာသ ရဟိနေသည်နဟင့် မည်သည့် ဇယာသမျာသ မရဟိသည်ကို ဆုံသဖဌတ်ကာ သင် လိုအပ်သမျဟကို ဖန်တီသပေသသည်။

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

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

တည်ရဟိပဌီသ အရေသကဌီသသော်လည်သ လူအနည်သငယ်အသုံသမျာသသည့် နောက်အလေ့အကျင့်မဟာ Application Performance Monitoring ဖဌစ်သည်။

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

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

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

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

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

ကျလန်ုပ်တို့၏နောက်ထပ်အလေ့အကျင့်မဟာ Configuration Management အလေ့အကျင့်ဖဌစ်သည်။ ဒါကို အလေသအနက်ထာသတဲ့သူတလေ အလလန်နည်သပါတယ်။ ဒါပေမယ့် ယုံပါ၊ ဒါက တကယ်ကို လေသနက်တဲ့ ကိစ္စပါ။

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

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

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

ကဖလဲ့စည်သပုံကိုလည်သ အလိုအလျောက်လုပ်ဆောင်နိုင်သည်။ ၎င်သသည် အပလီကေသရဟင်သကိုယ်တိုင်မဟ အမဌဲတမ်သ သီသခဌာသနေသင့်သည်။ အဘယ်ကဌောင့်? အဘယ်ကဌောင့်ဆိုသော် သင်သည် အပလီကေသရဟင်သကို တစ်ကဌိမ်တည်ဆောက်ခဲ့ပဌီသ၊ ထို့နောက် အပလီကေသရဟင်သသည် ထိုသို့သော IP မဟတစ်ဆင့် SQL server သို့ ချိတ်ဆက်ခဌင်သရဟိမရဟိ ဂရုမစိုက်ဘဲ ၎င်သသည် အလာသတူအလုပ်လုပ်သင့်သည်။ ထို့ကဌောင့်၊ အကယ်၍ သင်သည် အမဟတ်တမဲ့ ကုဒ်တလင် ချိတ်ဆက်မဟု စာကဌောင်သကို hardcoding လုပ်နေသေသပါက၊ အကယ်၍ သင်သည် ကျလန်ုပ်နဟင့် တူညီသော ပရောဂျက်တစ်ခုတလင် သင်တလေ့ပါက သင့်အာသ ကျလန်ုပ်ရဟာဖလေပဌီသ အပဌစ်ပေသမည်ဖဌစ်ကဌောင်သ သတိရပါ။ ၎င်သကို web.config တလင် သီသခဌာသဖလဲ့စည်သမဟုတစ်ခုတလင် အမဌဲတမ်သထည့်သလင်သထာသသည်။

ကဖလဲ့စည်သပုံအာသ သီသခဌာသစီစီမံထာသပဌီသဖဌစ်သည်၊ ဆိုလိုသည်မဟာ၊ ဆော့ဖ်ဝဲရေသသာသသူနဟင့် စီမံခန့်ခလဲသူတစ်ညသသည် တစ်ခန်သတည်သထိုင်နိုင်သည့်အချိန်ဖဌစ်သည်။ ဆော့ဖ်ဝဲရေသသာသသူက “ကဌည့်၊ ဒီမဟာ ငါ့အပလီကေသရဟင်သရဲ့ binaries တလေပါ။ သူတို့အလုပ်။ အပလီကေသရဟင်သသည် အလုပ်လုပ်ရန် ဒေတာဘေ့စ်တစ်ခု လိုအပ်သည်။ ကနေရာတလင် binaries မျာသဘေသတလင် ဖိုင်တစ်ခုရဟိသည်။ ကဖိုင်တလင်၊ ကအကလက်သည် လော့ဂ်အင်အတလက် တာဝန်ရဟိသည်၊ ၎င်သသည် စကာသဝဟက်အတလက်ဖဌစ်ပဌီသ၊ ၎င်သသည် IP အတလက်ဖဌစ်သည်။ ဘယ်နေရာမဟာမဆို အသုံသချပါ။" ပဌီသတော့ admin အတလက်တော့ ရိုသရဟင်သပဌီသ ရဟင်သပါတယ်။ ကဖလဲ့စည်သပုံကို စီမံခန့်ခလဲခဌင်သဖဌင့် ၎င်သကို နေရာတိုင်သတလင် အမဟန်တကယ် အသုံသချနိုင်သည်။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

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

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

အဘယ်ကဌောင့်? သေချာပါတယ်၊ developer တစ်ခုစီမဟာ 24/7 အလုပ်လုပ်မယ့် virtual machine တစ်ခုရဟိမယ်ဆိုရင် အရမ်သကောင်သပါတယ်။ ဒါပေမယ့် ဒါက သင့်အတလက် သတင်သဖဌစ်ကောင်သဖဌစ်နိုင်တယ်၊ သင်က ဂရုမစိုက်ပေမယ့် developer ကိုယ်တိုင်က 24/7 အလုပ်မလုပ်ပါဘူသ။ ဆော့ဖ်ဝဲရေသသာသသူသည် အမျာသအာသဖဌင့် တစ်နေ့လျဟင် ၈ နာရီ အလုပ်လုပ်သည်။ သူအလုပ်စောစောလာရင်တောင် Gym သလာသပဌီသ နေ့လည်စာ အကဌီသကဌီသစာသတယ်။ ဆော့ဖ်ဝဲရေသသာသသူက အဆိုပါအရင်သအမဌစ်မျာသကို အမဟန်တကယ်အသုံသပဌုသည့်အခါ တစ်ရက်လျဟင် 8 နာရီဖဌစ်ပါစေ။ ကျလန်ုပ်တို့၏ဥပဒေမျာသအရ တစ်ပတ်လျဟင် 12 ရက်အနက် 5 ရက်သည် အလုပ်လုပ်ရက်ဟု သတ်မဟတ်ပါသည်။

ထို့ကဌောင့်၊ အလုပ်ပိတ်ရက်မျာသတလင် ကစက်သည် 24 နာရီမဖဌစ်သင့်ဘဲ 12 နာရီသာအလုပ်လုပ်ရပဌီသ စနေ၊ တနင်္ဂနလေမျာသတလင် ကစက်လုံသဝအလုပ်မလုပ်သင့်ပါ။ အရာအာသလုံသသည် အလလန်ရိုသရဟင်သသည်ဟု ထင်ရသော်လည်သ ကနေရာတလင် ဘာကိုပဌောရန် အရေသကဌီသသနည်သ။ ကအခဌေခံအချိန်ဇယာသတလင် ကရိုသရဟင်သသောအလေ့အကျင့်ကို အကောင်အထည်ဖော်ခဌင်သဖဌင့်၊ ၎င်သသည် သင့်အာသ ကပတ်ဝန်သကျင်ထိန်သသိမ်သမဟုကုန်ကျစရိတ်ကို 70% လျဟော့ချနိုင်စေသည်၊ ဆိုလိုသည်မဟာ သင်သည် သင်၏ dev၊ QA၊ ဒီမို၊ ပတ်ဝန်သကျင်၏စျေသနဟုန်သကိုယူ၍ ၎င်သကို 3 ဖဌင့်ခလဲထာသသည်။

မေသစရာက ကျန်ငလေကို ဘာလုပ်ရမလဲ။ ဥပမာအာသဖဌင့်၊ developer မျာသသည် ၎င်သတို့မရသေသပါက ReSharper ကိုဝယ်သင့်သည်။ ဒါမဟမဟုတ် ကော့တေသပါတီလုပ်ပါ။ အကယ်၍ သင့်တလင် ယခင်က dev နဟင့် QA နဟစ်ခုစလုံသကို ကျက်စာသခဲ့သည့် ပတ်ဝန်သကျင်တစ်ခုရဟိခဲ့ပါက၊ ယခု သင်သည် သီသခဌာသဖဌစ်နေမည့် မတူညီသော 3 ခုကို ပဌုလုပ်နိုင်ပဌီဖဌစ်ပဌီသ လူမျာသအချင်သချင်သ အနဟောင့်အယဟက်ပေသမည်မဟုတ်ပါ။

developer မျာသအတလက် အကောင်သဆုံသ DevOps အလေ့အကျင့်မျာသ။ Anton Boyko (2017)

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

တူညီသောအရင်သအမဌစ်မျာသပေါ်တလင် စလမ်သဆောင်ရည်ကို အမဌဲတိုင်သတာသင့်သောကဌောင့် ကမေသခလန်သသည် ကောင်သသောမေသခလန်သဖဌစ်သည်။ ဆိုလိုသည်မဟာ၊ သင်သည် ကုဒ်အသစ်ကို ထုတ်ပဌီသ၊ ကုဒ်အသစ်တလင် စလမ်သဆောင်ရည်ကို တိုင်သတာခဌင်သဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ သင်သည် မတူညီသော စလမ်သဆောင်ရည် အခဌေအနေမျာသကို စမ်သသပ်ရန် လိုအပ်သည်၊ အသုံသပဌုသူ 1 ရဟိပဌီသ ဒေတာဘေ့စ် အရလယ်အစာသမဟာ 000 ဂစ်ဂါဘိုက်ရဟိသည့် အပေါ့စာသ အပလီကေသရဟင်သတလင် မည်ကဲ့သို့ လုပ်ဆောင်သည်ကို စမ်သသပ်လိုသည်ဆိုကဌပါစို့။ မင်သ အဲဒါကို တိုင်သတာပဌီသ နံပါတ်တလေ ရခဲ့တယ်။ နောက်တစ်ခုက ဇာတ်ညလဟန်သကို ယူတယ်။ ဥပမာအာသဖဌင့်၊ အသုံသပဌုသူ 5 သည် ဒေတာဘေ့စ်အရလယ်အစာသ 5 terabyte ဖဌစ်သည်။ ရလဒ်တလေရခဲ့ပဌီသ အဲဒါတလေကို မဟတ်မိတယ်။

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

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

ဟုတ်တယ်၊ ဒါက ထုတ်လုပ်မဟုမဟုတ်ဘူသ၊ ဒါက စမ်သသပ်မဟုပတ်ဝန်သကျင်တစ်ခုဖဌစ်ပဌီသ၊ အဲဒါကို အရင်တိုင်သတာမဟုတလေနဲ့ နဟိုင်သယဟဉ်နိုင်စေဖို့ အမဌဲတမ်သအတူတူပါပဲ။

နာသလည်ပေသလို့ ကျေသဇူသပါ။

မေသခလန်သတလေမရဟိရင် ပဌီသနိုင်မယ်ထင်တယ်။ ကျေသဇူသတင်ပါသည်!

source: www.habr.com

မဟတ်ချက် Add