Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

CI ကိရိယာများနှင့် CI သည် အဘယ်ကြောင့် လုံးဝခြားနားသည်ကို ဆွေးနွေးကြည့်ရအောင်။

CI သည် မည်သည့်နာကျင်မှုအချက်ကို ဖြေရှင်းရန် ရည်ရွယ်သနည်း၊ အိုင်ဒီယာက ဘယ်ကလာသလဲ၊ ၎င်းသည် အလုပ်လုပ်ကြောင်း နောက်ဆုံးအတည်ပြုချက်များက အဘယ်နည်း၊ သင့်တွင် ထည့်သွင်းထားသည့် Jenkins မျှသာမဟုတ်ဘဲ တကယ့်လက်တွေ့ကို သင်မည်သို့သိနိုင်သနည်း။

Continuous Integration အကြောင်းပြောဖို့ စိတ်ကူးက လွန်ခဲ့တဲ့ တစ်နှစ်က အလုပ်တစ်ခုအတွက် အင်တာဗျူးတုန်းက ကျွန်တော့်ဆီ ရောက်လာတယ်။ ကျွန်တော် ကုမ္ပဏီ 10-15 ခုနဲ့ စကားပြောခဲ့ပြီး သူတို့ထဲက တစ်ဦးတည်းက CI ဆိုတာ ဘာလဲဆိုတာ ရှင်းရှင်းလင်းလင်း ရှင်းပြနိုင်ခဲ့ပြီး သူတို့မှာ မရှိဘူးဆိုတာကို သူတို့ ဘယ်လိုနားလည်ခဲ့လဲ။ ကျန်သူများသည် Jenkins အကြောင်းကို အဓိပ္ပါယ်မဲ့ ဆဲဆိုကြသည်။ 🙂 ကောင်းပြီ၊ ကျွန်ုပ်တို့တွင် Jenkins ရှိသည်၊ ၎င်းသည် CI တည်ဆောက်သည်။ ဒီဟောပြောချက်မှာ၊ Continuous Integration အမှန်တကယ်က ဘာလဲ၊ Jenkins နဲ့ အလားတူကိရိယာတွေက ဘာကြောင့် အဲဒီ့ချိတ်ဆက်မှုအားနည်းရတာလဲဆိုတာကို ရှင်းပြဖို့ ကြိုးစားပါမယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ဒီတော့ CI ဆိုတဲ့ စကားလုံးကို ကြားတဲ့အခါ ဘာကို သတိရမိလဲ။ လူအများစုက Jenkins၊ Gitlab CI၊ Travis စသည်တို့ကို အထင်ကြီးကြသည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ကျွန်တော်တို့က Google ဆိုရင်တောင် ဒီကိရိယာတွေကို ပေးပါလိမ့်မယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

သင်သိသောလူများကို သင်မေးပါက၊ ကိရိယာများကို စာရင်းပြုစုပြီးပါက၊ သင်၏ Pull Request က တည်ဆောက်ပြီး စမ်းသပ်မှုများ လုပ်ဆောင်သည့်အခါ CI ဖြစ်သည်ဟု ၎င်းတို့က သင့်အား ပြောပြလိမ့်မည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်းသည် ဌာနခွဲတစ်ခုတွင် စမ်းသပ်မှုများဖြင့် ကိရိယာများ သို့မဟုတ် တည်ဆောက်မှုများအကြောင်း မဟုတ်ပါ။ Continuous Integration သည် ကုဒ်အသစ်၏ မကြာခဏ ပေါင်းစည်းခြင်း၏ အလေ့အကျင့်ဖြစ်ပြီး Jenkins၊ GitLab သို့မဟုတ် အခြားအရာများ မလိုအပ်ပါ။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ပြီးပြည့်စုံသော CI ၏ပုံပန်းသဏ္ဍာန်ကို ကျွန်ုပ်တို့မနားလည်မီ၊ ၎င်းနှင့်ပတ်သက်ပြီး ပေါ်ပေါက်လာသူများ၏ အခြေအနေကို ဦးစွာ စေ့စေ့တွေးပြီး ဖြေရှင်းရန် ကြိုးစားနေသော ဝေဒနာကို နားလည်ကြပါစို့။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

အဖွဲ့လိုက် လက်တွဲလုပ်ရတဲ့ နာကျင်မှုကို သူတို့ ဖြေရှင်းပေးတယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

အဖွဲ့များဖွဲ့စည်းရာတွင် developer များရင်ဆိုင်ရမည့် စိန်ခေါ်မှုများ ဥပမာအချို့ကို ကြည့်ကြပါစို့။ ကျွန်ုပ်တို့တွင် ပရောဂျက်တစ်ခု၊ Git တွင် မာစတာဌာနခွဲတစ်ခုနှင့် developer နှစ်ဦးရှိသည်ဆိုကြပါစို့။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ထို့ကြောင့် သူတို့သည် အမြဲတမ်း လုပ်နေကျအတိုင်း အလုပ်သွားကြသည်။ သူတို့သည် Zhir တွင် အလုပ်တစ်ခုယူကာ အင်္ဂါရပ်ဌာနခွဲတစ်ခုကို ဖန်တီးကာ ကုဒ်ကို စတင်ရေးသားခဲ့သည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

တစ်ခုက အင်္ဂါရပ်ကို ပိုမြန်စေပြီး ၎င်းကို မာစတာသို့ ပေါင်းထည့်လိုက်သည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ဒုတိယ developer သည် အချိန်ပိုကြာသည်၊ နောက်ပိုင်းတွင် ရောက်လာပြီး ပဋိပက္ခဖြစ်ခဲ့သည်။ ယခု၊ စီးပွားရေးလုပ်ငန်းလိုအပ်ချက်ကို အသွင်ဆောင်မည့်အစား၊ ဆော့ဖ်ဝဲအင်ဂျင်နီယာသည် ပဋိပက္ခများကို ဖြေရှင်းရာတွင် ၎င်းတို့၏အချိန်နှင့် စွမ်းအင်ကို အသုံးပြုသည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

သင်၏အင်္ဂါရပ်ကို မျှဝေထားသောမာစတာနှင့် ပေါင်းစည်းရန် ပို၍ခက်ခဲလေလေ၊ ၎င်းတွင် ကျွန်ုပ်တို့ အချိန်ပိုကြာလေဖြစ်သည်။ ပြီးတော့ ကျွန်တော် ရိုးရိုးရှင်းရှင်း ဥပမာတစ်ခု ပေးခဲ့တယ်။ ဤသည်မှာ developer နှစ်ဦးသာရှိသော ဥပမာတစ်ခုဖြစ်သည်။ သို့သော် ကုမ္ပဏီရှိ လူ ၁၀၊ ၁၅၊ သို့မဟုတ် ၁၀၀ တို့သည် တူညီသော သိုလှောင်ရုံသို့ စာရေးနေလျှင် စိတ်ကူးကြည့်ပါ။ ဒီပဋိပက္ခတွေအားလုံးကို ဖြေရှင်းရတာ ရူးသွပ်သွားလိမ့်မယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ဒါကတော့ အနည်းငယ်ကွဲပြားတဲ့ ကိစ္စတစ်ခုပါ။ ကျွန်ုပ်တို့တွင် တစ်ခုခုကို လုပ်ဆောင်နေသော မာစတာနှင့် ဆော့ဖ်ဝဲရေးသားသူ များစွာရှိသည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

အကိုင်းအခက်တစ်ခုစီကို ဖန်တီးခဲ့ကြတယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

သူတို့ထဲက တစ်ယောက်က ဒေါသထွက်ပြီး အရာအားလုံး အဆင်ပြေသွားတော့ သူ အလုပ်ပြီးသွားတယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ဤအတောအတွင်း၊ ဒုတိယ developer သည် ၎င်းတို့၏တာဝန်ကို တင်ပြခဲ့သည်။ ၎င်းတို့က ၎င်းကို ပြန်လည်သုံးသပ်ရန် တင်သွင်းခဲ့သည်ဟု ဆိုကြပါစို့။ ကုမ္ပဏီများစွာတွင် ပြန်လည်သုံးသပ်ခြင်းဟုခေါ်သော အလေ့အကျင့်တစ်ခုရှိသည်။ တစ်ဖက်တွင်၊ ဤအလေ့အကျင့်သည် ကောင်းမွန်ပြီး အသုံးဝင်သော်လည်း အခြားတစ်ဖက်တွင်၊ ၎င်းသည် ကျွန်ုပ်တို့အား မကြာခဏ နှေးကွေးစေသည်။ အသေးစိတ်ကို ကျွန်ုပ်တို့ မပြောပါ၊ သို့သော် ဤသည်မှာ ဆိုးရွားသော ပြန်လည်သုံးသပ်ခြင်းလုပ်ငန်းစဉ်ကို ဦးတည်စေသည့် ဥပမာကောင်းတစ်ခုဖြစ်သည်။ ပြန်လည်သုံးသပ်ရန်အတွက် ဆွဲထုတ်ရန် တောင်းဆိုချက်ကို သင် တင်သွင်းခဲ့သည်။ developer တွင် အခြားလုပ်စရာမရှိပါ။ သူတို့ဘာလုပ်ကြမလဲ။ သူတို့က တခြားအလုပ်တွေကို စလုပ်တယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ဤအတောအတွင်း၊ ဒုတိယ developer သည် အခြားအရာတစ်ခုကို ပြုလုပ်ခဲ့သည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ပထမတစ်ခုက တတိယတာဝန်ကို ပြီးမြောက်ခဲ့တယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

အချိန်အတန်ကြာပြီးနောက်၊ သူ၏ပြန်လည်သုံးသပ်မှုကို စမ်းသပ်ပြီး ပေါင်းစည်းရန် ကြိုးစားသည်။ အဘယ့်ကြောင့်နည်း။ ပဋိပက္ခများစွာကို သူကြုံတွေ့ရသည်။ ဘာကြောင့်လဲ? ၎င်း၏ဆွဲတင်တောင်းဆိုမှုကို ပြန်လည်သုံးသပ်နေချိန်တွင်၊ ကုဒ်တွင် များစွာပြောင်းလဲနေပြီဖြစ်သည်။

ပဋိပက္ခတွေအပြင် ဆက်သွယ်ရေးပြဿနာလည်း ရှိသေးတယ်။ သင့်ဌာနခွဲသည် ပြန်လည်သုံးသပ်ခြင်းကို ဆိုင်းငံ့ထားစဉ်၊ တစ်ခုခုဖြစ်မလာစေရန် စောင့်ဆိုင်းနေချိန်တွင်၊ အင်္ဂါရပ်တစ်ခုနှင့် သင်လုပ်ဆောင်နေချိန်တွင်၊ သင့်ဝန်ဆောင်မှု၏ကုဒ်ဘေ့စ်တွင် အခြားအရာများ ပြောင်းလဲနေသည်များကို ခြေရာခံမိမည်ဖြစ်သည်။ သင်ဖြေရှင်းရန်ကြိုးစားနေသည်မှာ မနေ့က ဖြေရှင်းပြီးသားဖြစ်ကောင်းဖြစ်နိုင်သည်၊ အချို့သောနည်းလမ်းကို ပြန်လည်အသုံးပြုနိုင်ပါသည်။ ဒါပေမယ့် သင်ဟာ ခေတ်မမီတော့တဲ့ ဌာနခွဲတစ်ခုနဲ့ အမြဲအလုပ်လုပ်နေတာကြောင့် အဲဒါကို သင်မမြင်ရပါဘူး။ ပြီးတော့ ဒီခေတ်မမီတော့တဲ့ဌာနခွဲက ပေါင်းစည်းပဋိပက္ခကို ဖြေရှင်းဖို့ သင့်ကို အမြဲဦးဆောင်ပေးတယ်။

