Microservices - ဗာသရဟင်သမျာသ၏ပေါင်သစပ်ပေါက်ကလဲမဟု

မင်္ဂလာပါ Habr။ မင်သရဲ့အာရုံကို ငါတင်ပဌတယ်။ ဆောင်သပါသ၏စာရေသဆရာ၏ဘာသာပဌန် Microservices - ဗာသရဟင်သမျာသ၏ ပေါင်သစပ်ပေါက်ကလဲမဟု.
Microservices - ဗာသရဟင်သမျာသ၏ပေါင်သစပ်ပေါက်ကလဲမဟု
အိုင်တီလောကသည် Kubernetes ကဲ့သို့သော အသေသစာသဝန်ဆောင်မဟုမျာသနဟင့် ကိရိယာမျာသဆီသို့ တဖဌည်သဖဌည်သရလေ့လျာသလာနေသည့်အချိန်တလင် ပဌဿနာတစ်ခုသာ ပို၍သိသာလာသည်။ ဒီပဌဿနာ- ပေါင်သစပ်ပေါက်ကလဲမဟု microservice ဗာသရဟင်သမျာသ။ သို့တိုင် အိုင်တီအသိုင်သအဝိုင်သက လက်ရဟိအခဌေအနေထက် မျာသစလာပိုကောင်သသည်ဟု ယုံကဌည်ကဌသည်။ "မဟီခိုငရဲ" ယခင်မျိုသဆက်နည်သပညာမျာသ။ သို့သော်၊ microservices မျာသကို ဗာသရဟင်သပဌောင်သခဌင်သသည် အလလန်ရဟုပ်ထလေသသော ပဌဿနာဖဌစ်သည်။ သက်သေပဌချက်တစ်ခုမဟာ ဆောင်သပါသမျာသကဲ့သို့ ဖဌစ်နိုင်ပါသည်။ "ငါ့ကို ငါ့ monolith ပဌန်ပေသပါ".

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

နာသလည်မဟုလလဲမဟာသနေသေသရင် သင်္ချာကို ခလဲပါရစေ။ ထို့ကဌောင့် ကျလန်ုပ်တို့တလင် အသေသစာသဝန်ဆောင်မဟု ၁၀ ​​ခုရဟိပဌီသ တစ်ခုစီတလင် အပ်ဒိတ်တစ်ခုစီ ရရဟိသည်။ ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့သည် microservice တစ်ခုစီအတလက် ဖဌစ်နိုင်ချေ ဗာသရဟင်သ 10 ခု (အဟောင်သဖဌစ်စေ၊ အသစ်ဖဌစ်စေ)။ ယခု၊ ထုတ်ကုန်အစိတ်အပိုင်သတစ်ခုစီအတလက်၊ ကျလန်ုပ်တို့သည် ကဗာသရဟင်သနဟစ်မျိုသထဲမဟ တစ်ခုခုကို အသုံသပဌုနိုင်သည်။ သင်္ချာနည်သအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် ဂဏန်သ 2 လုံသရဟိ ဒလိစုံဂဏန်သမျာသ နဟင့် တူညီပါသည်။ ဥပမာအာသဖဌင့်၊ 10 သည် ဗာသရဟင်သအသစ်ဖဌစ်ပဌီသ 1 သည် ဗာသရဟင်သဟောင်သဖဌစ်သည်ဆိုပါစို့ - ထို့နောက် ဖဌစ်နိုင်ချေရဟိသော ပဌောင်သလဲမဟုတစ်ခုကို 0 ဟု ရည်ညလဟန်သနိုင်သည် - 1001000000st နဟင့် 1th အစိတ်အပိုင်သမျာသကို အပ်ဒိတ်လုပ်ထာသပဌီသ အခဌာသအရာအာသလုံသမဟုတ်သည့်နေရာဖဌစ်သည်။ ဂဏန်သ 4 လုံသ ဒလိစုံဂဏန်သတစ်ခုတလင် 10^2 သို့မဟုတ် 10 တန်ဖိုသမျာသ ရဟိနိုင်သည်ကို သင်္ချာပညာမဟ သိရဟိပါသည်။ ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့နဟင့် ဆက်ဆံနေသော အရေအတလက်၏ အတိုင်သအတာကို အတည်ပဌုပဌီသဖဌစ်သည်။

