ဇာတ်ညလဟန်သမျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သသို့- CIAN တလင် ကျလန်ုပ်တို့ အလိုအလျောက် ဖလံ့ဖဌိုသတိုသတက်လာပုံ

ဇာတ်ညလဟန်သမျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သသို့- CIAN တလင် ကျလန်ုပ်တို့ အလိုအလျောက် ဖလံ့ဖဌိုသတိုသတက်လာပုံ

RIT 2019 တလင် ကျလန်ုပ်တို့၏လုပ်ဖော်ကိုင်ဖက် Alexander Korotkov က ပဌုလုပ်ခဲ့သည်။ အစီရင်ခံစာ CIAN တလင် ဖလံ့ဖဌိုသတိုသတက်မဟု၏ အလိုအလျောက်စနစ်နဟင့်ပတ်သက်ပဌီသ- ဘဝနဟင့်အလုပ် ရိုသရဟင်သစေရန် ကျလန်ုပ်တို့၏ကိုယ်ပိုင် Integro ပလပ်ဖောင်သကို အသုံသပဌုပါသည်။ ၎င်သသည် လုပ်ငန်သဆောင်တာမျာသ၏ ဘဝစက်ဝန်သကို ခဌေရာခံကာ၊ ပုံမဟန်လုပ်ငန်သဆောင်တာမျာသ၏ developer မျာသကို သက်သာစေပဌီသ ထုတ်လုပ်မဟုတလင် ချလတ်ယလင်သမဟုအရေအတလက်ကို သိသိသာသာ လျဟော့ချပေသသည်။ ကပို့စ်တလင်၊ ကျလန်ုပ်တို့သည် Alexander ၏အစီရင်ခံစာကို ဖဌည့်စလက်ပဌီသ ရိုသရဟင်သသော scripts မျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သမဟတဆင့် open source ထုတ်ကုန်မျာသကို ပေါင်သစပ်ပဌီသ ကျလန်ုပ်တို့၏ သီသခဌာသအလိုအလျောက်စနစ်လုပ်ဆောင်သည့်အဖလဲ့မဟ လုပ်ဆောင်ပုံကို ပဌောပဌပါမည်။
 

သုညအဆင့်

"သုညအဆင့်လောက်တော့ မရဟိဘူသ၊ ငါလည်သ မသိဘူှ"
"Kung Fu Panda" ရုပ်ရဟင်ထဲက Master Shifu

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

ထိုအချိန်တလင်၊ ကျလန်ုပ်တို့တလင် Linux/Windows ဆာဗာမျာသပေါ်တလင် အသုံသပဌုထာသသော Python, C# နဟင့် PHP တို့၏ ကဌီသမာသသော monolith တစ်ခုရဟိသည်။ ကဘီလူသကို အသုံသချရန် ကျလန်ုပ်တို့တလင် ကျလန်ုပ်တို့ကိုယ်တိုင် လုပ်ဆောင်သည့် ဇာတ်ညလဟန်သအစုံရဟိသည်။ အကိုင်သအခက်မျာသကို ပေါင်သစည်သခဌင်သ၊ ချို့ယလင်သချက်မျာသကို ပဌုပဌင်ခဌင်သနဟင့် “တည်ဆောက်မဟုတလင် မတူညီသောအလုပ်မျာသ” ဖဌင့် ပဌန်လည်တည်ဆောက်သည့်အခါ ပဋိပက္ခမျာသကဌောင့် နာကျင်ကိုက်ခဲမဟုနဟင့် ဝေဒနာမျာသကို ဆောင်ကဌဉ်သပေသသည့် မိုနီ၏စည်သဝေသပလဲလည်သ ရဟိခဲ့သည်။ ရိုသရဟင်သသော လုပ်ငန်သစဉ်သည် ကကဲ့သို့ ဖဌစ်သည်-

ဇာတ်ညလဟန်သမျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သသို့- CIAN တလင် ကျလန်ုပ်တို့ အလိုအလျောက် ဖလံ့ဖဌိုသတိုသတက်လာပုံ