အကယ်၍ ကျွန်ုပ်တို့သည် အဖွဲ့တစ်ဖွဲ့အဖြစ် အလုပ်လုပ်နေပါက၊ သိုလှောင်ရုံတွင် လူတစ်ဦးတည်းသာ မဟုတ်ဘဲ လူ 5-10 ဦးမျှသာ ရှိသည်ဟု ဆိုလိုသည်မှာ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ကုဒ်ကို မာစတာသို့ ထည့်ရန် ကြာကြာစောင့်လေလေ၊ ကျွန်ုပ်တို့သည် နောက်ဆုံးတွင် တစ်စုံတစ်ခုကို ပေါင်းစည်းရမည်ဟူသော အချက်ကို ပို၍ ခံစားရလေလေဖြစ်သည်။ ကျွန်ုပ်တို့တွင် ပဋိပက္ခများ များလေလေ၊ ကျွန်ုပ်တို့ လုပ်ဆောင်နေသော ဗားရှင်း အဟောင်းလေလေ၊ ကျွန်ုပ်တို့တွင် ပြဿနာများ ပိုများလေလေဖြစ်သည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ဘယ်အရာမဆို အတူတူလုပ်ရင် နာကျင်တယ်။ ငါတို့က အမြဲတမ်း တစ်ယောက်နဲ့တစ်ယောက် လိုက်နေတယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ဒီပြဿနာကို လွန်ခဲ့တဲ့ နှစ် 20 ကျော်က ပထမဆုံး အသိအမှတ်ပြုခဲ့ပါတယ်။ Extreme Programming တွင် Continuous Integration ၏ အလေ့အကျင့်ကို ကျွန်တော် ပထမဆုံးတွေ့ဖူးသည်။

Extreme Programming သည် ပထမဆုံး လျင်မြန်သော မူဘောင်ဖြစ်သည်။ ဝဘ်ဆိုက်ကို ၁၉၉၆ ခုနှစ်တွင် ပေါ်ပေါက်ခဲ့သည်။ အကြံဉာဏ်သည် ဖွံ့ဖြိုးတိုးတက်မှုအား တတ်နိုင်သမျှ လိုက်လျောညီထွေဖြစ်အောင် ပြုလုပ်ရန် အချို့သော ပရိုဂရမ်ရေးဆွဲခြင်း၊ အစီအစဉ်ဆွဲခြင်းနှင့် အခြားအလေ့အကျင့်များကို အသုံးပြုရန် ဖြစ်သောကြောင့် အပြောင်းအလဲများနှင့် ဖောက်သည်များ၏ လိုအပ်ချက်များကို ကျွန်ုပ်တို့ ပိုမိုလျင်မြန်စွာ တုံ့ပြန်နိုင်မည်ဖြစ်သည်။ လွန်ခဲ့သည့် 24 နှစ်က၊ သင်သည် တစ်စုံတစ်ခုကို အချိန်အကြာကြီး လုပ်ပြီး သီးခြားအကြောင်းအရာတစ်ခုတွင် ပဋိပက္ခများရှိနေသောကြောင့် ၎င်းတွင် အချိန်ပိုပေးသည်ဟူသောအချက်ကို စတင်ကြုံတွေ့လာရသည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ယခု ကျွန်ုပ်တို့သည် "Continuous Integration" ဟူသော စကားစုကို စကားလုံးဖြင့် ခွဲခြမ်းလိုက်ပါမည်။ တိုက်ရိုက်ဘာသာပြန်ဆိုရာတွင် စဉ်ဆက်မပြတ်ပေါင်းစည်းခြင်းကို ဆိုလိုသည်။ သို့သော် မည်မျှ ဆက်တိုက်ဖြစ်မည်ကိုမူ ရှင်းရှင်းလင်းလင်း မသိရပေ။ တကယ်တော့ အတော်လေး ပြတ်တောက်နေပါတယ်။ မည်မျှ ပေါင်းစည်းမည်ဆိုသည်ကိုလည်း ရှင်းရှင်းလင်းလင်း မသိရပေ။

ဒါကြောင့် အခုမင်းကို Extreme Programming ကနေ ကိုးကားနေပါတယ်။ ပြီးတော့ စကားလုံးနှစ်ခုလုံးကို သီးခြားစီ စစ်ဆေးမယ်။

ပေါင်းစည်းခြင်း — ငါပြောပြီးသည်နှင့်အမျှ၊ အင်ဂျင်နီယာတိုင်းသည် ကုဒ်၏လက်ရှိဗားရှင်းနှင့် အလုပ်လုပ်နေကြောင်း သေချာစေရန်နှင့် ၎င်းတို့သည် ၎င်းတို့၏ကုဒ်များကို မျှဝေထားသောဌာနခွဲသို့ မကြာခဏဆိုသလို တတ်နိုင်သမျှ ပံ့ပိုးပေးနိုင်ရန် ကြိုးပမ်းကြသည်။ အဘယ်ကြောင့်ဆိုသော် ၎င်းတို့သည် ကြီးမားပါက၊ ကျွန်ုပ်တို့သည် ပဋိပက္ခများ ပေါင်းစည်းခြင်းဖြင့် တစ်ပတ်ကြာ အလွယ်တကူ ရုန်းထွက်နိုင်သောကြောင့် ဖြစ်သည်။ ဆော့ဖ်ဝဲအင်ဂျင်နီယာတစ်ဦးသည် ကြီးမားသောအင်္ဂါရပ်အချို့ကို တစ်လကြာအောင် လုပ်ဆောင်နေသည့် ရေတံခွန်ကဲ့သို့ ရှည်လျားသော ဖွံ့ဖြိုးတိုးတက်မှုစက်ဝန်းတစ်ခုရှိလျှင် ၎င်းသည် အထူးသဖြင့် မှန်ပါသည်။ ပြီးတော့ သူတို့ဟာ ပေါင်းစည်းရေးအဆင့်မှာ အချိန်အတော်ကြာအောင် ပိတ်မိနေလိမ့်မယ်။

ပေါင်းစည်းခြင်းသည် ကျွန်ုပ်တို့၏ဌာနခွဲကိုယူ၍ မာစတာနှင့်ပေါင်းစည်းပြီး ၎င်းကို ပေါင်းစည်းလိုက်သောအခါတွင် ပေါင်းစည်းခြင်းဖြစ်ပါသည်။ ကျွန်ုပ်တို့သည် အပိုအကိုင်းအခက်များမပါဘဲ မာစတာထံ တိုက်ရိုက်စာရေးရန် ကြိုးစားသည့် transbase developer များဖြစ်သည့် အဆုံးစွန်သော ရွေးချယ်မှုတစ်ခုရှိသည်။

ယေဘူယျအားဖြင့်၊ ပေါင်းစည်းခြင်းဆိုသည်မှာ သင်၏ကုဒ်ကိုယူ၍ မာစတာထဲသို့ ဆွဲယူခြင်းပင်ဖြစ်သည်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ဤနေရာတွင် "စဉ်ဆက်မပြတ်" ဟူသည် အဘယ်နည်း။ တည်ကြည်ခြင်းဟူသည် အဘယ်နည်း။ လက်တွေ့တွင်၊ developer သည် ၎င်းတို့၏ကုဒ်ကို တတ်နိုင်သမျှ မြန်မြန်ပေါင်းစပ်ရန် ကြိုးစားသည်ဟု ဆိုလိုသည်။ အလုပ်တစ်ခုခုကို ပြီးမြောက်သောအခါ ဤအရာသည် ၎င်းတို့၏ ကုဒ်ကို တတ်နိုင်သမျှ ကျွမ်းကျင်အောင် ပြုလုပ်ရန် ဖြစ်သည်။ စံပြကမ္ဘာတွင်၊ developer များသည် ၎င်းကို နာရီအနည်းငယ်တိုင်း ပြုလုပ်ကြသည်။ ထို့ကြောင့် သင်သည် အလုပ်ငယ်တစ်ခုကိုယူပြီး ၎င်းကို မာစတာအဖြစ် ပေါင်းလိုက်ပါ။ အရာအားလုံးက အရမ်းကောင်းတယ်။ ဤသည်မှာ သင်ကြိုးစားနေသောအရာဖြစ်သည်။ ပြီးတော့ ဒါကို ဆက်တိုက်လုပ်ရမယ်။ တစ်ခုခုလုပ်ပြီးတာနဲ့ ချက်ချင်းပဲ သခင်အဖြစ် တွန်းပို့လိုက်ပါ။

ပြီးတော့ တစ်ခုခုကို ဖန်တီးတဲ့ developer က တစ်ခုခုကို ပျက်မသွားအောင် သေချာအောင်လုပ်ဖို့ တာဝန်ရှိတယ်။ ဤနေရာတွင် စမ်းသပ်မှုပြဿနာသည် များသောအားဖြင့် ပါဝင်လာပါသည်။ ၎င်းသည် အလုပ်လုပ်ကြောင်းသေချာစေရန် ကျွန်ုပ်တို့၏ ကတိကဝတ်ပြုမှုတွင် ကျွန်ုပ်တို့၏ပေါင်းစပ်မှုတွင် စမ်းသပ်မှုအချို့ကို လုပ်ဆောင်လိုပါသည်။ ပြီးတော့ ဒါက Jenkins ကူညီပေးနိုင်တဲ့နေရာပါ။

သို့သော် ဇာတ်လမ်းများဖြင့်- အပြောင်းအလဲများကို သေးသေးလေးထားလိုက်ရအောင်၊ အလုပ်များကို သေးသေးလေးထားလိုက်ကြရအောင်၊ အလုပ်တစ်ခုကို ဖန်တီးပြီး ၎င်းကို သခင်အဖြစ် ချက်ချင်းပေါင်းစည်းလိုက်ရအောင်—Jenkins သည် ဤနေရာတွင် ကူညီမည်မဟုတ်ပါ။ အဘယ်ကြောင့်ဆိုသော် Jenkins သည် သင့်အား စမ်းသပ်မှုများကို လုပ်ဆောင်ရန်သာ ကူညီပေးသောကြောင့်ဖြစ်သည်။

သူတို့မပါဘဲ သင်လုပ်နိုင်တယ်။ သင့်အား လုံးဝအနှောက်အယှက်ပေးမည်မဟုတ်ပါ။ အလေ့အကျင့်၏ရည်ရွယ်ချက်မှာ အနာဂတ်တွင် ပဋိပက္ခများပေါ်တွင် အချိန်များစွာကို မဖြုန်းတီးမိစေရန် တတ်နိုင်သမျှ မကြာခဏ ပေါင်းစည်းရန်ဖြစ်သည်။

2020 လို့ စိတ်ကူးကြည့်ရအောင်၊ အကြောင်းတစ်ခုခုကြောင့် အင်တာနက် မရှိတော့ပါ။ ပြီးတော့ ကျွန်တော်တို့က ပြည်တွင်းမှာ အလုပ်လုပ်နေတယ်။ ကျွန်ုပ်တို့တွင် Jenkins မရှိပါ။ ဒါပါပဲ။ ဒေသခံဌာနခွဲတစ်ခုကို သင်ဖန်တီးနိုင်ပါသေးသည်။ အဲဒီထဲမှာ ကုဒ်တစ်ချို့ရေးတယ်။ သင် 3-4 နာရီအတွင်းအလုပ်ပြီးအောင်လုပ်ပါ။ မာစတာသို့ပြောင်းပါ၊ git ဆွဲကာ သင်၏အကိုင်းအခက်ကို ပေါင်းစည်းပါ။ ပြီးပြီ။ ဒါကို မကြာခဏလုပ်ရင် ဂုဏ်ယူပါတယ်၊ မင်းမှာ စဉ်ဆက်မပြတ် ပေါင်းစည်းမှုရှိတယ်။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ယင်းသည် ကြိုးစားရကျိုးနပ်ကြောင်း ခေတ်သစ်ကမ္ဘာတွင် အဘယ်အထောက်အထားများရှိသနည်း။ ယေဘူယျအားဖြင့် ခက်ခဲသောကြောင့်ဖြစ်သည်။ သင်ဤကဲ့သို့လုပ်ဆောင်ရန်ကြိုးစားပါက၊ သင်၏စီစဉ်မှုအချို့ကို ထိခိုက်နိုင်သည်ကို သင်သဘောပေါက်ပြီး အလုပ်များကို ပြိုကွဲအောင်အချိန်ပိုပေးရမည်ဖြစ်သည်။ ဘာဖြစ်လို့လဲဆိုတော့ မင်းလူကိုလုပ်ရင် မင်း မြန်မြန်ပေါင်းစည်းနိုင်မှာ မဟုတ်ဘူး၊ အကျိုးဆက်က မင်းဒုက္ခရောက်လိမ့်မယ်။ အလေ့အကျင့်ပျက်မယ်။

