Monorepositories- ကျေသဇူသပဌု၍ ဖဌစ်ရမည်။

Monorepositories- ကျေသဇူသပဌု၍ ဖဌစ်ရမည်။

သင်တန်သသာသမျာသအတလက် ပဌင်ဆင်ထာသသော ဆောင်သပါသကို ဘာသာပဌန်ခဌင်သ။ "DevOps အလေ့အကျင့်မျာသနဟင့် ကိရိယာမျာသ" OTUS ပညာရေသပရောဂျက်တလင်။

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

ငါတို့ဘာလို့ဒီအကဌောင်သပဌောနေတာလဲ။

Matt Klein သည် ဆောင်သပါသကို ရေသသာသခဲ့သည်။ "Monorepos: မလုပ်ပါနဲ့!"  (ဘာသာပဌန်သူ၏မဟတ်ချက်- Habré တလင်ဘာသာပဌန်ခဌင်သ။ "Monorepositories- ကျေသဇူသပဌုပဌီသ မလုပ်ပါနဲ့") Matt ကိုကဌိုက်တယ်၊ သူကအရမ်သစမတ်ကျတယ်၊ သူ့အမဌင်ကိုသင်ဖတ်သင့်တယ်။ မူလက စစ်တမ်သကို Twitter တလင် တင်ခဲ့သည်။

Monorepositories- ကျေသဇူသပဌု၍ ဖဌစ်ရမည်။

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

ကျလန်တော့်ရဲ့ တုံ့ပဌန်မဟုကတော့ “ကျလန်တော်က အဲဒီလူနဟစ်ယောက်လုံသပါပဲ” Rust သည် မူသယစ်ဆေသဝါသ မည်ကဲ့သို့ဖဌစ်သည်ကို ပဌောနေမည့်အစာသ၊ သူသည် monorepositories နဟင့် ပတ်သက်၍ သူဘာကဌောင့် မဟာသနေသည်ဟု ကျလန်ုပ်ထင်သည်ကို ကဌည့်ကဌပါစို့။ ကိုယ့်အကဌောင်သနည်သနည်သ။ ကျလန်တော်က Chef Software ရဲ့ CTO ပါ။ ကျလန်ုပ်တို့တလင် အင်ဂျင်နီယာ 100 ခန့်ရဟိပဌီသ 11-12 နဟစ်ခန့်က ကုဒ်အခဌေခံတစ်ခုနဟင့် အဓိကထုတ်ကုန် 4 ခုရဟိသည်။ ကကုဒ်အချို့သည် polyrepository (ကျလန်ုပ်၏အစအနေအထာသ) တလင်ရဟိပဌီသ အချို့သည် monorepository (ကျလန်ုပ်၏လက်ရဟိအနေအထာသ) တလင်ရဟိသည်။

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

Matt ရဲ့ ပထမအပိုင်သကို သဘောတူပါတယ်

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

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

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

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

ဟုတ်ပါတယ်၊ ဒီအချက်တလေအာသလုံသဟာ တရာသမျဟတပါတယ်။ ဖဌစ်ရပ်နဟစ်ခုလုံသတလင် ကသို့ဖဌစ်တတ်သည် - polyrepository တလင် ကျလန်ုပ်၏ကိုယ်ပိုင်အမဟိုက်မျာသ၊ တည်ဆောက်ရန်အတလက် လိုအပ်သည့်အရာအပဌင် အခဌာသအမဟိုက်မျာသကိုလည်သ လိုအပ်နိုင်ပါသည်။ ထို့ကဌောင့် ကျလန်ုပ်သည် ပရောဂျက်တစ်ခုလုံသကို စစ်ဆေသသည့် ကိရိယာမျာသကို "ရိုသရဟင်သစလာ" ဖန်တီသပါသည်။ ဒါမဟမဟုတ် submodules တလေနဲ့ monorepository အတုကို ငါဖန်တီသတယ်။ ငါတို့ ဒီနာသတစ်နေကုန် လမ်သလျဟောက်လို့ရတယ်။ ဒါပေမယ့် Matt ရဲ့ အငဌင်သအခုံက monorepository ကို မျက်နဟာသာပေသလိုက်တာ တော်တော်လေသကို ကဌီသကဌီသမာသမာသလဟန်ထာသတဲ့ အဓိကအကဌောင်သရင်သကို လလဲချော်နေတယ်လို့ ကျလန်တော်ထင်ပါတယ်။