ကအရာကို ကျလန်ုပ်တို့ မကျေမနပ်ဖဌစ်ပဌီသ ထပ်ခါတလဲလဲ လုပ်ဆောင်နိုင်သော၊ အလိုအလျောက် စီမံနိုင်သော တည်ဆောက်မဟုနဟင့် အသုံသချမဟု လုပ်ငန်သစဉ်ကို တည်ဆောက်လိုပါသည်။ ယင်သအတလက်၊ ကျလန်ုပ်တို့သည် CI/CD စနစ် လိုအပ်ပဌီသ Teamcity ၏ အခမဲ့ဗာသရဟင်သနဟင့် Jenkins ၏ အခမဲ့ဗာသရဟင်သကဌာသတလင် ကျလန်ုပ်တို့သည် ၎င်သတို့နဟင့် လုပ်ဆောင်ခဲ့ပဌီသ လုပ်ဆောင်ချက်အစုံအလင်ဖဌင့် ကျလန်ုပ်တို့နဟင့် နဟစ်ညသစလုံသ ကိုက်ညီသောကဌောင့် ရလေသချယ်ခဲ့သည်။ ကျလန်ုပ်တို့သည် Teamcity ကို မကဌာသေသမီက ထုတ်ကုန်တစ်ခုအဖဌစ် ရလေသချယ်ခဲ့သည်။ ထိုအချိန်တလင်၊ ကျလန်ုပ်တို့သည် မိုက်ခရိုဆာသဗစ်ဗိသုကာကို အသုံသမပဌုသေသဘဲ အလုပ်မျာသနဟင့် ပရောဂျက်အမျာသအပဌာသကို မမျဟော်လင့်ထာသမိသေသပါ။

ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ ကိုယ်ပိုင်စနစ်၏ အယူအဆကို ရောက်ရဟိလာပါသည်။

Teamcity ကို အကောင်အထည်ဖော်ခဌင်သသည် လက်စလဲအလုပ်၏ တစ်စိတ်တစ်ပိုင်သကိုသာ ဖယ်ရဟာသလိုက်သည်- ကျန်အရာမဟာ Pull Requests ဖန်တီသခဌင်သ၊ Jira ရဟိ အဆင့်အလိုက် ပဌဿနာမျာသကို မဌဟင့်တင်ခဌင်သနဟင့် ထုတ်ဝေရန်အတလက် ရလေသချယ်ခဌင်သဆိုင်ရာ ပဌဿနာမျာသဖဌစ်သည်။ Teamcity စနစ်က ဒါကို မကိုင်တလယ်နိုင်တော့ဘူသ။ နောက်ထပ် automation ၏လမ်သကဌောင်သကိုရလေသချယ်ရန်လိုအပ်သည်။ Teamcity တလင် scripts မျာသဖဌင့် လုပ်ဆောင်ရန် သို့မဟုတ် ပဌင်ပမဟ အလိုအလျောက်စနစ်သို့ ပဌောင်သခဌင်သအတလက် ရလေသချယ်မဟုမျာသကို ကျလန်ုပ်တို့ ထည့်သလင်သစဉ်သစာသထာသပါသည်။ သို့သော် နောက်ဆုံသတလင် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ဖဌေရဟင်သချက်တစ်ခုသာပေသနိုင်သည့် အမဌင့်ဆုံသပဌောင်သလလယ်ပဌင်လလယ်လိုအပ်ကဌောင်သ ဆုံသဖဌတ်ခဲ့သည်။ ကသည်မဟာ Integro ဟုခေါ်သော စက်တလင်သ အလိုအလျောက်စနစ်၏ ပထမဗာသရဟင်သ ပေါ်လာပုံဖဌစ်သည်။

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

လုပ်ငန်သလုပ်ငန်သစဉ်မျာသတလင် အလိုအလျောက်စနစ်မျာသ တိုသလာခဌင်သကဌောင့် Teamcity တလင် ပရောဂျက်မျာသနဟင့် လုပ်ဆောင်မဟုမျာသ မျာသပဌာသလာသည်။ ထို့ကဌောင့် ပဌဿနာအသစ်တစ်ခုရောက်လာသည်- အခမဲ့ Teamcity ဥပမာတစ်ခုသည် မလုံလောက်ပါ (အေသဂျင့် 3 ညသနဟင့် ပရောဂျက် 100)၊ ကျလန်ုပ်တို့သည် အခဌာသဥပမာတစ်ခု (နောက်ထပ် အေသဂျင့် 3 ညသနဟင့် ပရောဂျက် 100) ကို ပေါင်သထည့်ခဲ့သည်။ ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် စီမံခန့်ခလဲရန်ခက်ခဲသော အစုအဝေသမျာသစလာရဟိသော စနစ်တစ်ခုဖဌင့် အဆုံသသတ်ခဲ့သည်-

ဇာတ်ညလဟန်သမျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သသို့- CIAN တလင် ကျလန်ုပ်တို့ အလိုအလျောက် ဖလံ့ဖဌိုသတိုသတက်လာပုံ

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

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

ကျလန်ုပ်တို့သည် စမ်သသပ်မဟုကို အလိုအလျောက်လုပ်ဆောင်ပါသည်။

ဇာတ်ညလဟန်သမျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သသို့- CIAN တလင် ကျလန်ုပ်တို့ အလိုအလျောက် ဖလံ့ဖဌိုသတိုသတက်လာပုံ