ပြီးတော့ ဈေးကြီးလိမ့်မယ်။ နက်ဖြန်မှစပြီး ဆက်တိုက်ပေါင်းစည်းမှုဖြင့် လုပ်ဆောင်ခြင်းသည် အလုပ်မဖြစ်ပါ။ လူတိုင်းအလေ့အကျင့်ရရန် အချိန်ကြာမြင့်မည်ဖြစ်ပြီး၊ အလုပ်များကို ပြိုကွဲအောင်လေ့လာရန် အချိန်ကြာမြင့်မည်ဖြစ်ပြီး၊ သင့်တွင်တစ်ခုရှိပါက သင်၏ပြန်လည်သုံးသပ်ခြင်းအလေ့အကျင့်များကို ပြန်လည်လုပ်ဆောင်ရန် သင်ယူရန် အချိန်ကြာမြင့်မည်ဖြစ်သည်။ ဘာကြောင့်လဲ ဆိုတော့ ကျွန်တော်တို့ရဲ့ ရည်မှန်းချက်က ဒီနေ့ ပေါင်းစည်းဖို့ပါ။ သုံးရက်တာကာလအတွင်း ပြန်လည်သုံးသပ်မှုများကို သင်လုပ်ဆောင်နေပါက သင်သည် ပြဿနာဖြစ်နေပြီး ဆက်တိုက်ပေါင်းစည်းခြင်းသည် သင့်အတွက် အလုပ်မဖြစ်ပါ။

သို့သော် ဤအလေ့အကျင့်တွင် ရင်းနှီးမြုပ်နှံရန် အဓိပ္ပာယ်ရှိကြောင်း ကျွန်ုပ်တို့အား ပြောပြသည့် ယခုလက်ရှိ အထောက်အထားများ ရှိပါသလား။

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ပထမဆုံးသတိရမိသည်မှာ DevOps ၏အခြေအနေဖြစ်သည်။ ဒီလေ့လာမှုဟာ အခုဆို ယောက်ျားလေးတွေ လုပ်နေတာ ခုနစ်နှစ်ရှိပြီ။ ၎င်းတို့သည် လက်ရှိတွင် ၎င်းကို သီးခြားအဖွဲ့အစည်းတစ်ခုအနေဖြင့် လုပ်ဆောင်နေသော်လည်း Google အောက်တွင် ရှိနေသည်။

သူတို့ရဲ့ 2018 လေ့လာမှုမှာ မြန်မြန်ဆန်ဆန်နဲ့ မကြာခဏ ပေါင်းစပ်ထားတဲ့ သက်တမ်းတိုအကိုင်းအခက်တွေကို သုံးဖို့ ကြိုးစားတဲ့ ကုမ္ပဏီတွေကြား ဆက်စပ်မှုကို ပြသခဲ့ပြီး သူတို့မှာ ပိုမိုကောင်းမွန်တဲ့ IT စွမ်းဆောင်ရည် မက်ထရစ်တွေ ရှိပါတယ်။

ဤအညွှန်းကိန်းများသည် အဘယ်နည်း။ ၎င်းတို့သည် ၎င်းတို့၏ စစ်တမ်းများတွင် ကုမ္ပဏီအားလုံးမှ စုဆောင်းထားသော မက်ထရစ်လေးခုဖြစ်သည်- ဖြန့်ကျက်မှု အကြိမ်ရေ၊ အပြောင်းအလဲအတွက် ပို့ဆောင်ချိန်၊ ဝန်ဆောင်မှု ပြန်လည်ရယူရန် အချိန်နှင့် ပျက်ကွက်မှုနှုန်း ပြောင်းလဲခြင်း တို့ဖြစ်သည်။

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

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

ဒုတိယဇာတ်လမ်းက လွန်ခဲ့တဲ့ တစ်လလောက်က ဖြစ်ခဲ့တာပါ။ Technology Radar သည် Gitflow နှင့်ပတ်သက်သော အံ့သြဖွယ်ဆောင်းပါးတစ်ပုဒ်ကို ထုတ်ဝေခဲ့သည်။ Gitflow သည် ၎င်း၏အကိုင်းအခက်များ တာရှည်ခံသောကြောင့် အခြားသူများနှင့် မတူပါ။ ကြာရှည်ခံသော အကိုင်းအခက်များ ရှိပြီး ကြာရှည်ခံသော အကိုင်းအခက်များ ရှိပါသည်။ Technology Radar တွင် ဤအလေ့အကျင့်သည် HOLD သို့ ပြောင်းသွားပါသည်။ ဘာကြောင့်လဲ? အဘယ်ကြောင့်ဆိုသော် လူတို့သည် ပေါင်းစည်းခြင်းဝေဒနာကို ခံစားနေကြရသောကြောင့် ဖြစ်သည်။

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

မကြာသေးမီက Gitflow ၏စာရေးဆရာက သင်သည် Continuous Integration ကိုရည်မှန်းပါက၊ တတ်နိုင်သမျှ မကြာခဏထွက်လိုပါက Gitflow သည် မကောင်းသောအကြံအစည်တစ်ခုဖြစ်သည်။ အကယ်၍ သင့်တွင် ယင်းအတွက် ကြိုးပမ်းနိုင်သည့် backend တစ်ခုရှိပါက Gitflow သည် သင့်အတွက် မလိုအပ်ဘဲ၊ Gitflow သည် သင့်အား နှေးကွေးစေပြီး ပေါင်းစည်းမှုဆိုင်ရာ ပြဿနာများကို ဖန်တီးပေးမည်ဖြစ်သောကြောင့် သီးခြားဆောင်းပါးတစ်ခုတွင် ၎င်းက ထပ်လောင်းပြောကြားခဲ့သည်။

၎င်းသည် Gitflow မကောင်း၍ အသုံးမပြုသင့်ဟု မဆိုလိုပါ။ တခြားအခြေအနေတွေအတွက် ပိုသင့်တော်ပါတယ်။ ဥပမာအားဖြင့်၊ သင်သည် ဝန်ဆောင်မှု သို့မဟုတ် အက်ပ်လီကေးရှင်းတစ်ခု၏ ဗားရှင်းအများအပြားကို ထိန်းသိမ်းထားရန် လိုအပ်သည့်အခါ၊ ဆိုလိုသည်မှာ အချိန်ကာလတစ်ခုအထိ ပံ့ပိုးမှုပေးရန် လိုအပ်သည့်အခါ။

ဒါပေမယ့် ဒီဝန်ဆောင်မှုတွေကို ပံ့ပိုးပေးတဲ့သူတွေနဲ့ စကားပြောရင်၊ ဒီဗားရှင်း 3.2 ကို လွန်ခဲ့တဲ့ လေးလက ဖြန့်ချိခဲ့ပုံနဲ့ ပတ်သက်ပြီး နာကျင်စရာတွေ အများကြီးကြားရပြီး ဒီပြင်ဆင်ချက်လည်း မပါဝင်တာကြောင့် အခု အကောင်အထည်ဖော်ဖို့အတွက် အပြောင်းအလဲတွေ အများကြီးလုပ်ဖို့ လိုပါတယ်။ ထို့ကြောင့်၊ ၎င်းတို့သည် တစ်ဖန်ပြန်ပိတ်သွားပြီး အင်္ဂါရပ်အသစ်အချို့ကို ပေါင်းစည်းရန် ကြိုးစားနေကြသည်မှာ တစ်ပတ်ကြာနေပါသည်။

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

Jenkins မဟုတ်ဘဲ အလေ့အကျင့်တစ်ခုအဖြစ် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း။ Andrey Alexandrov

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

Jez Humble သည် လက်စွဲစာအုပ်၊ Accelerate၊ ဝဘ်ဆိုက် စဉ်ဆက်မပြတ် ပေးပို့ခြင်းနှင့် "စဉ်ဆက်မပြတ် ပေးပို့ခြင်း" စာအုပ်ကို ရေးသားသူဖြစ်သည်။ သူက ဒီစမ်းသပ်မှုကို အကြံပြုပါတယ်။

  • အင်ဂျင်နီယာ၏ကုဒ်ကို သခင်ထံ နေ့စဉ် ပေးပို့သည်။
  • ကတိပြုမှုတိုင်းအတွက်၊ သင်သည် ယူနစ်စစ်ဆေးမှုများကို လုပ်ဆောင်သည်။
  • အဆောက်အဦသည် မာစတာတွင် ပျက်ကျပြီး ၁၀ မိနစ်ခန့်တွင် ပြုပြင်နိုင်ခဲ့သည်။

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

နောက်ဆုံးအပိုင်းကတော့ နည်းနည်းအငြင်းပွားစရာလို့ထင်ပါတယ်။ ထို့ကြောင့်၊ သင်သည် 10 မိနစ်အတွင်း တစ်ခုခုကို ပြုပြင်နိုင်ပါက၊ သင်သည် Continuous Integration ကို ဆိုလိုသည်။ ကျွန်တော့်အမြင်အရတော့ နည်းနည်းထူးဆန်းတယ်လို့ထင်ရပေမယ့် အဓိပ္ပါယ်ရှိပါတယ်။ ဘာကြောင့်လဲ? အဘယ်ကြောင့်ဆိုသော် သင်သည် မကြာခဏ ပေါင်းစည်းပါက သင်၏ပြောင်းလဲမှုများသည် သေးငယ်သည်ဟု ဆိုလိုသည်။ သေးငယ်သောပြောင်းလဲမှုသည် ပျက်စီးနေသော master build သို့ ဦးတည်သွားပါက၊ ပြောင်းလဲမှုသည် သေးငယ်သောကြောင့် နမူနာတစ်ခုကို လျင်မြန်စွာ ရှာဖွေနိုင်မည်ဖြစ်ပါသည်။ ဥပမာအားဖြင့်၊ သင့်တွင် သေးငယ်သော ပေါင်းစည်းမှုတစ်ခုရှိခဲ့ပြီး လိုင်း 20-30 ကို ပြောင်းလဲခဲ့သည်။ ထို့ကြောင့်၊ အပြောင်းအလဲများသည် သေးငယ်ပြီး သင်၏ပြဿနာရှာဖွေမှုဧရိယာသည် အလွန်သေးငယ်သောကြောင့် အကြောင်းရင်းကို လျင်မြန်စွာ နားလည်နိုင်သည်။

ထုတ်ဝေပြီးသည့်နောက် ကျွန်ုပ်တို့၏ထုတ်လုပ်မှုစနစ် ကွဲထွက်သွားသော်လည်း၊ ကျွန်ုပ်တို့တွင် စဉ်ဆက်မပြတ်ပေါင်းစည်းမှုအလေ့အကျင့်ရှိပါက၊ အပြောင်းအလဲများသည် သေးငယ်သောကြောင့် လုပ်ဆောင်ရန် ကျွန်ုပ်တို့အတွက် ပိုမိုလွယ်ကူပါသည်။ ဟုတ်တယ်၊ ဒါက စီစဉ်မှုအပေါ် သက်ရောက်မှုရှိလိမ့်မယ်။ နာကျင်လိမ့်မယ်။ ထို့အပြင် ဤအလေ့အကျင့်၏ အခက်ခဲဆုံးအပိုင်းသည် အလုပ်များကို ခွဲခြမ်းရန်အတွက် အသုံးပြုနေရခြင်း ဖြစ်ကောင်းဖြစ်နိုင်သည်- ဆိုလိုသည်မှာ တစ်စုံတစ်ခုကို မည်သို့ယူ၍ ၎င်းကို နာရီအနည်းငယ်အတွင်း ပြီးမြောက်စေကာ သင့်တွင်တစ်ခုရှိပါက ပြန်လည်သုံးသပ်မှုကို ဆက်လက်လုပ်ဆောင်နေသေးသည်။ သုံးသပ်ချက်သည် သီးခြားဝေဒနာတစ်ခုဖြစ်သည်။

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