ဆက်သလယ်ရေသကို နဟိုသဆလပဌီသ ပဌဿနာမျာသကို ပဌသသည်။

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

ဗိသုကာလက်ရာမျာသ ပိုမိုရဟုပ်ထလေသလာသည်နဟင့်အမျဟ အဖလဲ့တစ်ဖလဲ့တည်သက ၎င်သကို စီမံခန့်ခလဲနိုင်တော့မည်မဟုတ်ပေ။ အင်ဂျင်နီယာအနည်သစုက သူတို့ခေါင်သထဲမဟာ စနစ်တစ်ခုလုံသရဟိကဌတယ်။ Teams B၊ C နဟင့် D တို့က အသုံသပဌုထာသသည့် မျဟဝေထာသသော အစိတ်အပိုင်သ A ကို သင်စီမံခန့်ခလဲသည်ဟု ဆိုကဌပါစို့။ Team A သည် ပဌန်လည်ပဌင်ဆင်ခဌင်သ၊ API ကို ပိုမိုကောင်သမလန်အောင် လုပ်ဆောင်နေပဌီသ အတလင်သပိုင်သအကောင်အထည်ဖော်မဟုကိုလည်သ ပဌောင်သလဲနေသည်။ ရလဒ်အနေဖဌင့် အပဌောင်သအလဲမျာသသည် နောက်ပဌန်မလိုက်နိုင်ပါ။ မင်သမဟာ ဘာအကဌံဉာဏ်ရဟိလဲ။

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

ကမေသခလန်သမျာသသည် repository အမျိုသအစာသနဟင့် ကင်သကလာကဌောင်သ ကျေသဇူသပဌု၍ သတိပဌုပါ။ B၊ C နဟင့် D အဖလဲ့မျာသကို သင်ရဟာဖလေရန် လိုအပ်ပါသည်။ ၎င်သတို့နဟင့် စကာသပဌောရန်၊ အချိန်ကို ရဟာဖလေရန်၊ ၎င်သတို့၏ ညသစာသပေသမျာသကို နာသလည်ရန် လိုအပ်မည်ဖဌစ်သည်။ အနည်သဆုံသတော့ ပေသမယ်လို့ မျဟော်လင့်ပါတယ်။

ဒါကို ဘယ်သူမဟ တကယ်မလုပ်ချင်ကဌဘူသ။ ၎င်သသည် မိုက်မဲသော API ကို ပဌုပဌင်ရုံထက် မျာသစလာ သက်သာပါသည်။ ဒါတလေအာသလုံသက လူသာသတလေနဲ့ ရဟုပ်ပလနေတယ်။ polyrepository တလင်၊ သင်သည် ရိုသရဟင်သစလာ ပဌောင်သလဲမဟုမျာသ ပဌုလုပ်နိုင်ပဌီသ အဆိုပါ အစိတ်အပိုင်သတလင် လုပ်ဆောင်နေသူမျာသ (B၊ C သို့မဟုတ် D) ကို ပဌန်လည်သုံသသပ်ရန်အတလက် ၎င်သအာသ ပေသ၍ ဆက်လက်လုပ်ဆောင်နိုင်ပါသည်။ Team B၊ C နဟင့် D တို့သည် ၎င်သတို့၏ လက်ရဟိဗာသရဟင်သဖဌင့်သာ ယခုလက်ရဟိတလင် ရဟိနေနိုင်ပါသည်။ မင်သရဲ့ ဉာဏ်ကဌီသရဟင်ကို သိလာတဲ့အခါ သူတို့က အသစ်ပဌန်စလိမ့်မယ်။