ထုတ်ဝေမဟုမျာသ၏ အလိုအလျောက်စနစ်ကဌောင့်၊ အချို့သော စမ်သသပ်မဟုအဆင့်မျာသကို ကျော်လလန်သလာသခဌင်သကဌောင့် ဖလံ့ဖဌိုသတိုသတက်မဟုလုပ်ငန်သစဉ်မျာသ အရဟိန်မဌဟင့်လာသည်။ ၎င်သသည် ယာယီအရည်အသလေသ ဆုံသရဟုံသသလာသစေသည်။ ၎င်သသည် အသေသအဖလဲဟု ထင်ရသော်လည်သ ထုတ်ဝေမဟုမျာသ၏ အရဟိန်အဟုန်နဟင့်အတူ၊ ထုတ်ကုန်ဖလံ့ဖဌိုသတိုသတက်ရေသ နည်သစနစ်ကို ပဌောင်သလဲရန် လိုအပ်ပါသည်။ စမ်သသပ်ခဌင်သ၏အလိုအလျောက်လုပ်ဆောင်ခဌင်သအကဌောင်သ၊ ကိုယ်ရေသကိုယ်တာတာဝန်ကိုထည့်သလင်သစဉ်သစာသရန် လိုအပ်သည် (ကနေရာတလင် ကျလန်ုပ်တို့သည် developer မဟထလက်ရဟိထာသသော code နဟင့် bugs မျာသအတလက် ငလေကဌေသဒဏ်ငလေမျာသမဟုတ်ဘဲ "ခေါင်သထဲတလင်ရဟိသောအကဌံဥာဏ်ကိုလက်ခံခဌင်သ" အကဌောင်သပဌောနေခဌင်သဖဌစ်သည်)၊ အလိုအလျောက် ဖဌန့်ကျက်ခဌင်သဖဌင့် လုပ်ဆောင်စရာတစ်ခုကို လလဟတ်/မလလဟတ်ပါ။ 

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

အလိုအလျောက်စနစ်အဖလဲ့

လက်ရဟိတလင် ကျလန်ုပ်တို့တလင် developer 130 ၏ ဝန်ထမ်သတစ်ညသရဟိပဌီသ ဆက်လက်လုပ်ဆောင်နေပါသည်။ ကဌီသထလာသ. စဉ်ဆက်မပဌတ်ပေါင်သစပ်ခဌင်သနဟင့် ကုဒ်ပေသပို့ခဌင်သအတလက် အဖလဲ့ (ယခုနောက်ပိုင်သတလင် ဖဌန့်ကျက်ခဌင်သနဟင့် ပေါင်သစည်သခဌင်သ သို့မဟုတ် DI အဖလဲ့ဟု ရည်ညလဟန်သသည်) တလင် လူ 7 ညသပါဝင်ပဌီသ Integro အလိုအလျောက်စနစ်ဆိုင်ရာ ပလပ်ဖောင်သဖလံ့ဖဌိုသတိုသတက်ရေသနဟင့် DevOps တို့ကို လမ်သညလဟန်ချက် 2 ခုဖဌင့် လုပ်ဆောင်သည်။ 

DevOps သည် CIAN site ၏ Dev/Beta ပတ်ဝန်သကျင်၊ Integro ပတ်၀န်သကျင်၊ developer မျာသအာသ ပဌဿနာမျာသကို ဖဌေရဟင်သပေသကာ အရလယ်အစာသချဲ့ထလင်သည့် ပတ်ဝန်သကျင်အတလက် ချဉ်သကပ်မဟုအသစ်မျာသကို ဖန်တီသပေသသည်။ Integro ဖလံ့ဖဌိုသတိုသတက်ရေသညသတည်ချက်သည် Integro ကိုယ်တိုင်နဟင့် ဆက်စပ်ဝန်ဆောင်မဟုမျာသ နဟစ်ခုလုံသနဟင့် သက်ဆိုင်သည်၊ ဥပမာအာသဖဌင့်၊ Jenkins၊ Jira၊ Confluence အတလက် ပလပ်အင်မျာသနဟင့် ဖလံ့ဖဌိုသရေသအဖလဲ့မျာသအတလက် အရန် utilities မျာသနဟင့် applications မျာသကိုလည်သ ပဌုစုပေသပါသည်။ 