၎င်းသည် စဉ်ဆက်မပြတ် ပေါင်းစည်းခြင်း၏ အမြန်ခြုံငုံသုံးသပ်ချက်ဖြစ်သည်။ ဒီကျင့်စဉ်မှာ ဒါပဲရှိတယ်။ မေးခွန်းတွေအတွက် အဆင်သင့်ဖြစ်နေပါပြီ။

အကျဉ်းချုံးပြီး ထပ်ပြောပါရစေ။

  • Continuous Integration သည် Jenkins မဟုတ်ဘဲ Gitlab မဟုတ်ပါ။
  • ၎င်းသည် ကိရိယာတစ်ခုမဟုတ်ပါ၊ ၎င်းသည် ကျွန်ုပ်တို့၏ကုဒ်ကို တတ်နိုင်သမျှ တတ်နိုင်သမျှ မာစတာအဖြစ် ပေါင်းစည်းသည့် အလေ့အကျင့်တစ်ခုဖြစ်သည်။
  • အနာဂတ်တွင် ပေါင်းစည်းမှုများနှင့်အတူ ပါလာသော ကြီးမားသော နာကျင်မှုကို ရှောင်ရှားရန် ဤအရာကို ကျွန်ုပ်တို့ လုပ်ဆောင်ပါသည်။ ဆိုလိုသည်မှာ၊ ကျွန်ုပ်တို့သည် အနာဂတ်တွင် ပိုကြီးသောရောဂါကို ရှောင်ရှားရန် ယခု အနည်းငယ် နာကျင်မှုကို ခံစားနေကြရသည်။ ဒါပဲအချက်ပါပဲ။
  • ကုဒ်မှတဆင့် ဆက်သွယ်မှုအချို့ရှိသော်လည်း ၎င်းကိုမြင်ရခဲသော်လည်း ၎င်းအတွက် ရည်ရွယ်ထားသည်။

မေးခွန်းများကို

ပြိုကွဲပျက်စီးသွားသော အလုပ်များကို ဘာလုပ်ရမည်နည်း။

ပြိုကွဲ။ ပြဿနာကဘာလဲ။ ပြိုကွဲအောင် မလုပ်နိုင်တဲ့ အလုပ်တစ်ခုကို ဥပမာပေးလို့ရမလား။

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

ငါ မင်းကို မှန်မှန်ကန်ကန် နားလည်ရင်၊ ကြီးကြီးမားမားနဲ့ ရှုပ်ထွေးတဲ့ အလုပ်တစ်ခုရှိတယ်၊ ရလဒ်တွေကို တစ်လအတွင်းမှာပဲ မြင်နိုင်လိမ့်မယ်။

ဟုတ်တယ်၊ အဲဒါမှန်တယ်။ ဟုတ်တယ်၊ ရလဒ်တွေကို အနည်းဆုံး တစ်လကြာအောင် မြင်နိုင်မှာ မဟုတ်ပါဘူး။

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

ဟုတ်ပြီ ဒါဆို ဘာအချက်လဲ?

နေ့စဉ်နဲ့အမျှ သေးငယ်တဲ့အရာတွေကို ပေါင်းစည်းဖို့က ဘာလဲ။

ဟုတ်ပါတယ်။

သူတို့ တစ်ခုခု ကွဲသွားရင် ချက်ချင်း မြင်လိမ့်မယ်။ သင့်တွင် တစ်စုံတစ်ခုကို ကျိုးပေါက်သွားသော ကုဒ်အသေးစားတစ်ခုရှိပါက၊ ၎င်းကို ပြင်ရန် သင့်အတွက် ပိုမိုလွယ်ကူသည်။ အဓိကအချက်မှာ သေးငယ်သောအပိုင်းကို ပေါင်းစည်းခြင်းသည် ရက်သတ္တပတ်အနည်းငယ်အတွင်း ကြီးကြီးမားမားတစ်ခုကို ပေါင်းစည်းခြင်းထက် များစွာလွယ်ကူပါသည်။ တတိယအချက်မှာ အခြားသော အင်ဂျင်နီယာများသည် ကုဒ်၏ လက်ရှိဗားရှင်းဖြင့် လုပ်ဆောင်နေမည်ဖြစ်သည်။ အချို့သော ရွှေ့ပြောင်းခြင်းများကို ဤနေရာတွင် ပေါင်းထည့်ထားသည်ကို တွေ့ရမည်ဖြစ်ပြီး ၎င်းတို့လည်း အသုံးပြုလိုသည့် နည်းလမ်းအသစ်တစ်ခု ထိုနေရာတွင် ပေါ်လာသည်ကို တွေ့ရပါမည်။ လူတိုင်းသည် သင့်ကုဒ်တွင် ဖြစ်ပျက်နေသည်များကို မြင်ရပါမည်။ ဤတရားသုံးပါးတို့သည် ကျင့်ခြင်း၏ အကြောင်းတရားပေတည်း။

ကျေးဇူးတင်ပါတယ်၊ မေးခွန်းပိတ်သွားပါပြီ။

(Oleg Soroka) တစ်ခုခုထည့်လို့ရမလား။ မင်းပြောသမျှမှန်တယ်၊ ငါစကားတစ်ခွန်းပဲထည့်ချင်တယ်။

So.

Continuous Integration ဖြင့်၊ အင်္ဂါရပ်တစ်ခု လုံးလုံးအဆင်သင့်မဖြစ်သောအခါတွင်မဟုတ်ဘဲ တည်ဆောက်မှု ပျက်သွားသောအခါတွင် ကုဒ်ကို ပင်မဌာနခွဲသို့ ပေါင်းစည်းသည်။ ပြီးတော့ သင်နှစ်သက်သလောက် တစ်နေ့ကို အကြိမ်များစွာ ကျွမ်းကျင်အောင် စိတ်ချလက်ချ ကတိပြုနိုင်ပါတယ်။ ဒုတိယအနေနဲ့၊ အကြောင်းပြချက်တစ်ခုခုကြောင့် လစဉ်အလုပ်တစ်ခုကို အနည်းဆုံး သုံးရက်-သုံးနာရီနေနေသာသာ လစဉ်အလုပ်တွေကို ခွဲမထုတ်နိုင်ရင် ပြဿနာကြီးကြီးမားမားရှိမယ်။ ပြီးတော့ သင့်မှာ Continuous Integration မရှိဘူးဆိုတဲ့အချက်က ဒီပြဿနာတွေထဲက အနည်းဆုံးပါပဲ။ ဆိုလိုသည်မှာ သင့်တွင် ဗိသုကာဆိုင်ရာ ပြဿနာများနှင့် အင်ဂျင်နီယာဆိုင်ရာ အလေ့အကျင့် လုံးဝမရှိပါ။ အဘယ်ကြောင့်ဆိုသော် ၎င်းသည် သုတေသနပြုလျှင်ပင်၊ ၎င်းကို တွေးခေါ်မှု သို့မဟုတ် သံသရာတစ်ခုအဖြစ် တင်ပြသင့်ဆဲဖြစ်သည်။

အောင်မြင်တဲ့ ကုမ္ပဏီတွေကို နောက်ကျကျန်နေအောင် ခွဲခြားနိုင်တဲ့ မက်ထရစ်လေးခုအကြောင်း ဆွေးနွေးထားပါတယ်။ ဤမက်ထရစ်လေးခုကို ရရှိရန် ကျွန်ုပ်တို့တွင် ခရီးရှည်ကျန်နေသေးသည်။ မင်းရဲ့ ပျမ်းမျှအလုပ်ပြီးဖို့ တစ်လကြာရင် ဒီမက်ထရစ်ကို အရင်အာရုံစိုက်မယ်။ အစကတော့ သုံးရက်လောက် လျှော့ပေးတယ်။ ပြီးမှ Continuous အကြောင်းကို စတင်စဉ်းစားပါ။

အလုပ်တစ်ခုပြီးမြောက်ဖို့ တစ်လလောက်အချိန်ယူရရင် ယေဘုယျအားဖြင့် အင်ဂျင်နီယာကျင့်ထုံးတွေမှာ ရင်းနှီးမြုပ်နှံဖို့ ဘာအကြောင်းမှမရှိဘူးလို့ သင်ထင်တာကို မှန်ကန်စွာနားလည်ပါသလား။

သင့်တွင် စဉ်ဆက်မပြတ် ပေါင်းစည်းမှုရှိသည်။ ပြီးတော့ 10 မိနစ်အတွင်း ပြင်လို့ရသလို ပြင်လို့ရတဲ့ အရာလည်း ရှိတယ်။ သင်အသုံးပြုပြီးပြီဟု မြင်ယောင်ကြည့်ပါ။ သင့်တွင် စဉ်ဆက်မပြတ် ဖြန့်ကျက်မှု ရှိသည်၊ ၎င်းကို ထုတ်လုပ်ရေးသို့ အသုံးချပြီးမှသာ တစ်ခုခု မှားယွင်းသွားသည်ကို သတိပြုမိပါသည်။ ၎င်းကိုသင်ပြန်လှည့်ရန် လိုအပ်သော်လည်း သင်သည် သင်၏ဒေတာဘေ့စ်ကို ရွှေ့ပြောင်းပြီးဖြစ်သည်။ သင့်တွင် ဒေတာဘေ့စ်စခီမာ၏ နောက်ဗားရှင်းတစ်ခုရှိနေပြီဖြစ်ပြီး ထို့ထက်မက၊ အချို့သော အရန်သိမ်းမှုများပင် ရှိလာခဲ့ပြီး ဒေတာများကို ၎င်းထံသို့ ရေးပေးခဲ့သည်။

မင်းရဲ့ရွေးချယ်စရာကဘာလဲ။ ကုဒ်ကို ပြန်လှည့်ပါက၊ အပ်ဒိတ်လုပ်ထားသော ဒေတာဘေ့စ်နှင့် အလုပ်မဖြစ်တော့ပါ။

အခြေခံက ရှေ့ကိုပဲ ရွေ့နေတယ်၊ ​​ဟုတ်တယ်။

အင်ဂျင်နီယာ အလေ့အကျင့် ညံ့ဖျင်းသူတွေဟာ စာအုပ်အထူကြီး မဖတ်ဖူးကြဘူး...။ Backup နဲ့ ဘာလုပ်သင့်လဲ။ အရန်သိမ်းဆည်းမှုမှ ပြန်လည်ရယူပါက၊ ထိုအချိန်မှစ၍ စုဆောင်းထားသည့်ဒေတာများ ဆုံးရှုံးသွားမည်ဖြစ်သည်။ ဥပမာအားဖြင့်၊ သင်သည် ဒေတာဘေ့စ်၏ ဗားရှင်းအသစ်ဖြင့် သုံးနာရီကြာ အလုပ်လုပ်ခဲ့ပြီး အသုံးပြုသူများသည် လော့ဂ်အင်ဝင်သွားခဲ့သည်။ စနစ်သည် ဗားရှင်းအသစ်နှင့် အလုပ်မလုပ်သောကြောင့် သင်သည် အရန်အဟောင်းကို အသုံးပြုရန် ငြင်းဆိုသောကြောင့် ထိုအသုံးပြုသူများ ဆုံးရှုံးသွားခဲ့သည်။ သူတို့ စိတ်မချမ်းသာဘူး။ တိုင်ကြားကြသည်။