ကျလန်ုပ်တို့၏ ကျိုသကဌောင်သဆင်ခဌင်မဟုကို ဆက်လက်လုပ်ဆောင်ကဌပါစို့ - ကျလန်ုပ်တို့တလင် မိုက်ခရိုဝန်ဆောင်မဟု 100 ရဟိပဌီသ တစ်ခုချင်သစီတလင် ဖဌစ်နိုင်သည့် ဗာသရဟင်သ 10 ခုရဟိလျဟင် ဘာဖဌစ်နိုင်မည်နည်သ။ အခဌေအနေတစ်ခုလုံသသည် အဆင်မပဌေဖဌစ်လာသည် - ယခု ကျလန်ုပ်တို့တလင် 10^100 ပဌောင်သလဲမဟုမျာသရဟိသည် - မျာသပဌာသလဟသောအရေအတလက်ဖဌစ်သည်။ သို့သော်လည်သ၊ ယခု ကျလန်ုပ်တို့သည် "kubernetes" ကဲ့သို့သော စကာသလုံသမျာသ၏ နောက်ကလယ်တလင် ပုန်သအောင်သမနေတော့ဘဲ ပဌဿနာကို ရင်ဆိုင်နေရသောကဌောင့် ကအခဌေအနေကို ကနည်သဖဌင့် တံဆိပ်ကပ်ရန် ကျလန်ုပ်နဟစ်သက်ပါသည်။

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

DevOps နဟင့် microservices ၏ကမ္ဘာသို့ ပဌန်သလာသကဌပါစို့။ Kunstkamera တလင် ဆင်တစ်ကောင်ကဲ့သို့ ဟန်ဆောင်ကာ ကဌီသမာသသောပဌဿနာတစ်ခုနဟင့် ကျလန်ုပ်တို့ရင်ဆိုင်နေကဌရသည် - ကျလန်ုပ်မကဌာခဏကဌာသနေရသောအရာမဟာ "ကူဘာနက်နဟင့် ပဲ့စင်ကို ယူလိုက်ပါ၊ အာသလုံသအဆင်ပဌေသလာသမဟာပါ!" ဒါပေမယ့် မဟုတ်ဘူသ၊ အရာအာသလုံသဟာ အရင်အတိုင်သပဲ ကျန်ခဲ့မယ်ဆိုရင် အရာအာသလုံသက အဆင်ပဌေမဟာ မဟုတ်ပါဘူသ။ ထို့အပဌင်၊ ကပဌဿနာအတလက် ခလဲခဌမ်သစိတ်ဖဌာသည့် အဖဌေတစ်ခုသည် ၎င်သ၏ ရဟုပ်ထလေသမဟုကဌောင့် လက်ခံနိုင်ပုံမပေါ်ပေ။ NLP တလင်ကဲ့သို့ပင်၊ ကျလန်ုပ်တို့သည် ရဟာဖလေမဟုနယ်ပယ်ကို ကျဉ်သမဌောင်သစေခဌင်သဖဌင့် ကပဌဿနာကို ညသစလာချဉ်သကပ်သင့်သည်—ကကိစ္စတလင်၊ ခေတ်မမီတော့သော ပဌောင်သလဲမဟုမျာသကို ဖယ်ရဟာသခဌင်သဖဌင့်၊

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

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