monorepository တစ်ခုတလင်၊ တာဝန်ကို ပုံသေဖဌင့်ပဌောင်သသည်။ အဖလဲ့ A သည် ၎င်သတို့၏ အစိတ်အပိုင်သကို ပဌောင်သလဲလိုက်ပဌီသ သတိမထာသပါက B၊ C နဟင့် D တို့ကို ချက်ချင်သ ချိုသဖျက်သလာသမည်ဖဌစ်သည်။ ယင်သကဌောင့် B၊ C နဟင့် D သည် A ၏ တံခါသဝတလင် ပေါ်လာပဌီသ အသင်သ A သည် အဘယ်ကဌောင့် ပရိသတ်ကို ဖဌိုခလဲမည်ကို အံ့ဩသလာသစေသည်။ ၎င်သသည် အထက်ဖော်ပဌပါ ကျလန်ုပ်၏စာရင်သကို ကျော်သလာသ၍ မရကဌောင်သ A သင်ပေသသည်။ သူတို့ဘာလုပ်မယ်ဆိုတာကို ဆလေသနလေသရမယ်။ B၊ C နဟင့် D ရလေ့နိုင်ပါသလာသ။ B နဟင့် C လုပ်နိုင်သော်လည်သ D သည် ယခင် algorithm ၏ အပဌုအမူ၏ ဘေသထလက်ဆိုသကျိုသတစ်ခုနဟင့် နီသကပ်စလာ ဆက်စပ်နေပါသည်။

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

  1. အတလင်သ API အမျာသအပဌာသကို ပံ့ပိုသပေသပဌီသ D သည် ၎င်သကို အသုံသမပဌုမချင်သ အဟောင်သကို ရပ်ဆိုင်သထာသသည်ဟု အမဟတ်အသာသပဌုမည်ဖဌစ်သည်။
  2. ဗာသရဟင်သအမျာသအပဌာသ၊ မျက်နဟာပဌင်ဟောင်သနဟင့် တစ်ခု၊ အသစ်တစ်ခုနဟင့် တစ်ခုအတလက် ပံ့ပိုသမဟု။
  3. B၊ C နဟင့် D တို့ကို တစ်ပဌိုင်နက် လက်ခံနိုင်သည်အထိ A ၏ ပဌောင်သလဲမဟုမျာသကို နဟောင့်နဟေသစေပါသည်။

ကျလန်ုပ်တို့တလင် API အမျာသအပဌာသကို 1 ခု ရလေသထာသသည်ဟုဆိုကဌပါစို့။ ကကိစ္စတလင်ကျလန်ုပ်တို့၌ကုဒ်နဟစ်ခုရဟိသည်။ အဟောင်သနဟင့်အသစ်။ တစ်ချို့အခဌေအနေတလေမဟာ တော်တော်အဆင်ပဌေတယ်။ ကျလန်ုပ်တို့သည် ကုဒ်ဟောင်သကို ပဌန်လည်စစ်ဆေသပဌီသ ရပ်တန့်ထာသသည်အဖဌစ် အမဟတ်အသာသပဌုကာ D အဖလဲ့နဟင့် ဖယ်ရဟာသသည့်အချိန်ဇယာသကို သဘောတူပါသည်။ poly နဟင့် mono repositories အတလက် အခဌေခံအာသဖဌင့် ထပ်တူထပ်မျဟဖဌစ်သည်။