Continuous Integration and Continuous Delivery ကို ပံ့ပိုးပေးသော အလေ့အကျင့် အပြည့်အစုံကို ကျွမ်းကျင်အောင် လုပ်ခြင်းသည် စာရေးရန် သင်ယူခြင်းမျှသာ မဟုတ်ပါ... ပထမ၊ ၎င်းတို့ အများအပြား ရှိနိုင်သည်၊ ၎င်းသည် လက်တွေ့မကျနိုင်ပါ။ ထို့အပြင် Scientific ကဲ့သို့သော အခြားသော အလေ့အကျင့်များစွာလည်း ရှိသေးသည်။ GitHub သည် တစ်ကြိမ်တွင် လူကြိုက်များခဲ့သော အလေ့အကျင့်တစ်ခုရှိသည်။ ကုဒ်အဟောင်းနှင့် ကုဒ်အသစ် နှစ်ခုလုံးကို တစ်ပြိုင်နက် run သည့်အခါဖြစ်သည်။ သင်မပြီးသေးသောအင်္ဂါရပ်တစ်ခုကို ဖန်တီးနေချိန်ဖြစ်သည်၊ သို့သော် ၎င်းသည် လုပ်ဆောင်ချက်တစ်ခုအဖြစ် သို့မဟုတ် Rest API တစ်ခုအနေဖြင့် တန်ဖိုးအချို့ကို ပြန်ပေးနိုင်သည်။ သင်သည် ကုဒ်အသစ်နှင့် ကုဒ်ဟောင်း နှစ်ခုစလုံးကို လုပ်ဆောင်ပြီး ၎င်းတို့ကြားရှိ ကွာခြားချက်များကို နှိုင်းယှဉ်ပါ။ ခြားနားချက်တစ်ခုရှိလျှင် သင်သည် ၎င်းကို စာရင်းသွင်းပါ။ ဤနည်းဖြင့်၊ အချိန်အတိုင်းအတာတစ်ခုအထိ ၎င်းတို့နှစ်ခုကြားတွင် ကွဲလွဲမှုမရှိသရွေ့ သင်၏အင်္ဂါရပ်အသစ်သည် အဟောင်းထက် လွှင့်တင်ရန်အဆင်သင့်ဖြစ်နေပြီဟု သင်သိပါသည်။

အဲဒီလို အလေ့အကျင့် ရာနဲ့ချီရှိတယ်။ transbase development နဲ့ စတင်ဖို့ အကြံပြုချင်ပါတယ်။ ၎င်းသည် 100% Continuous Integration မဟုတ်သော်လည်း အလေ့အကျင့်များသည် အတူတူပင်ဖြစ်ပြီး အခြားတစ်ခုမပါဘဲ ကောင်းစွာအလုပ်မလုပ်ပါ။

လူတွေက အလေ့အကျင့်တွေကို ကြည့်နိုင်တဲ့ ဥပမာတစ်ခုအနေနဲ့ transbase development ကို အသုံးပြုခဲ့တာလား၊ ဒါမှမဟုတ် လူတွေက transbase debelopment ကို စသုံးဖို့ အကြံပြုနေတာလား။

၎င်းတို့ကို အသုံးမပြုနိုင်သောကြောင့် စောင့်ကြည့်ပါ။ ၎င်းတို့ကိုအသုံးပြုရန်၊ သင်အများကြီးဖတ်ရန်လိုအပ်သည်။ တစ်စုံတစ်ဦးကမေးသောအခါ "တစ်လကြာသောအင်္ဂါရပ်တစ်ခုနှင့်ငါဘာလုပ်ရမည်နည်း။" transbase development အကြောင်း မဖတ်ရသေးဘူးလို့ ဆိုလိုတာပါ။ ငါအဲဒါကိုမအကြံပေးသေးဘူး။ ကြီးမားသောအလုပ်များကိုအသေးစားအဖြစ်သို့ စနစ်တကျဗိသုကာကျကျခွဲခြမ်းနည်းကိုသာအာရုံစိုက်ရန် အကြံပြုလိုပါသည်။ အဲဒါ ပြိုကွဲခြင်းရဲ့ အနှစ်သာရပဲ။

ပြိုကျပျက်စီးမှုသည် ဗိသုကာပညာရှင်၏ ကိရိယာများထဲမှ တစ်ခုဖြစ်သည်။ ပထမဦးစွာ ကျွန်ုပ်တို့သည် ခွဲခြမ်းစိတ်ဖြာပြီးနောက် ပြိုကွဲပြီးနောက် ပေါင်းစပ်ဖွဲ့စည်းကာ ပေါင်းစပ်သည်။ ဒါမှပဲ အရာအားလုံးက ငါတို့အတွက် အဆင်ပြေတယ်။ ပြိုကွဲခြင်းမှတဆင့် ဆက်တိုက် ပေါင်းစည်းခြင်းသို့ ကျွန်ုပ်တို့ ကြီးထွားရန် လိုအပ်နေသေးသည်။ ပထမအဆင့်တွင် မေးခွန်းများပေါ်လာသော်လည်း၊ ကျွန်ုပ်တို့သည် မကြာခဏပေါင်းစည်းခြင်းဖြစ်သည့် စတုတ္ထအဆင့်ကို ပြောထားပြီးဖြစ်သည်၊ ပိုကောင်းပါသည်။ အနည်းငယ်စောနေသေးသည်။ ကျွန်တော်တို့ရဲ့ monolith ကို ဦးစွာ ဖြိုခွဲဖို့ စိတ်ကူးကောင်း ဖြစ်ပါလိမ့်မယ်။

အချို့သော မျဉ်းကြောင်းပေါ်တွင် မြှားများနှင့် လေးထောင့်အချို့ကို ရေးဆွဲရန် လိုအပ်ပါသည်။ အက်ပ်အသစ်တစ်ခု၏ ဗိသုကာပုံသဏ္ဍာန်ကို သင့်အား ပြမည်ဖြစ်ပြီး အက်ပ်အတွင်းရှိ အစိမ်းရောင်ခလုတ်တစ်ခုပါရှိသော စတုရန်းတစ်ခုပြသမည်ဟု သင်ပြော၍မရပါ။ လေးထောင့် နှင့် မြှားများ ပိုရှိမည်မှာ သေချာပါသည်။ ကျွန်တော်မြင်ဖူးတဲ့ ပုံတိုင်းမှာ တစ်ခုထက်ပိုပါတယ်။ ဂရပ်ဖစ်ကိုယ်စားပြုအဆင့်တွင်ပင် ပြိုကွဲပျက်စီးမှုကို စတင်နေပြီဖြစ်သည်။ ဒါကြောင့် လေးထောင့်တွေကို အမှီအခိုကင်းအောင် လုပ်နိုင်ပါတယ်။ မဟုတ်ပါက ကျွန်ုပ်တွင် ဗိသုကာပညာရှင်အတွက် မေးစရာမေးခွန်းများစွာရှိပါသည်။

ချတ်မှမေးခွန်းတစ်ခုရှိသည်- "ပြန်လည်သုံးသပ်ရန်မဖြစ်မနေလိုအပ်ပြီး အချိန်ကြာမြင့်ပါက တစ်ရက် သို့မဟုတ် ထို့ထက်ပို၍ကြာပါက၊

မင်းရဲ့အလေ့အကျင့်နဲ့ ပတ်သက်ပြီး ပြဿနာရှိတယ်။ သုံးသပ်ချက်သည် တစ်ရက် သို့မဟုတ် ထို့ထက်ပို၍ ကြာရှည်မခံသင့်ပါ။ ဤဇာတ်လမ်းသည် ယခင်မေးခွန်းနှင့် အတူတူပင်ဖြစ်ပြီး အနည်းငယ် ပိုသိမ်မွေ့ပါသည်။ သုံးသပ်ချက်တစ်ခုသည် တစ်ရက်ကြာပါက၊ ၎င်းသည် အလွန်ကြီးမားသောပြောင်းလဲမှုကို ပြန်လည်သုံးသပ်နေသည်ဟု ဆိုလိုပါသည်။ ထို့ကြောင့် ပိုတိုသင့်သည်။ Oleg အကြံပြုထားသည့် transbase ဖွံ့ဖြိုးတိုးတက်မှုတွင်၊ စဉ်ဆက်မပြတ်ပြန်လည်သုံးသပ်ခြင်းဟုခေါ်သော နည်းလမ်းတစ်ခုရှိသည်။ စိတ်ကူးမှာ ကျွန်ုပ်တို့သည် အဆက်မပြတ် ဖြည်းဖြည်းချင်း ပေါင်းစည်းရန် ကြိုးပမ်းသောကြောင့် ဆွဲငင်တောင်းဆိုမှုများကို သေးငယ်အောင် ရည်ရွယ်ချက်ရှိရှိ သိမ်းဆည်းထားခြင်းဖြစ်သည်။ ထို့ကြောင့် ဆွဲတင်တောင်းဆိုမှုတစ်ခုသည် abstraction တစ်ခု သို့မဟုတ် 10 စာကြောင်းကို ပြောင်းလဲသည်။ ဤအတွက်ကြောင့်၊ သုံးသပ်ချက်သည် ကျွန်ုပ်တို့ကို မိနစ်အနည်းငယ်ကြာပါသည်။

ပြန်လည်သုံးသပ်မှုတစ်ခုသည် တစ်ရက် သို့မဟုတ် ထိုထက်ပိုကြာပါက တစ်ခုခုမှားနေပါသည်။ ပထမဦးစွာ သင်သည် ဗိသုကာဆိုင်ရာ ပြဿနာတစ်ခုခုရှိနိုင်သည်။ သို့မဟုတ် ကုဒ်အတုံးအခဲကြီးတစ်ခု၊ ဥပမာ၊ စာကြောင်း 1,000 ဖြစ်နိုင်သည်။ သို့မဟုတ် သင့်ဗိသုကာလက်ရာသည် လူသားတစ်ဦးမှ နားမလည်နိုင်လောက်အောင် ရှုပ်ထွေးနေပေမည်။ ဤအရာသည် အနည်းငယ်ပို၍ ပျော့ပျောင်းသော ပြဿနာဖြစ်သော်လည်း ဖြေရှင်းရန် လိုအပ်ပါလိမ့်မည်။ ပြန်လည်သုံးသပ်ရန် လုံးဝမလိုအပ်ပါ။ ဒါကလည်း စဉ်းစားစရာတစ်ခုပါ။ သုံးသပ်ချက်သည် သင့်အား နှေးကွေးစေသော အရာဖြစ်သည်။ ၎င်းတွင် ၎င်း၏ အားသာချက်များ အားလုံးကို ခြုံငုံမိသော်လည်း သင်ဘာကြောင့် လုပ်သည်ကို နားလည်ရန် လိုအပ်ပါသည်။ သတင်းအချက်အလက်ကို မြန်မြန်ဆန်ဆန် လွှင့်တင်ဖို့ နည်းလမ်းတစ်ခုလား၊ ပြည်တွင်းစံနှုန်းအချို့ကို ချမှတ်ဖို့ နည်းလမ်းတစ်ခုလား ဒါမှမဟုတ် ဘာလဲ။ အဘယ်ကြောင့် လိုအပ်သနည်း။ အဘယ်ကြောင့်ဆိုသော် သုံးသပ်ချက်များကို အလွန်လျင်မြန်စွာ လုပ်ဆောင်ရန် သို့မဟုတ် လုံးဝ ပယ်ဖျက်ရန် လိုအပ်သောကြောင့် ဖြစ်သည်။ ၎င်းသည် အလွန်လှပသော ဇာတ်လမ်းဖြစ်ပြီး ရင့်ကျက်သော developer များအတွက်သာ transbase development နှင့်တူသည်။

မက်ထရစ်လေးခုနှင့် ပတ်သက်၍ ကျွန်ုပ်သည် ၎င်းတို့ကို စစ်ဆေးကြည့်ရန် အကြံပြုလိုပါသည်။ ကိန်းဂဏန်းတွေနဲ့ ရုပ်ပုံတွေကို ကြည့်လိုက်ရင် ဘယ်လောက်ဆိုးလဲဆိုတာ သိနိုင်ပါတယ်။