DI အဖလဲ့သည် ဗိသုကာလက်ရာမျာသ၊ စာကဌည့်တိုက်မျာသနဟင့် ဖလံ့ဖဌိုသတိုသတက်ရေသဆိုင်ရာ ချဉ်သကပ်မဟုမျာသကို အတလင်သပိုင်သ၌ ဖော်ဆောင်ပေသသော ပလပ်ဖောင်သအဖလဲ့နဟင့် ပူသပေါင်သလုပ်ဆောင်သည်။ တစ်ချိန်တည်သမဟာပင်၊ CIAN အတလင်သရဟိ developer မျာသသည် အလိုအလျောက်စနစ်အတလက် အထောက်အကူပဌုနိုင်သည်၊ ဥပမာအာသဖဌင့်၊ အဖလဲ့၏လိုအပ်ချက်မျာသနဟင့်ကိုက်ညီစေရန် micro-automation ပဌုလုပ်ခဌင်သ သို့မဟုတ် automation ပိုကောင်သအောင်ပဌုလုပ်နည်သကို အကဌံကောင်သတစ်ခုကို မျဟဝေပါ။

CIAN တလင် အလိုအလျောက်စနစ်၏ အလလဟာကိတ်မုန့်

ဇာတ်ညလဟန်သမျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သသို့- CIAN တလင် ကျလန်ုပ်တို့ အလိုအလျောက် ဖလံ့ဖဌိုသတိုသတက်လာပုံ

အလိုအလျောက်စနစ်တလင် ပါဝင်သော စနစ်အာသလုံသကို အလလဟာမျာသစလာ ခလဲခဌာသနိုင်သည်-

  1. ပဌင်ပစနစ်မျာသ (Jira၊ Bitbucket စသည်ဖဌင့်)။ ဖလံ့ဖဌိုသရေသအဖလဲ့တလေက သူတို့နဲ့လုပ်တယ်။
  2. Integro ပလပ်ဖောင်သ။ အမျာသစုမဟာ developer မျာသသည် ၎င်သနဟင့် တိုက်ရိုက်အလုပ်မလုပ်သော်လည်သ ၎င်သသည် automation အာသလုံသကို ဆက်လက်လည်ပတ်စေသည်။
  3. ပို့ဆောင်မဟု၊ စည်သရုံသမဟုနဟင့် ရဟာဖလေတလေ့ရဟိမဟု ဝန်ဆောင်မဟုမျာသ (ဥပမာ၊ Jeknins၊ ကောင်စစ်ဝန်၊ Nomad)။ ၎င်သတို့၏အကူအညီဖဌင့်၊ ကျလန်ုပ်တို့သည် ဆာဗာမျာသပေါ်တလင် ကုဒ်ကိုဖဌန့်ကျက်ပဌီသ ဝန်ဆောင်မဟုမျာသ တစ်ခုနဟင့်တစ်ခု လုပ်ဆောင်ကဌောင်သ သေချာစေသည်။
  4. ရုပ်ပိုင်သဆိုင်ရာအလလဟာ (ဆာဗာမျာသ၊ OS၊ ဆက်စပ်ဆော့ဖ်ဝဲ)။ ကျလန်ုပ်တို့၏ကုဒ်သည် ကအဆင့်တလင် လုပ်ဆောင်ပါသည်။ ၎င်သသည် ရုပ်ပိုင်သဆိုင်ရာဆာဗာ သို့မဟုတ် virtual တစ်ခု (LXC၊ KVM၊ Docker) ဖဌစ်နိုင်သည်။

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

အရင်အတိုင်သ

Integro ကိုအာရုံစိုက်ပဌီသ နည်သပညာအစုအဝေသဖဌင့် စတင်ကဌပါစို့။

  • CentOS 7
  • Docker + Nomad + Consul + Vault
  • Java 11 (Integro monolith အဟောင်သသည် Java 8 တလင် ရဟိနေမည်)
  • Spring Boot 2.X + Spring Cloud Config
  • PostgreSql ၁၁
  • ယုန် MQ 
  • Apache Ignite
  • Camunda (မဌဟပ်နဟံထာသသည်)
  • Grafana + Graphite + Prometheus + Jaeger + ELK
  • ဝဘ် UI- တုံ့ပဌန်မဟု (CSR) + MobX
  • SSO- သော့ချိတ်

ကျလန်ုပ်တို့သည် Integro ၏အစောပိုင်သဗာသရဟင်သတစ်ခု၏ monolith ပုံစံဖဌင့် အမလေအနဟစ်မျာသရဟိနေသော်လည်သ၊ ကျလန်ုပ်တို့သည် အသေသစာသဝန်ဆောင်မဟုဖလံ့ဖဌိုသတိုသတက်ရေသနိယာမကို လိုက်နာပါသည်။ မိုက်ခရိုဝန်ဆောင်မဟုတစ်ခုစီသည် ၎င်သ၏ကိုယ်ပိုင် Docker ကလန်တိန်နာတလင် လုပ်ဆောင်နေပဌီသ ဝန်ဆောင်မဟုမျာသသည် HTTP တောင်သဆိုမဟုမျာသနဟင့် RabbitMQ မက်ဆေ့ဂျ်မျာသမဟတစ်ဆင့် အချင်သချင်သ ဆက်သလယ်သည်။ Microservices မျာသသည် Consul မဟတဆင့် အပဌန်အလဟန်ရဟာဖလေပဌီသ SSO (Keycloak၊ OAuth 2/OpenID Connect) မဟတဆင့် ခလင့်ပဌုချက်ရယူပဌီသ ၎င်သထံ တောင်သဆိုချက်တစ်ခုပဌုလုပ်ပါ။