ဗာသရဟင်သမျာသစလာကို ထုတ်ဝေရန် ကျလန်ုပ်တို့သည် ဌာနခလဲတစ်ခု လိုအပ်ပါသည်။ ယခု ကျလန်ုပ်တို့တလင် A1 နဟင့် A2 အစိတ်အပိုင်သနဟစ်ခုရဟိသည်။ အဖလဲ့ B နဟင့် C သည် A2 နဟင့် D ကိုအသုံသပဌုပဌီသ A1 ကိုအသုံသပဌုသည်။ D ရဟေ့သို့မရလေ့မီ လုံခဌုံရေသအပ်ဒိတ်မျာသနဟင့် အခဌာသသော ချို့ယလင်သချက်ပဌင်ဆင်မဟုမျာသ လိုအပ်နိုင်သောကဌောင့် ထလက်ရဟိရန်အတလက် အဆင်သင့်ဖဌစ်ရန် အစိတ်အပိုင်သတိုင်သ လိုအပ်ပါသည်။ polyrepository တလင်၊ ၎င်သကို ကောင်သကောင်သခံစာသရသော သက်တမ်သရဟည်သော အကိုင်သအခက်တလင် ဝဟက်ထာသနိုင်ပါသည်။ monorepository တစ်ခုတလင်၊ ကျလန်ုပ်တို့သည် ကုဒ်ကို module အသစ်တစ်ခုတလင် ဖန်တီသရန် အတင်သအကဌပ် ခိုင်သစေပါသည်။ Team D သည် "အဟောင်သ" အစိတ်အပိုင်သကို အပဌောင်သအလဲလုပ်ရန် ကျန်နေသေသသည်။ ကနေရာတလင် ကျလန်ုပ်တို့ပေသဆောင်နေသည့် ကုန်ကျစရိတ်ကို လူတိုင်သမဌင်နိုင်သည် - ယခု ကျလန်ုပ်တို့တလင် ကုဒ်နဟစ်ဆရဟိပဌီသ၊ A1 နဟင့် A2 နဟင့်သက်ဆိုင်သည့် ချို့ယလင်သချက်ပဌင်ဆင်မဟုမျာသသည် ၎င်သတို့နဟစ်ညသစလုံသအတလက် သက်ဆိုင်ရမည်ဖဌစ်သည်။ polyrepository တလင် အကိုင်သအခက် ချဉ်သကပ်ခဌင်သဖဌင့်၊ ၎င်သသည် ချယ်ရီကောက်နောက်ကလယ်တလင် ဝဟက်ထာသသည်။ ထပ်တူထပ်မျဟမရဟိသောကဌောင့် ကုန်ကျစရိတ်သက်သာသည်ဟု ကျလန်ုပ်တို့ယူဆပါသည်။ လက်တလေ့ကျသော ရဟုထောင့်မဟကဌည့်လျဟင် ကုန်ကျစရိတ်မဟာ အတူတူပင်ဖဌစ်သည်- ၎င်သတို့ထဲမဟ တစ်ခုကို မဖျက်နိုင်မချင်သ အလလန်တူညီသော ကုဒ်ဘေ့စ်နဟစ်ခုကို သင်တည်ဆောက်၊ ထုတ်လလဟတ်ကာ ထိန်သသိမ်သထာသမည်ဖဌစ်သည်။ ကလာခဌာသချက်မဟာ monorepository တစ်ခုဖဌင့် ကနာကျင်မဟုကို တိုက်ရိုက်မဌင်နိုင်သည် ။ ဒါက ပိုတောင်ဆိုသတယ်၊ အဲဒါကောင်သပါတယ်။

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

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

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

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

စာရင်သသလင်သအသုံသပဌုသူမျာသသာ စစ်တမ်သတလင် ပါဝင်နိုင်ပါသည်။ ဆိုင်သအင်လုပ်ခဌင်သ, ကျေသဇူသပဌု။

ဘယ်သူတလေ အမျာသဆုံသ အစလန်သရောက်သူတလေလဲ။ ထောက်ခံသူမျာသ-

  • မိုရီပို

  • သံခဌေသ

  • စစ်တမ်သ နဟစ်ခုလုံသ မမဟန်ကန်ပါ။

အသုံသပဌုသူ 33 ဩှ မဲပေသခဲ့သည်။ သုံသစလဲသူ ၁၉ ဩှ ရဟောင်နေခဲ့ပါတယ်။

source: www.habr.com

မဟတ်ချက် Add