(Dmitry) ဒီအကြောင်းကို မင်းနဲ့ ဆွေးနွေးဖို့ ငါအဆင်သင့်ဖြစ်နေပြီ။ ကိန်းဂဏာန်းများနှင့် မက်ထရစ်များသည် အလွန်ကောင်းသည်၊ အလေ့အကျင့်ကောင်းများဖြစ်သည်။ ဒါပေမယ့် လုပ်ငန်းက တကယ်လိုအပ်သလားဆိုတာ နားလည်ဖို့ လိုပါတယ်။ အပြောင်းအလဲမြန်တဲ့ အရှိန်အဟုန်ကို မလိုအပ်တဲ့ လုပ်ငန်းတွေလည်း ရှိပါတယ်။ 15 မိနစ်တိုင်း အပြောင်းအလဲမလုပ်နိုင်တဲ့ ကုမ္ပဏီတွေကို ငါသိတယ်။ သူတို့ မကောင်းလို့ မဟုတ်ဘူး။ ၎င်းသည် ဘဝစက်ဝန်း၏ အစိတ်အပိုင်းတစ်ခုမျှသာဖြစ်သည်။ အကိုင်းအခက်များနှင့် အဖွင့်အပိတ်ကဲ့သို့သော အင်္ဂါရပ်များကို အကောင်အထည်ဖော်ရန် နက်နဲသော အသိပညာ လိုအပ်သည်။

အဲဒါခက်ခဲရှုပ်ထွေးတယ်။ Toggle လုပ်ဆောင်ချက်အကြောင်း အသေးစိတ်အချက်အလက်များကို သင်ဖတ်ရှုလိုပါက၊ ကျွန်ုပ်သည် ၎င်းကို အထူးအကြံပြုလိုပါသည်။ https://trunkbaseddevelopment.com/Martin Fowler တွင် ၎င်းတို့၏ အမျိုးအစားများ၊ ဘဝသံသရာနှင့် အခြားအရာများအကြောင်း toggle features များအကြောင်း ဆောင်းပါးကောင်းတစ်ခု ရှိပါသည်။ ခလုတ်ဖွင့်ခြင်းအင်္ဂါရပ်သည် ရှုပ်ထွေးသည်။

"Jenkins လိုအပ်သလား၊ မရှိဘူးလား" ဆိုတဲ့မေးခွန်းကို သင်မဖြေရသေးပါ။

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

ဒီတော့ မင်းမှာ အလေ့အကျင့်တွေရှိတယ်ဆိုရင် အဲဒါကို မလိုအပ်ဘူးလို့ ဆိုလိုတာလား?

မှန်တယ်။ Jez Humble ၏စမ်းသပ်မှုကို ကျွန်ုပ်အကြံပြုပါသည်။ နောက်ဆုံးအချက်ကို ကွဲလွဲနေတယ်။ သို့သော် ခြုံငုံကြည့်လျှင် သင့်တွင် အရာသုံးခု—အဆက်မပြတ်ပေါင်းစည်းပါက၊ သင်သည် commits များကို master တွင်စမ်းသပ်မှုများလုပ်ဆောင်ပြီး build in master ကို လျှင်မြန်စွာပြင်ဆင်ပါ—ထို့နောက် သင်ဘာမှမလိုအပ်တော့ပါ။

ပါဝင်သူများထံမှ မေးခွန်းများကို စောင့်ဆိုင်းနေစဉ်တွင် မေးခွန်းတစ်ခုရှိသည်။ ထုတ်လုပ်မှုကုဒ်အကြောင်းပဲ ပြောနေတာ။ အခြေခံအဆောက်အအုံကုဒ်အတွက် သင်အသုံးပြုဖူးပါသလား။ ၎င်းသည် တူညီသောကုဒ်ရှိသလော၊ ၎င်းတွင် တူညီသောမူများနှင့် ဘဝသံသရာရှိသလား၊ သို့မဟုတ် မတူညီသော ဘဝသံသရာနှင့် သဘောတရားများ ရှိပါသလား။ အများအားဖြင့် လူတိုင်းက Continuous Integration and Development အကြောင်းပြောတဲ့အခါ အခြေခံအဆောက်အအုံကုဒ်လည်း ရှိတယ်ဆိုတာ မေ့သွားကြတယ်။ မကြာသေးမီက ပိုများလာခဲ့သည်။ ဒီစည်းမျဥ်းအားလုံးကို ဆောင်သင့်သလား။

ဒါမဖြစ်သင့်ဘူး ၊ ဘဝကို ရိုးရိုးရှင်းရှင်းဖြစ်အောင် လုပ်ထားလို့ ကောင်းတယ် ။ ကျွန်ုပ်တို့သည် bash script များသာမက၊ မှန်ကန်သောကုဒ်များဖြင့် လုပ်ဆောင်နေပါသည်။

စောင့်ဆိုင်းပါ၊ စောင့်ဆိုင်းပါ၊ bash script သည်ကုဒ်ဖြစ်နေဆဲဖြစ်သည်။ ငါ့မီးဟောင်းကို မထိနဲ့။

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

အခြေခံအဆောက်အအုံကို ကုဒ်အဖြစ် ဆက်ဆံသည်နှင့် တပြိုင်နက်၊ ကျွန်ုပ်တို့သည် ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပြဿနာများကို ကြုံတွေ့ရသည်။ လွန်ခဲ့သောလအနည်းငယ်က၊ လုပ်ဖော်ကိုင်ဖက်တစ်ဦးသည် bash ဖြင့်ရေးထားသောကုဒ်လိုင်း 1,000 ကိုဆွဲထုတ်ရန်တောင်းဆိုမှုတစ်ခုပေးပို့သည့်အခြေအနေတစ်ခုကိုကျွန်ုပ်ကြုံတွေ့ခဲ့ရသည်။ လေးနာရီကြာအောင် သင်ပြန်စစ်နေရတယ်။ တူညီသောပြဿနာများပေါ်ပေါက်။ ကုဒ်ပဲရှိသေးတာ။ နောက်ပြီးတော့ ပူးပေါင်းဆောင်ရွက်နေတုန်းပါပဲ။ ကျွန်ုပ်တို့သည် ဆွဲတင်တောင်းဆိုမှုတွင် တွယ်ကပ်နေပြီး ဥပမာအားဖြင့် bash ကဲ့သို့ တူညီသော ပေါင်းစပ်ပဋိပက္ခများကို ဖြေရှင်းရာတွင် ပိတ်မိနေပါသည်။

လက်ရှိ အခြေခံအဆောက်အအုံ၏ အလှပဆုံး ပရိုဂရမ်များကို အာရုံစိုက်ကာ ဤအရာအားလုံးကို တက်ကြွစွာ ကြည့်ရှုနေပါသည်။ ကျွန်တော် Pulumi ကို အခြေခံအဆောက်အအုံနဲ့ ပေါင်းစပ်ပြီးပါပြီ။ ၎င်းသည် ၎င်း၏ အသန့်ရှင်းဆုံးပုံစံဖြင့် ပရိုဂရမ်ရေးဆွဲခြင်း ဖြစ်သည်။ ကျွန်ုပ်တွင် ပရိုဂရမ်းမင်းဘာသာစကား၏ စွမ်းဆောင်နိုင်ရည်အားလုံးရှိသောကြောင့် ၎င်းသည် ထိုနေရာတွင်ပင် လှပသောခလုတ်ခလုတ်များကို ဖန်တီးရန် ထိုတူညီသော IF များကို အသုံးပြုခဲ့ပြီး အားလုံးအဆင်ပြေပါသည်။ ဒီတော့ ကျွန်တော့်ရဲ့ အပြောင်းအလဲက မာနကြီးနေပြီ။ လူတိုင်းမြင်နိုင်ပါတယ်။ တခြား အင်ဂျင်နီယာတွေလည်း သိတယ်။ သက်ရောက်မှုရှိနေပြီ။ ဒါပေမယ့် အခြေခံအဆောက်အဦအားလုံးအတွက် မဖွင့်ထားသေးပါဘူး။ ဥပမာ ကျွန်ုပ်၏ စမ်းသပ်ကိရိယာများအတွက် ၎င်းကို ဖွင့်ထားသည်။ ဒါကြောင့် သင့်မေးခွန်းကို ပြန်ဖြေဖို့ လိုအပ်တယ်။ ကုဒ်နဲ့အလုပ်လုပ်တဲ့ အင်ဂျင်နီယာတွေလို ကျွန်တော်တို့ရဲ့ဘဝကို လွယ်ကူစေတယ်။

အခြားမေးခွန်းများရှိပါက?

မေးစရာရှိပါတယ်။ Oleg နဲ့ ဆွေးနွေးမှုတွေ ဆက်လုပ်ချင်တယ်။ ယေဘူယျအားဖြင့်၊ အလုပ်တစ်ခုသည် တစ်လကြာပါက၊ သင်သည် ဗိသုကာနှင့်ပတ်သက်သော ပြဿနာတစ်ခု၊ ခွဲခြမ်းစိတ်ဖြာမှု၊ ပြိုကွဲမှု၊ စီမံကိန်းစဥ်ဆိုင်ရာ ပြဿနာနှင့် အခြားအရာများ ရှိနေသည်ဟု ငါထင်သည် ။ ဒါပေမယ့် Continuous Integration နဲ့ စတင်အသက်ရှင်ဖို့ ကြိုးစားရင်၊ မင်းရဲ့ အစီအစဥ်ဆွဲထားတဲ့ နာကျင်မှုတွေကနေ မလွတ်မြောက်နိုင်တော့တဲ့အတွက် မင်းရဲ့အစီအစဥ်ကို စတင်ပြင်ဆင်ရတော့မယ်ဆိုတဲ့ ခံစားချက်တစ်ခုရှိတယ်။

(Oleg) ဟုတ်တယ်၊ မှန်တယ်။ အလုပ်သမား ပြင်းထန်မှုအရ၊ ဤအလေ့အကျင့်သည် အခြားသော ပြင်းထန်သော ယဉ်ကျေးမှုပြောင်းလဲသည့် အလေ့အကျင့်များနှင့် နှိုင်းယှဉ်နိုင်သည်။ ကျော်လွှားရန် အခက်ဆုံးအရာမှာ အလေ့အထများ အထူးသဖြင့် အကျင့်ဆိုးများဖြစ်သည်။ အကယ်၍ ဤအလေ့အကျင့်ကို အကောင်အထည်ဖော်ရန် သင့်ပတ်ဝန်းကျင်ရှိသူများ—တီထွင်သူ၊ စီမံခန့်ခွဲမှု၊ ထုတ်လုပ်ရေးမန်နေဂျာများ—၏အလေ့အထကို သိသာထင်ရှားစွာပြောင်းလဲရန် လိုအပ်ပါက သင်သည် အံ့အားသင့်သွားမည်ဖြစ်သည်။

ဘယ်လိုအံ့သြစရာတွေ ရှိနိုင်မလဲ။ မကြာခဏ ပေါင်းစည်းရန် သင်ဆုံးဖြတ်ပြီးပြီ ဆိုပါစို့။ ထို့အပြင် ရှေးဟောင်းပစ္စည်းများကဲ့သို့ ပေါင်းစည်းရန် သင့်တွင် အခြားအရာများရှိသည်။ ဥပမာအားဖြင့် သင့်ကုမ္ပဏီတွင် ရှေးဟောင်းပစ္စည်းတိုင်းကို အချို့သော ရှေးဟောင်းပစ္စည်းသိုလှောင်မှုစနစ်တွင် တစ်နည်းနည်းဖြင့် ထည့်သွင်းတွက်ချက်ရမည့် မူဝါဒတစ်ခုရှိသည်။ ပြီးတော့ ဒါက အချိန်အတိုင်းအတာတစ်ခုယူတယ်။ တစ်စုံတစ်ဦးသည် ထုတ်လုပ်ရန် အဆင်သင့်ဖြစ်ရန်အတွက် ဤပစ္စည်းကို ထုတ်လုပ်ရန် အဆင်သင့်ဖြစ်ရန်အတွက် ထုတ်လုပ်ရေးမန်နေဂျာအနေဖြင့် ၎င်းတို့ စမ်းသပ်ခဲ့ကြောင်း တစ်စုံတစ်ဦးက စစ်ဆေးရန် လိုအပ်ပါသည်။ အကယ်၍ 5-10-15 မိနစ်ကြာသော်လည်း တစ်ပတ်လျှင် တစ်ကြိမ်အသုံးပြုပါက၊ တစ်ပတ်လျှင် တစ်ကြိမ် နာရီဝက်အသုံးပြုခြင်းသည် အခွန်အနည်းငယ်သာဖြစ်သည်။