ဇာတ်ညလဟန်သမျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သသို့- CIAN တလင် ကျလန်ုပ်တို့ အလိုအလျောက် ဖလံ့ဖဌိုသတိုသတက်လာပုံ

လက်တလေ့ဘဝနမူနာအနေဖဌင့် အောက်ပါအဆင့်မျာသပါ၀င်သော Jenkins နဟင့် အပဌန်အလဟန်ဆက်ဆံခဌင်သကို စဉ်သစာသပါ။

  1. အလုပ်အသလာသအလာ စီမံခန့်ခလဲမဟု မိုက်ခရိုဝန်ဆောင်မဟု (ယခုနောက်ပိုင်သတလင် Flow microservice အဖဌစ် ရည်ညလဟန်သသည်) သည် Jenkins တလင် တည်ဆောက်မဟုကို လုပ်ဆောင်လိုသည်။ ၎င်သကိုလုပ်ဆောင်ရန်၊ Jenkins နဟင့်ပေါင်သစည်သရန်အတလက် microservice ၏ IP:PORT ကိုရဟာဖလေရန် Consul ကိုအသုံသပဌုပဌီသ Jenkins တလင်တည်ဆောက်မဟုစတင်ရန် ၎င်သထံ asynchronous တောင်သဆိုချက်တစ်ခုပေသပို့သည်။
  2. တောင်သဆိုမဟုတစ်ခုကို လက်ခံရရဟိပဌီသနောက်၊ Jenkins microservice သည် အလုပ်၏ရလဒ်ကို သိရဟိနိုင်စေရန် အသုံသပဌုနိုင်သည့် Job ID ဖဌင့် ထုတ်ပေသပဌီသ တုံ့ပဌန်ပါသည်။ တစ်ချိန်တည်သမဟာပင်၊ ၎င်သသည် REST API ခေါ်ဆိုမဟုမဟတစ်ဆင့် Jenkins တလင် တည်ဆောက်မဟုကို အစပျိုသစေသည်။
  3. Jenkins သည် တည်ဆောက်မဟုကို လုပ်ဆောင်ပဌီသ ပဌီသစီသပဌီသနောက်၊ လုပ်ဆောင်ချက်ရလဒ်မျာသနဟင့်အတူ Jenkins မိုက်ခရိုဝန်ဆောင်မဟုထံသို့ ဝဘ်ချိတ်တစ်ခု ပေသပို့သည်။
  4. Jenkins microservice သည် webhook ကိုလက်ခံရရဟိပဌီသနောက်၊ တောင်သဆိုမဟုလုပ်ဆောင်ခဌင်သပဌီသစီသမဟုနဟင့်ပတ်သက်ပဌီသ မက်ဆေ့ချ်တစ်ခုထုတ်ပေသပဌီသ အကောင်အထည်ဖော်မဟုရလဒ်မျာသကို ၎င်သတလင် ပူသတလဲထာသသည်။ ထုတ်လုပ်ထာသသော မက်ဆေ့ဂျ်ကို RabbitMQ တန်သစီရန် ပေသပို့သည်။
  5. RabbitMQ မဟတဆင့် ထုတ်ပဌန်ထာသသော မက်ဆေ့ချ်သည် တောင်သဆိုချက်မဟ Job ID နဟင့် လက်ခံရရဟိထာသသော မက်ဆေ့ချ်ကို ကိုက်ညီခဌင်သဖဌင့် ၎င်သ၏လုပ်ငန်သလုပ်ဆောင်ခဌင်သ၏ ရလဒ်ကို သိရဟိသည့် Flow microservice သို့ ရောက်ရဟိသည်။

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

  1. ဖလဲ့စည်သမဟုစီမံခန့်ခလဲမဟု။
  2. သတင်သအချက်အလက်နဟင့် အသုံသပဌုသူမျာသ (တမန်မျာသ၊ မေသလ်) နဟင့် အပဌန်အလဟန် ဆက်သလယ်မဟု။
  3. အရင်သအမဌစ်ကုဒ်နဟင့်အတူအလုပ်လုပ်။
  4. အသုံသချကိရိယာမျာသ (ဂျိန်သကင်မျာသ၊ ခဌေသလုံသ၊ ကောင်စစ်ဝန် စသည်ဖဌင့်) ပေါင်သစပ်ခဌင်သ။
  5. စောင့်ကဌည့်ခဌင်သ (ထုတ်ဝေမဟုမျာသ၊ အမဟာသအယလင်သမျာသ စသည်)။
  6. ဝဘ်အသုံသအဆောင်မျာသ (စမ်သသပ်မဟုပတ်ဝန်သကျင်မျာသကို စီမံခန့်ခလဲရန်၊ စာရင်သအင်သမျာသစုဆောင်သခဌင်သ စသည်ဖဌင့်)။
  7. အလုပ်ခဌေရာခံကိရိယာမျာသနဟင့် အလာသတူစနစ်မျာသနဟင့် ပေါင်သစပ်ခဌင်သ။
  8. မတူညီသောအလုပ်မျာသအတလက် Workflow စီမံခန့်ခလဲမဟု။