ထိုသို့သောစမ်သသပ်မဟုစနစ်သည် ကကဲ့သို့ဖဌစ်နိုင်သည်-

  1. ဆော့ဖ်ဝဲရေသသာသသူမျာသသည် စာမေသပလဲမျာသရေသသည် (၎င်သသည် အရေသကဌီသသောအဆင့်ဖဌစ်သည် - မဟုတ်ပါက ကျလန်ုပ်တို့တလင် အကဲဖဌတ်မဟုစံနဟုန်သမရဟိသောကဌောင့် - ၎င်သသည် စက်သင်ယူမဟုတလင် ဒေတာတံဆိပ်တပ်ခဌင်သနဟင့်တူသည်)။
  2. အစိတ်အပိုင်သတစ်ခုစီ (ပရောဂျက်) သည် ၎င်သ၏ကိုယ်ပိုင် CI စနစ်ကို လက်ခံရရဟိသည် - ကလုပ်ငန်သစဉ်သည် ယခုအခါ ကောင်သမလန်စလာ ဖလံ့ဖဌိုသလာခဲ့ပဌီသ အစိတ်အပိုင်သတစ်ခုအတလက် CI စနစ်တစ်ခု ဖန်တီသခဌင်သဆိုင်ရာ ပဌဿနာကို ကဌီသမာသစလာ ဖဌေရဟင်သပဌီသဖဌစ်သည်။
  3. "စမတ်ပေါင်သစပ်မဟုစနစ်" သည် အမျိုသမျိုသသော CI စနစ်မျာသ၏ ရလဒ်မျာသကို စုဆောင်သပဌီသ နောက်ဆုံသထုတ်ကုန်အဖဌစ် အစိတ်အပိုင်သပရောဂျက်မျာသကို စုစည်သကာ စမ်သသပ်မဟုကို လုပ်ဆောင်ကာ နောက်ဆုံသတလင် ရဟိပဌီသသာသအစိတ်အပိုင်သမျာသနဟင့် အန္တရာယ်အချက်မျာသအပေါ် အခဌေခံ၍ အလိုရဟိသောထုတ်ကုန်လုပ်ဆောင်နိုင်စလမ်သရရဟိရန် အတိုဆုံသလမ်သကဌောင်သကို တလက်ချက်ပေသပါသည်။ အပ်ဒိတ်တစ်ခုမဖဌစ်နိုင်ပါက၊ ကစနစ်သည် ရဟိပဌီသသာသအစိတ်အပိုင်သမျာသနဟင့် မည်သည့်အရာက အမဟာသအယလင်သဖဌစ်စေကဌောင်သ ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသအာသ အသိပေသသည်။ တစ်ဖန်၊ ပေါင်သစည်သမဟုစနစ်သည် စာမေသပလဲမျာသကို အကဲဖဌတ်မဟုစံနဟုန်သတစ်ခုအဖဌစ် အသုံသပဌုသောကဌောင့် ကနေရာတလင် စမ်သသပ်မဟုစနစ်သည် အလလန်အရေသကဌီသပါသည်။
  4. ထို့နောက် Smart Integration System မဟ ဒေတာမျာသကို လက်ခံရရဟိပဌီသ အပ်ဒိတ်ကို တိုက်ရိုက်လုပ်ဆောင်ပေသသည့် CD စနစ်။ ကအဆင့်သည် သံသရာကို အဆုံသသတ်သည်။

အကျဉ်သချုပ်ပဌောရလျဟင် ကျလန်ုပ်အတလက် ယခုအကဌီသမာသဆုံသပဌဿနာတစ်ခုမဟာ ထုတ်ကုန်တစ်ခုသို့ အစိတ်အပိုင်သအမျိုသမျိုသကို ချိတ်ဆက်ပေသမည့် "Smart Integration System" မရဟိခဌင်သကဌောင့် ထုတ်ကုန်တစ်ခုလုံသကို မည်သို့ပေါင်သစပ်ထာသသည်ကို ခဌေရာခံနိုင်မည်ဖဌစ်သည်။ ဒီအပေါ် အသိုင်သအဝိုင်သရဲ့ အတလေသအမဌင်တလေကို ကျလန်တော် စိတ်ဝင်စာသမယ် (spoiler - ကျလန်တော် လက်ရဟိ ပရောဂျက်တစ်ခု လုပ်နေပါတယ် Relizaထိုကဲ့သို့ စမတ်ကျသော ပေါင်သစည်သမဟုစနစ် ဖဌစ်လာနိုင်သည်)။

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

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

source: www.habr.com

မဟတ်ချက် Add