ဆက်တိုက်ပေါင်းစည်းခြင်းကို တစ်နေ့ 10 ကြိမ်ပြုလုပ်ပါက 10 ကြိမ်ကို မိနစ် 30 ဖြင့် မြှောက်ရန် လိုအပ်သည်။ အဲဒါက မန်နေဂျာရဲ့ အလုပ်ချိန်ကို ကျော်လွန်သွားပြီ။ လုပ်ရတာ ငြီးငွေ့လာတယ်။ အချို့သော အလေ့အကျင့်များနှင့် ဆက်စပ်နေသော ကုန်ကျစရိတ်များ အမြဲရှိနေပါသည်။ ဒါပါပဲ။

ထို့ပြင် သင်သည် ဤစည်းမျဉ်းကို ဖျက်သိမ်းရန် သို့မဟုတ် ဤကဲ့သို့ အဓိပ္ပာယ်မရှိသောအကျင့်ကို ရပ်တန့်ရန် လိုအပ်သည်- ဆိုလိုသည်မှာ သင်သည် တစ်စုံတစ်ခုအား လိုက်နာမှုအဆင့်သတ်မှတ်ချက်ကို ကိုယ်တိုင်မသတ်မှတ်ထားပေ။ သင်သည် အလိုအလျောက် အဆင်သင့် စစ်ဆေးမှု အစုံအလင်ကို လုံးလုံးလျားလျား အားကိုးသည်။

အကယ်၍ သင်သည် တစ်စုံတစ်ဦးထံမှ အထောက်အထား လိုအပ်ပါက သူဌေးက ၎င်းကို လက်မှတ် ရေးထိုးနိုင်ပြီး Vasya ၏ ခွင့်ပြုချက် မရှိဘဲ စသည်တို့ကို သင် စွက်ဖက်ခြင်း မပြုပါနှင့်၊ ဤ အဓိပ္ပာယ် သည် ကျင့်ထုံးများ ၏ လမ်းကြောင်းတွင် ရှိနေပါသည်။ ဘာဖြစ်လို့လဲဆိုတော့ အခွန်နဲ့ပတ်သက်တဲ့ လုပ်ဆောင်ချက်တစ်ခုခုရှိရင် အရာအားလုံးကို အဆ ၁၀၀ ချဲ့တယ်။ ထို့ကြောင့် အပြောင်းအရွှေ့ကို လူတိုင်းက ကြိုဆိုလေ့မရှိပေ။ ဘာကြောင့်လဲ ဆိုတော့ လူတွေရဲ့ အလေ့အထကို ပြောင်းလဲဖို့ ခက်တယ်။

တစ်ယောက်ယောက်က ရင်းနှီးတဲ့အလုပ်တစ်ခုကို လုပ်တဲ့အခါ မတွေးဘဲ လက်တွေ့ကျကျ လုပ်တတ်ကြတယ်။ ၎င်းတွင် သိမြင်မှု ဝန် သုည မရှိပါ။ သူတို့က ရိုးရိုးရှင်းရှင်းပဲ၊ သူတို့ခေါင်းထဲမှာ စာရင်းစစ်ပြီးသား၊ အဲဒါကို အကြိမ်တစ်ထောင်ပြီးပြီ။ သင်ဝင်လာပြီး "ဒီအလေ့အကျင့်ကို ပယ်ဖျက်ပြီး တနင်္လာနေ့မှစပြီး အသစ်တစ်ခုကို အကောင်အထည်ဖော်လိုက်ကြရအောင်" လို့ပြောလိုက်တာနဲ့ သူတို့အတွက် ကြီးမားတဲ့ အသိဉာဏ်ဆိုင်ရာ ဝန်ထုပ်ဝန်ပိုးတစ်ခု ဖြစ်လာပါတယ်။ တစ်ချိန်တည်းမှာ လူတိုင်းမှာ ဖြစ်တတ်ပါတယ်။

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

ဤသည်မှာ သင်လုပ်ဆောင်ရမည့်အရာကို ဦးစွာနားလည်ခြင်း၏ ပြဿနာကို သင်ကြုံတွေ့ရသည့်နေရာဖြစ်သည်။ ကမ္ဘာကြီးက မပြည့်စုံသလို ထုတ်လုပ်မှုလည်း မဟုတ်ဘူး။

ဟုတ်တယ်၊ ဒီအရာတွေက အပြန်အလှန်ဆက်စပ်နေတယ်။

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

အပြောင်းအလဲ လုံးဝ မဖြစ်နိုင်တဲ့ အခြေအနေ ရှိတယ်။ ဒီအချိန်မှာ အသင်းက ဖိအားတွေ အရမ်းများနေတယ်။ အသင်းက အတော်လေး မီးလောင်နေပြီ။ ၎င်းတို့သည် မည်သည့်စမ်းသပ်မှုများအတွက် အားလပ်ချိန်မရှိပါ။ သူတို့က မနက်ကနေ ညအထိ အင်္ဂါရပ်တွေကို ထုရိုက်တယ်။ ဒါပေမယ့် စီမံခန့်ခွဲမှုမှာ လုံလောက်တဲ့ အင်္ဂါရပ်တွေကို မရရှိနိုင်ပါဘူး။ ပိုပိုပြီး တောင်းဆိုလာကြတယ်။ ဒီအခြေအနေမှာ အပြောင်းအလဲ မဖြစ်နိုင်ပါဘူး။ မနက်ဖြန်မှာ မနေ့ကလိုပဲ လုပ်မယ် ၊ နောက်ထပ် အင်္ဂါရပ် အနည်းငယ် ထပ်ထည့်ဖို့ လိုသေးတယ် ၊ ဤသဘောအရ မည်သည့်အလေ့အကျင့်သို့ ပြောင်းရန် မဖြစ်နိုင်ပါ။ ဤသည်မှာ ပုဆိန်ကို ချွန်ရန်အချိန်မရှိသော ဂန္တဝင်အခြေအနေဖြစ်ပြီး သစ်ပင်များကိုခုတ်လှဲရသောကြောင့် ပုဆိန်မှိုင်းဖြင့်ခုတ်ထစ်ခြင်းဖြစ်သည်။ ဤနေရာတွင် လွယ်ကူသော အဖြေမရှိပါ။

(Dmitry) ချတ်မှ ရှင်းလင်းချက်တစ်ခုကို ကျွန်ုပ်ဖတ်ရပါမည်- "ဒါပေမယ့် အဆင့်အမျိုးမျိုးမှာ ကျယ်ကျယ်ပြန့်ပြန့် စမ်းသပ်မှုတွေ လိုအပ်တယ်။ စမ်းသပ်မှုမှာ အချိန်ဘယ်လောက်ကုန်လဲ။ နည်းနည်းဈေးကြီးပြီး အချိန်ကုန်ပုံရတယ်။"

(Oleg) ဒါက ဂန္ထဝင် လွဲမှားမှုတစ်ခုပါ။ သင့်အားယုံကြည်မှုပေးရန်အတွက် လုံလောက်သောစမ်းသပ်မှုများရှိသင့်သည်။ ဆက်တိုက်ပေါင်းစည်းခြင်းသည် သင် 100% စမ်းသပ်ခြင်းကို ဦးစွာလုပ်ဆောင်ပြီးမှသာ ၎င်းကိုအကောင်အထည်ဖော်သည့် အရာမဟုတ်ပါ။ စဉ်ဆက်မပြတ်ပေါင်းစည်းခြင်းသည် သင်၏မျက်စိဖြင့်မြင်ရသော ပြောင်းလဲမှုတိုင်းသည် စမ်းသပ်မှုမပြုလုပ်ဘဲ တစ်ခုခုကွဲသွားခြင်းရှိမရှိ သိနိုင်သောကြောင့် သင်၏သိမြင်နိုင်စွမ်းကို လျှော့ချပေးပါသည်။ အပြောင်းအလဲများသည် သေးငယ်သောကြောင့် သင့်ဦးခေါင်းတွင် လျှင်မြန်စွာ စမ်းသပ်နိုင်သည်။ သင့်တွင် လက်စွဲစမ်းသပ်သူများသာရှိလျှင်ပင် ၎င်းတို့အတွက်လည်း ပိုမိုလွယ်ကူပါသည်။ မင်းက အသုံးချပြီး "ကြည့်စမ်း၊ မင်း တစ်ခုခု ကွဲသွားတာလား" လို့ ပြောလိုက်တယ်။ သူတို့က စစ်ဆေးပြီး "မဟုတ်ဘူး၊ ဘာမှ မကွဲဘူး" အဘယ်ကြောင့်ဆိုသော် စမ်းသပ်သူသည် မည်သည့်နေရာတွင် ကြည့်ရမည်ကို သိသောကြောင့်ဖြစ်သည်။ သင့်တွင် ကုဒ်အပိုင်းအစတစ်ခုနှင့် ဆက်စပ်သော ကုဒ်တစ်ခုရှိသည်။ ၎င်းကို သီးခြားအပြုအမူတစ်ခုဖြင့် အသုံးချသည်။

ဤနေရာ၌ သင်သည် သေချာပေါက် အလှဆင်ထားသည်။

(ဒီမီထရီ) ကျွန်တော် သဘောမတူဘူးဗျ။ ဤအရာမှ သင့်အား ကယ်တင်နိုင်သော စမ်းသပ်မောင်းနှင်မှု ဖွံ့ဖြိုးတိုးတက်မှုဟုခေါ်သော အလေ့အကျင့်တစ်ခု ရှိပါသည်။

(Oleg) အင်း၊ ငါ အဲဒီ့နေရာကို မရောက်သေးဘူး။ ပထမဆုံး ထင်ယောင်ထင်မှားမှာ စာမေးပွဲများကို 100% ရေးရန် လိုအပ်သည် သို့မဟုတ် Continuous Integration လုံးဝမပြုလုပ်သင့်ပါ။ အဲဒါ မမှန်ပါဘူး။ ၎င်းတို့သည် ပြိုင်တူကျင့်စဉ်နှစ်ခုဖြစ်ပြီး ၎င်းတို့သည် တိုက်ရိုက်မသက်ဆိုင်ပါ။ သင်၏စမ်းသပ်မှုလွှမ်းခြုံမှုသည် အကောင်းဆုံးဖြစ်သင့်သည်။ အကောင်းဆုံးဆိုလိုသည်မှာ ကတိပြုပြီးနောက် သင်၏သခင်၏အရည်အသွေးသည် သောကြာညတွင် အရက်မူးနေချိန်တွင် "Deploy" ခလုတ်ကို ယုံကြည်စိတ်ချစွာ နှိပ်နိုင်စေသည်ဟု သင်ယုံကြည်မှုရှိသည်။ ဒါကို သင်ဘယ်လိုအောင်မြင်မလဲ။ သုံးသပ်ချက်များမှတဆင့်၊ လွှမ်းခြုံမှုမှတဆင့်၊ ကောင်းမွန်သောစောင့်ကြည့်မှုမှတဆင့်။