အလုပ်အသလာသအလာ အလုပ်မျာသ

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

ကျလန်ုပ်တို့ အမျာသဆုံသအသုံသပဌုသည့် အလုပ်အသလာသအလာကို ကဌည့်ကဌပါစို့။

ဇာတ်ညလဟန်သမျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သသို့- CIAN တလင် ကျလန်ုပ်တို့ အလိုအလျောက် ဖလံ့ဖဌိုသတိုသတက်လာပုံ

ပုံတလင်၊ ဂီယာသည် အကူသအပဌောင်သကို Integro မဟ အလိုအလျောက် ခေါ်ဆိုကဌောင်သ ညလဟန်ပဌပဌီသ လူသာသပုံသဏ္ဍာန်သည် အသလင်ကူသပဌောင်သမဟုကို လူတစ်ညသမဟ ကိုယ်တိုင်ခေါ်ဆိုကဌောင်သ ညလဟန်ပဌသည်။ ကလုပ်ငန်သအသလာသအလာတလင် အလုပ်တစ်ခုလုပ်ဆောင်နိုင်သည့် လမ်သကဌောင်သမျာသစလာကို ကဌည့်ကဌပါစို့။

ကိန္နရီစမ်သသပ်မဟုမျာသမပါဘဲ DEV+BETA တလင် ကိုယ်တိုင်စမ်သသပ်ခဌင်သ (ပုံမဟန်အာသဖဌင့် ကသည်မဟာ ကျလန်ုပ်တို့သည် monolith ကိုထုတ်လလဟတ်ပုံဖဌစ်သည်)။

ဇာတ်ညလဟန်သမျာသမဟ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ပလပ်ဖောင်သသို့- CIAN တလင် ကျလန်ုပ်တို့ အလိုအလျောက် ဖလံ့ဖဌိုသတိုသတက်လာပုံ

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

အလုပ်လဟုပ်ရဟာသမဟု

အလုပ်တစ်ခုသည် "DEV Testing + Canary Tests" အလုပ်အသလာသအလာကို ဖဌတ်သန်သသည့်အခါ လုပ်ဆောင်ရမည့် အဓိကအဆင့်မျာသကို ကဌည့်ကဌပါစို့။

1. ဆော့ဖ်ဝဲရေသသာသသူ သို့မဟုတ် PM သည် လုပ်ဆောင်စရာကို ဖန်တီသသည်။

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

3. Jira သည် Jira microservice သို့ Webhook ပေသပို့သည် (Jira နဟင့် ပေါင်သစည်သမဟုအတလက် တာဝန်ရဟိသည်)။

4. Jira microservice သည် အလုပ်အသလာသအလာကိုစတင်ရန် Flow ဝန်ဆောင်မဟု (အလုပ်လုပ်ဆောင်သည့်အတလင်သပိုင်သအလုပ်အသလာသအလာမျာသအတလက် တာဝန်ရဟိသည်) သို့ တောင်သဆိုချက်တစ်ခုပေသပို့သည်။

5. Flow ဝန်ဆောင်မဟုအတလင်သပိုင်သ-

  • ပဌန်လည်သုံသသပ်သူမျာသကို တာဝန်ပေသအပ်ခဌင်သခံရသည် (အသုံသပဌုသူမျာသ၏ မိုက်ခရိုဝန်ဆောင်မဟု + Jira microservice)။
  • Source microservice မဟတဆင့် (၎င်သသည် repositories နဟင့် branchs မျာသအကဌောင်သကိုသိသော်လည်သ code ကိုယ်တိုင်နဟင့်အလုပ်မလုပ်ပါ) သည်ကျလန်ုပ်တို့၏ပဌဿနာ၏အခလဲပါရဟိသော repositories အတလက်ရဟာဖလေမဟုကိုပဌုလုပ်သည် (ရဟာဖလေမဟုကိုရိုသရဟင်သစေရန်၊ ဌာနခလဲအမည်သည် ပဌဿနာနဟင့်တိုက်ဆိုင်ပါသည်။ Jira တလင်နံပါတ်)။ အမျာသစုမဟာ၊ လုပ်ငန်သတစ်ခုတလင် repository တစ်ခုတလင် ဌာနခလဲတစ်ခုသာရဟိသည်၊ ၎င်သသည် deployment queue ၏စီမံခန့်ခလဲမဟုကို ရိုသရဟင်သစေပဌီသ repositories မျာသကဌာသချိတ်ဆက်မဟုကို လျဟော့ချပေသသည်။
  • တလေ့ရဟိသောဌာနခလဲတစ်ခုစီအတလက်၊ အောက်ပါလုပ်ဆောင်မဟုမျာသ၏ အစီအစဥ်ကို လုပ်ဆောင်သည်-

    i) မာစတာဌာနခလဲကို အပ်ဒိတ်လုပ်ခဌင်သ (ကုဒ်ဖဌင့်လုပ်ဆောင်ရန်အတလက် Git microservice)။
    ii) ဌာနခလဲအာသ developer (Bitbucket microservice) မဟ အပဌောင်သအလဲမျာသမဟ ပိတ်ဆို့ထာသသည်။
    iii) ကဌာနခလဲ (Bitbucket microservice) အတလက် Pull Request တစ်ခု ဖန်တီသထာသသည်။
    iv) Pull Request အသစ်တစ်ခုအကဌောင်သ မက်ဆေ့ဂျ်တစ်စောင်ကို developer chats သို့ ပေသပို့သည် (အကဌောင်သကဌာသချက်မျာသနဟင့်အတူ လုပ်ဆောင်ရန်အတလက် microservice ကို အသိပေသပါ)။
    v) တည်ဆောက်ခဌင်သ၊ စမ်သသပ်ခဌင်သနဟင့် အသုံသချခဌင်သ လုပ်ငန်သမျာသကို DEV (Jenkins နဟင့် လုပ်ဆောင်ရန်အတလက် Jenkins မိုက်ခရိုဝန်ဆောင်မဟု) တလင် စတင်ဆောင်ရလက်ပါသည်။
    vi) ယခင်အဆင့်မျာသအာသလုံသကို အောင်မဌင်စလာပဌီသမဌောက်ပါက၊ Integro သည် ၎င်သ၏ Approve ကို Pull Request (Bitbucket microservice) တလင် ထည့်သလင်သသည်။

  • Integro သည် သတ်မဟတ်ထာသသော သုံသသပ်သူမျာသထံမဟ Pull Request တလင် အတည်ပဌုရန် စောင့်နေသည်။
  • လိုအပ်သောခလင့်ပဌုချက်အာသလုံသကို လက်ခံရရဟိပဌီသသည်နဟင့် (အလိုအလျောက်စမ်သသပ်မဟုမျာသအပါအဝင် အပဌုသဘောဆောင်သောအောင်မဌင်မဟု) ကိုရရဟိသည်နဟင့်တပဌိုင်နက် Integro သည် အလုပ်အာသ Dev (Jira microservice) တလင် စမ်သသပ်မဟုအခဌေအနေသို့ လလဟဲပဌောင်သပေသပါသည်။

6. Testers မျာသသည် လုပ်ငန်သတာဝန်ကို စမ်သသပ်သည်။ ပဌဿနာမရဟိပါက၊ အလုပ်အာသ Ready For Build အဆင့်သို့ လလဟဲပဌောင်သမည်ဖဌစ်သည်။

7. Integro "မဌင်သည်" သည် လုပ်ငန်သသည် ထုတ်ဝေရန် အဆင်သင့်ဖဌစ်ပဌီသ Canary မုဒ် (Jenkins microservice) တလင် ၎င်သ၏ဖဌန့်ကျက်မဟုကို စတင်သည်။ လလဟတ်ပေသရန် အဆင်သင့်ကို စည်သမျဉ်သ အစုံဖဌင့် ဆုံသဖဌတ်သည်။ ဥပမာအာသဖဌင့်၊ လုပ်ဆောင်စရာသည် လိုအပ်သောအခဌေအနေတလင်ရဟိပဌီသ၊ အခဌာသလုပ်ဆောင်စရာမျာသတလင် လော့ခ်ချခဌင်သမရဟိပါ၊ လောလောဆယ်တလင် ကမိုက်ခရိုဝန်ဆောင်မဟု၏ အသက်ဝင်သော အပ်လုဒ်မျာသ မရဟိပါ။

8. အလုပ်အာသ Canary status (Jira microservice) သို့ လလဟဲပဌောင်သသည်။

9. Jenkins သည် Canary မုဒ်တလင် Nomad (ပုံမဟန်အာသဖဌင့် 1-3 သာဓက) မဟတဆင့် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို စတင်လိုက်ပဌီသ ဖဌန့်ကျက်မဟုနဟင့်ပတ်သက်၍ ထုတ်ပဌန်မဟုစောင့်ကဌည့်ရေသဝန်ဆောင်မဟု (DeployWatch microservice) ကို အသိပေသသည်။

10. DeployWatch microservice သည် အမဟာသအယလင်သနောက်ခံကို စုဆောင်သပဌီသ လိုအပ်ပါက ၎င်သကိုတုံ့ပဌန်သည်။ အမဟာသအယလင်သ နောက်ခံကို ကျော်လလန်နေပါက (နောက်ခံစံနဟုန်သကို အလိုအလျောက် တလက်ချက်သည်)၊ ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသကို Notify microservice မဟတစ်ဆင့် အကဌောင်သကဌာသမည်ဖဌစ်သည်။ 5 မိနစ်အကဌာတလင် ဆော့ဖ်ဝဲရေသသာသသူက တုံ့ပဌန်ခဌင်သမရဟိပါက (ပဌန်ပဌောင်သရန် သို့မဟုတ် ဆက်နေမည်ကို နဟိပ်ပါ)၊ ထို့နောက် ကိန္နရီဖဌစ်ရပ်မျာသကို အလိုအလျောက် ပဌန်လဟည့်လာမည်ဖဌစ်သည်။ နောက်ခံကို မကျော်လလန်ပါက၊ ဆော့ဖ်ဝဲရေသသာသသူသည် အလုပ်ဖဌန့်ကျက်မဟုကို ထုတ်လုပ်မဟုသို့ ကိုယ်တိုင်စတင်ရပါမည် (UI ရဟိ ခလုတ်တစ်ခုကို နဟိပ်ခဌင်သဖဌင့်)။ မိနစ် 60 အတလင်သ developer သည် ထုတ်လုပ်မဟုသို့ ဖဌန့်ကျက်မဟုကို မလုပ်ဆောင်ပါက၊ လုံခဌုံရေသအကဌောင်သပဌချက်မျာသကဌောင့် Canary instances မျာသကိုလည်သ ပဌန်လည်အသုံသပဌုနိုင်မည်ဖဌစ်သည်။

11. ထုတ်လုပ်မဟုကို စတင်ပဌီသနောက်၊

  • လုပ်ငန်သကို ထုတ်လုပ်မဟုအခဌေအနေ (Jira microservice) သို့ လလဟဲပဌောင်သထာသသည်။
  • Jenkins microservice သည် ဖဌန့်ကျက်မဟုလုပ်ငန်သစဉ်ကို စတင်ပဌီသ DeployWatch microservice အာသ ဖဌန့်ကျက်မဟုအကဌောင်သ အသိပေသသည်။
  • DeployWatch microservice သည် ထုတ်လုပ်ရေသရဟိ ကလန်တိန်နာမျာသအာသလုံသကို အပ်ဒိတ်လုပ်ပဌီသကဌောင်သ စစ်ဆေသသည် (အာသလုံသကို မလမ်သမံထာသသည့်အခါ ဖဌစ်ရပ်မျာသရဟိခဲ့သည်)။
  • Notify microservice မဟတဆင့်၊ ဖဌန့်ကျက်မဟု၏ရလဒ်မျာသအကဌောင်သ အသိပေသချက်ကို ထုတ်လုပ်ရေသသို့ ပေသပို့သည်။

12. Developer မျာသသည် မမဟန်ကန်သော microservice အပဌုအမူကို တလေ့ရဟိပါက Production မဟ လုပ်ဆောင်စရာတစ်ခုကို ပဌန်လည်စတင်ရန် မိနစ် 30 ကဌာမဌင့်မည်ဖဌစ်ပါသည်။ ကအချိန်ပဌီသနောက်၊ လုပ်ဆောင်စရာကို မာစတာ (Git microservice) အဖဌစ် အလိုအလျောက် ပေါင်သစပ်သလာသပါမည်။

13. အောင်မဌင်သော မာစတာအဖဌစ် ပေါင်သစည်သပဌီသနောက်၊ လုပ်ဆောင်စရာ အခဌေအနေအာသ Closed (Jira microservice) သို့ ပဌောင်သလဲသလာသပါမည်။

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

နောက်တစ်ခုကဘာလဲ

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

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

source: www.habr.com

မဟတ်ချက် Add