ကောင်းမွန်သောစောင့်ကြည့်မှုသည် စမ်းသပ်ခြင်းမှ ခွဲခြား၍မရပေ။ အကယ်၍ သင်သည် စမ်းသပ်မှုများ မထုတ်လုပ်မီ တစ်ကြိမ် လုပ်ဆောင်ပါက၊ ၎င်းတို့သည် သင့်အသုံးပြုသူ မြင်ကွင်းအားလုံးကို တစ်ကြိမ်သာ စစ်ဆေးပြီး ဒါပါပဲ။ သို့သော် သင်သည် ၎င်းတို့အား အဆုံးမရှိသော ကွင်းဆက်တစ်ခုတွင် လုပ်ဆောင်ပါက၊ အရာအားလုံးကို အဆုံးမသတ်နိုင်သော စမ်းသပ်မှုစနစ်—ကျရှုံးသည်ဖြစ်စေ၊ ဤကိစ္စတွင်၊ ၎င်းတို့သည် တစ်ကြိမ် သို့မဟုတ် ထပ်ခါထပ်ခါ လုပ်ဆောင်သည်ဖြစ်စေ တစ်ခုတည်းသော ခြားနားချက်ဖြစ်သည်။ အလွန်ကောင်းမွန်သော စမ်းသပ်မှုအစုတစ်ခု...၊ အဆုံးမရှိပြေးသည်၊ စောင့်ကြည့်နေသည်။ အဲဒါက မှန်ကန်တဲ့ စောင့်ကြည့်မှု ဖြစ်သင့်တယ်။

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

Continuous Integration ကို နည်းနည်းပြန်သွားကြည့်ရအောင်။ ကျွန်ုပ်တို့သည် အနည်းငယ်ကွဲပြားပြီး ပိုမိုရှုပ်ထွေးသော ဧရိယာသို့ လှည့်ထွက်သွားပါသည်။

ဒုတိယ ထင်ယောင်ထင်မှားမှာ MVP များသည် လျင်မြန်စွာ လုပ်ဆောင်ရန် လိုအပ်သည်ဟု ဆိုသောကြောင့် စမ်းသပ်မှုများ လုံးဝ မလိုအပ်ပါ။ အဲဒါ လုံးဝမမှန်ပါဘူး။ အမှန်မှာ၊ သင်သည် MVP တွင် အသုံးပြုသူဇာတ်လမ်းတစ်ပုဒ်ကို ရေးသားသည့်အခါ၊ ၎င်းကို အခမဲ့ဖန်တီးနိုင်သည်—ဆိုလိုသည်မှာ အသုံးပြုသူတစ်ဦး၏ဇာတ်လမ်းကို သင်ကြားရပြီး ၎င်းကို ချက်ချင်းကုဒ်လုပ်ရန် သို့မဟုတ် သင် TDD ဖြင့် လုပ်ဆောင်နိုင်သည်။ လက်တွေ့ပြသထားသည့်အတိုင်း TDD သည် ကြာကြာမခံပါ။ စမ်းသပ်မှုများသည် ဘေးထွက်ဆိုးကျိုးတစ်ခုဖြစ်သည်။ TDD သည် စမ်းသပ်ခြင်းအကြောင်းမဟုတ်ပါ။ ၎င်းကို Test Driven Development ဟုခေါ်သော်လည်း၊ ၎င်းသည် စမ်းသပ်ခြင်းနှင့်ပတ်သက်၍ လုံးဝမဟုတ်ပါ။ ၎င်းသည် ဗိသုကာဆိုင်ရာ ချဉ်းကပ်မှုတစ်ခုလည်းဖြစ်သည်။ လိုအပ်တာတွေကို အတိအကျရေးပြီး မလိုအပ်တာတွေကို မရေးဘဲနဲ့ ရေးတာပါ။ ဤအလေ့အကျင့်သည် အပလီကေးရှင်း၏ ဗိသုကာလက်ရာကို ဖန်တီးခြင်းနှင့်ပတ်သက်၍ သင်၏တွေးခေါ်မှုလုပ်ငန်းစဉ်၏ နောက်တစ်ကြိမ်ထပ်လုပ်ခြင်းအပေါ် အာရုံစိုက်သည်။

ထို့ကြောင့် ဤထင်ယောင်ထင်မှားများကို ဖယ်ရှားရန်မှာ မလွယ်ကူလှပေ။ MVP နှင့် စမ်းသပ်မှုများသည် ဆန့်ကျင်ဘက်မဟုတ်ပါ။ တကယ်တော့၊ လုံးဝဆန့်ကျင်ဘက်ပါပဲ- TDD အလေ့အကျင့်ကိုအသုံးပြုပြီး MVP တစ်ခုကိုတည်ဆောက်မယ်ဆိုရင်၊ သင်လုံးဝမလေ့ကျင့်ဘဲလုပ်ထားတာထက် ပိုကောင်းပြီး ပိုမြန်ပါလိမ့်မယ်။ ဒါပေမယ့် အခမဲ့လုပ်လိုက်ပါ။

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

(Dmitry) ဒီနေရာမှာ လူတော်တော်များများက အဲဒါကို MVP လို့ ခေါ်ရင် သင့်တော်တဲ့ တစ်ခုခုရေးဖို့ ပျင်းတယ်လို့ ပြောကြတယ်။ ပြီးတော့ သူတို့နှစ်ယောက်က မတူဘူး။ MVP ကို ​​အလုပ်မလုပ်သော မကောင်းသောအရာအဖြစ်သို့ မပြောင်းလဲပါနှင့်။

ဟုတ်တယ်၊ မင်းပြောတာမှန်တယ်။

ပြီးတော့ ရုတ်တရက် MVP နဲ့ ရော့။

ထာဝရအမြဲတမ်း။

TDD သည် သင် စာမေးပွဲများ ရေးပြီး အလုပ်ပိုလုပ်ရမည်ဟု ကြားလိုက်သောအခါတွင် ထူးဆန်းသည် ။ တကယ်ကို ထူးဆန်းတယ်လို့ထင်ရပေမယ့် လက်တွေ့မှာတော့၊ ဒါဟာ ပိုမြန်ပြီး ပိုဆွဲဆောင်မှုရှိပါတယ်။ သင်စမ်းသပ်မှုတစ်ခုရေးသောအခါ၊ သင်သည်မည်သည့်ကုဒ်ကိုခေါ်မည်၊ မည်သို့မည်ပုံ၊ ၎င်းမှကျွန်ုပ်တို့မျှော်လင့်ထားသည်များအကြောင်းများစွာစဉ်းစားနေပြီဖြစ်သည်။ "ငါ လုပ်ဆောင်ချက်တချို့ ရေးပြီး တစ်ခုခုလုပ်တယ်" လို့ ပြောရုံနဲ့တင် မဟုတ်ပါဘူး။ "ဒီလိုမျိုး အခြေအနေတွေ ရှိတယ်၊ အဲဒါကို ဒီနည်းနဲ့ ခေါ်လိမ့်မယ်" လို့ မင်းအရင်တွေးခဲ့တယ်။ သင်သည် ၎င်းကို စမ်းသပ်မှုများဖြင့် အကျုံးဝင်ပြီး သင့်ကုဒ်အတွင်းရှိ အင်တာဖေ့စ်များသည် မည်သို့မည်ပုံရှိမည်ကို ဤအချက်မှ သင်နားလည်ပါသည်။ ဤသည်မှာ ဗိသုကာပညာကို များစွာလွှမ်းမိုးပါသည်။ သင့်ကုဒ်သည် ၎င်းကို မည်သို့စမ်းသပ်မည်ကို ဦးစွာသိရှိရန် ကြိုးစားပြီးမှသာ ၎င်းကို ရေးနိုင်သောကြောင့် သင့်ကုဒ်သည် အလိုအလျောက် ပိုမိုများပြားလာပါသည်။

TDD နဲ့ ပတ်သက်ပြီး ကျွန်တော့်ရဲ့ အတွေ့အကြုံက တစ်ချိန်တုန်းက Ruby ပရိုဂရမ်မာတစ်ယောက်ဖြစ်စဥ်အချိန်က Ruby နည်းပြတစ်ယောက် ငှားခဲ့တယ်။ "မင်း TDD လုပ်ရအောင်" လို့ပြောခဲ့တယ်။ "ဟင့်အင်း၊ အခု တခြားရေးစရာရှိသေးတယ်" လို့ တွေးလိုက်တယ်။ ထို့ကြောင့် ကျွန်ုပ်သည် TDD ကို အသုံးပြု၍ ကျွန်ုပ်၏ လုပ်ဆောင်နေသော Python ကုဒ်အားလုံးကို ရေးချရန် နှစ်ပတ်ကြာ သဘောတူညီခဲ့သည်။ နှစ်ပတ်လောက်ကြာတော့ မပြန်ချင်တော့မှန်း သိလာတယ်။ နေရာတိုင်းကို အသုံးချဖို့ နှစ်ပတ်ကြာအောင် ကြိုးစားပြီးနောက်၊ တွေးကြည့်ရုံနဲ့ ဘယ်လောက်တောင် ပိုလွယ်ကူလာတယ်ဆိုတာ သိလိုက်ရတယ်။ ဒါပေမယ့် ရှင်းရှင်းလင်းလင်းမဟုတ်တဲ့အတွက် TDD က ခက်ခဲတယ်၊ အချိန်ကုန်ပြီး မလိုအပ်ဘူးလို့ ခံစားရရင် နှစ်ပတ်လောက်ကြာအောင် ထိန်းထားဖို့ အကြံပြုချင်ပါတယ်။ နှစ်ပတ်က ငါ့အတွက် လုံလောက်တယ်။

(Dmitry) ကျွန်ုပ်တို့သည် ဤစိတ်ကူးကို အခြေခံအဆောက်အအုံဆိုင်ရာ လုပ်ငန်းဆောင်ရွက်မှုရှုထောင့်မှ ချဲ့ထွင်နိုင်သည်။ အသစ်တစ်ခုခုကို မစတင်မီ၊ ၎င်းကို စောင့်ကြည့်စစ်ဆေးပြီးမှ စတင်ပါ။ ဤကိစ္စတွင်၊ စောင့်ကြည့်ခြင်းသည် ပုံမှန်စမ်းသပ်မှုဖြစ်လာသည်။ ပြီးတော့ စောင့်ကြည့်မှုကနေတဆင့် ဖွံ့ဖြိုးတိုးတက်မှုရှိတယ်။ ဒါပေမယ့် လူတိုင်းနီးပါးက အချိန်အရမ်းကြာတယ်လို့ ပြောကြပြီး ကျွန်တော်လည်း ပျင်းတဲ့အတွက် ယာယီမူကြမ်းကို လုပ်ခဲ့တာပါ။ အကယ်၍ ကျွန်ုပ်တို့သည် မှန်ကန်သော စောင့်ကြည့်မှုကို ပြုလုပ်ပြီးပါက CI စနစ်၏ အခြေအနေကို ကျွန်ုပ်တို့ နားလည်ပါသည်။ CI စနစ်သည် စောင့်ကြည့်မှုများစွာ လိုအပ်ပါသည်။ ကျွန်ုပ်တို့သည် စနစ်၏ အခြေအနေကို နားလည်သည်၊ ၎င်းအတွင်း၌ ရှိနေသည်ကို ကျွန်ုပ်တို့ နားလည်ပါသည်။ ဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်း၊ ကျွန်ုပ်တို့သည် အမှန်တကယ်အလိုရှိသော အခြေအနေသို့ရောက်ရှိရန် စနစ်ကို ပုံဖော်နေပါသည်။

ဤအလေ့အကျင့်များသည် အချိန်အတော်ကြာခဲ့ပြီဖြစ်သည်။ လွန်ခဲ့တဲ့ လေးနှစ်လောက်က သူတို့နဲ့ ဆွေးနွေးခဲ့တယ်။ ဒါပေမယ့် လေးနှစ်အတွင်း လက်တွေ့မှာတော့ ဘာမှ မပြောင်းလဲပါဘူး။

ဒါပေမယ့် ဒီမှတ်စုမှာတော့ တရားဝင် ဆွေးနွေးမှုကို အဆုံးသတ်ဖို့ အဆိုပြုပါတယ်။

ဗီဒီယို (မီဒီယာဒြပ်စင်တစ်ခုအနေဖြင့် ထည့်သွင်းထားသော်လည်း အကြောင်းတစ်ခုခုကြောင့် ၎င်းသည် အလုပ်မလုပ်ပါ)

https://youtu.be/zZ3qXVN3Oic

source: www.habr.com

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster