microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။

မင်္ဂလာပါ! ကျလန်ုပ်၏အမည်မဟာ Vadim Madison ဖဌစ်ပဌီသ Avito System Platform ဖလံ့ဖဌိုသတိုသတက်ရေသကို ညသဆောင်ပါသည်။ ကုမ္ပဏီမဟ ကျလန်ုပ်တို့သည် monolithic ဗိသုကာလက်ရာမဟ microservices တစ်ခုသို့ မည်ကဲ့သို့ ရလေ့ပဌောင်သမည်ကို တစ်ကဌိမ်ထက်ပို၍ ပဌောကဌာသထာသသည်။ မိုက်ခရိုဝန်ဆောင်မဟုမျာသမဟ အကောင်သဆုံသရယူပဌီသ ၎င်သတို့တလင် မပျောက်ကလယ်သလာသစေရန် ကျလန်ုပ်တို့၏အခဌေခံအဆောက်အအုံကို မည်သို့ပဌောင်သလဲခဲ့သည်ကို မျဟဝေရန် အချိန်ကျရောက်ပဌီဖဌစ်သည်။ ကနေရာတလင် PaaS က ကျလန်ုပ်တို့ကို ကူညီပေသပုံ၊ ဖဌန့်ကျက်မဟုကို ရိုသရဟင်သအောင်ပဌုလုပ်နည်သနဟင့် microservice ဖန်တီသမဟုကို တစ်ချက်နဟိပ်ရုံဖဌင့် လျဟော့ချနည်သ - ဆက်ဖတ်ပါ။ အောက်တလင်ကျလန်တော်ရေသထာသသောအရာအာသလုံသသည် Avito တလင်အပဌည့်အဝအကောင်အထည်ဖော်သည်မဟုတ်ပါ၊ အချို့သည်ကျလန်ုပ်တို့၏ပလပ်ဖောင်သကိုတည်ဆောက်ပုံဖဌစ်သည်။

(ကဆောင်သပါသ၏အဆုံသတလင်၊ microservice ဗိသုကာပညာရဟင် Chris Richardson မဟသုံသရက်ကဌာဆလေသနလေသပလဲသို့တက်ရောက်ရန်အခလင့်အရေသအကဌောင်သပဌောပါမည်။

microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။

ကျလန်ုပ်တို့သည် မိုက်ခရိုဝန်ဆောင်မဟုမျာသသို့ မည်သို့ရောက်လာသနည်သ။

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

ကျလန်ုပ်တို့သည် မိုက်ခရိုဝန်ဆောင်မဟုဗိသုကာကို တည်ဆောက်နေသည်မဟာ နဟစ်အတော်ကဌာနေပဌီဖဌစ်သည်။ အတိအကျ - ကျလန်ုပ်တို့၏လုပ်ဖော်ကိုင်ဖက်မျာသကိုအတိအကျမည်မျဟ ပဌောတယ် RIT++ 2017 ရဟိ ကျလန်ုပ်တို့၏ကဏ္ဍတလင်၊ CodeFest 2017 တလင် (ကဌည့်ပါ။ вОЎеП) Sergey Orlov နဟင့် Mikhail Prokopchuk တို့က အဘယ်ကဌောင့် ကျလန်ုပ်တို့သည် မိုက်ခရိုဝန်ဆောင်မဟုမျာသသို့ ကူသပဌောင်သရန်လိုအပ်ကဌောင်သနဟင့် Kubernetes က ကနေရာတလင် အဘယ်အခန်သကဏ္ဍမဟ ပါဝင်ခဲ့သည်ကို အသေသစိတ်ရဟင်သပဌခဲ့သည်။ ကောင်သပဌီ၊ ယခု ကျလန်ုပ်တို့သည် ထိုသို့သော ဗိသုကာတစ်ခုတလင် မလေသရာပါရဟိသည့် အတိုင်သအတာကုန်ကျစရိတ်မျာသကို လျဟော့ချရန် အရာအာသလုံသကို လုပ်ဆောင်နေပါသည်။

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

microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။

ယခု PaaS CLI utility တလင်၊ ဝန်ဆောင်မဟုအသစ်တစ်ခုကို command တစ်ခုတည်သဖဌင့် ဖန်တီသထာသပဌီသ ဒေတာဘေ့စ်အသစ်တစ်ခုကို နောက်ထပ်နဟစ်ခုထပ်ထည့်ကာ Stage သို့ ဖဌန့်ကျက်ထာသသည်။

microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။

Microservice fragmentation ခေတ်ကို ဘယ်လိုကျော်လလဟာသမလဲ၊

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

ထို့အပဌင်၊ မိုက်ခရိုဆာသဗစ်ဗိသုကာတစ်ခု ထိရောက်စေရန်အတလက်၊ လုပ်ငန်သစဉ်မျာသစလာကို ထူထောင်ရန် လိုအပ်သည်-

• သစ်ခုတ်ခဌင်သ၊
• ခဌေရာခံခဌင်သ (Jaeger);
• အမဟာသစုစည်သမဟု (Sentry);
• Kubernetes (Event Stream Processing) မဟ အခဌေအနေမျာသ၊ မက်ဆေ့ချ်မျာသ၊
• ပဌိုင်ပလဲကန့်သတ်ချက် / circuit breaker (သင် Hystrix ကိုသုံသနိုင်သည်);
• ဝန်ဆောင်မဟုချိတ်ဆက်မဟုကို ထိန်သချုပ်ခဌင်သ (ကျလန်ုပ်တို့သည် Netramesh ကိုအသုံသပဌုသည်)။
• စောင့်ကဌည့်ရေသ (Grafana);
• စည်သဝေသပလဲ (TeamCity);
• ဆက်သလယ်ရေသနဟင့် အသိပေသချက် (Slack၊ အီသမေသလ်);
•အလုပ်ခဌေရာခံ; (Jira)
• စာရလက်စာတမ်သပဌင်ဆင်ခဌင်သ။

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

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

Avito microservices အမျာသအပဌာသကဌာသတလင် တစ်စုတစ်စည်သတည်သ "ပါတီမူဝါဒ" ကို အကောင်အထည်ဖော်ရန် အောက်ပါအကူအညီ။

  • အခဌေခံအဆောက်အညမျာသကို အလလဟာမျာသခလဲခဌင်သ၊
  • ဝန်ဆောင်မဟုအဖဌစ် ပလပ်ဖောင်သ (PaaS) အယူအဆ၊
  • မိုက်ခရိုဝန်ဆောင်မဟုမျာသဖဌင့် ဖဌစ်ပျက်သမျဟကို စောင့်ကဌည့်ခဌင်သ။

Infrastructure abstraction အလလဟာတလင် အလလဟာသုံသလလဟာ ပါဝင်သည်။ အပေါ်ကနေ အောက်ကို သလာသရအောင်။

A. ထိပ်တန်သ - ဝန်ဆောင်မဟုကလက်။ အစပိုင်သတလင် ကျလန်ုပ်တို့သည် Istio ကို စမ်သသုံသကဌည့်သော်လည်သ ၎င်သသည် ကျလန်ုပ်တို့၏ volumes မျာသအတလက် အလလန်စျေသကဌီသသော အရင်သအမဌစ်မျာသစလာကို အသုံသပဌုကဌောင်သ တလေ့ရဟိရပါသည်။ ထို့ကဌောင့် ဗိသုကာအဖလဲ့မဟ အကဌီသတန်သအင်ဂျင်နီယာ Alexander Lukyanchenko သည် သူ၏ကိုယ်ပိုင်ဖဌေရဟင်သချက်ကို တီထလင်ခဲ့သည်- Netramesh (Open Source တလင်ရနိုင်သည်)၊ ကျလန်ုပ်တို့သည် ထုတ်လုပ်ရေသတလင် လက်ရဟိအသုံသပဌုနေပဌီသ Istio ထက် အဆမျာသစလာနည်သသော အရင်သအမဌစ်မျာသကို စာသသုံသသည် (သို့သော် Istio ကဌလာသလုံသထုတ်နိုင်သည့် အရာအာသလုံသကို မလုပ်ပါ)။
B. အလတ်စာသ - Kubernetes။ ၎င်သပေါ်တလင် ကျလန်ုပ်တို့သည် မိုက်ခရိုဝန်ဆောင်မဟုမျာသကို အသုံသချပဌီသ လုပ်ဆောင်ပါသည်။
ဂ။ အောက်ခဌေ - သတ္တုဗလာ။ ကျလန်ုပ်တို့သည် OpenStack ကဲ့သို့သော တိမ်မျာသ သို့မဟုတ် အရာမျာသကို မသုံသသော်လည်သ သတ္တုဗလာကို လုံသ၀ အာသကိုသပါသည်။

အလလဟာအာသလုံသကို PaaS ဖဌင့် ပေါင်သစပ်ထာသသည်။ ပဌီသတော့ ဒီပလပ်ဖောင်သမဟာ အပိုင်သသုံသပိုင်သ ပါဝင်ပါတယ်။

I. မီသစက်မျာသCLI utility မဟတဆင့်ထိန်သချုပ်ထာသသည်။ developer သည် microservice တစ်ခုကို မဟန်ကန်သောနည်သဖဌင့် ဖန်တီသပဌီသ အနည်သဆုံသ ကဌိုသစာသအာသထုတ်မဟုဖဌင့် ကူညီပေသသူဖဌစ်သည်။

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

III သိုလဟောင်မဟု. သိသာထင်ရဟာသသောလုပ်ဆောင်ချက်မျာသအတလက် အစပျိုသမဟုမျာသကို အလိုအလျောက်သတ်မဟတ်ပေသသည့် အချိန်ဇယာသဆလဲသူမျာသနဟင့် ချိတ်ဆက်သည်။ ထိုသို့သောစနစ်ကဌောင့် Jira တလင်တစ်စုံတစ်ညသမဟလုပ်ဆောင်ရန်မေ့သလာသသောကဌောင့်လုပ်ဆောင်စရာတစ်ခုမျဟမလလတ်သလာသပါ။ ၎င်သအတလက် ကျလန်ုပ်တို့သည် Atlas ဟုခေါ်သော စက်တလင်သတူသလ်ကို အသုံသပဌုသည်။

microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။

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

Standard Microservice Development pipeline သည် မည်သို့အလုပ်လုပ်သနည်သ။

ယေဘုယျအာသဖဌင့်၊ microservice ဖန်တီသမဟု ကလင်သဆက်သည် ကကဲ့သို့ ဖဌစ်သည်-

CLI-push → ဆက်တိုက်ပေါင်သစည်သခဌင်သ → ဖုတ် → အသုံသချခဌင်သ → အတုစမ်သသပ်မဟုမျာသ → ကိန္နရီစမ်သသပ်မဟုမျာသ → ညဟစ်စမ်သသပ်ခဌင်သ → ထုတ်လုပ်မဟု → ပဌုပဌင်ထိန်သသိမ်သခဌင်သ။

ကအစီအစဥ်အတိုင်သ တိတိကျကျ ဖဌတ်သန်သကဌပါစို့။

CLI-တလန်သ

• အသေသစာသဝန်ဆောင်မဟုတစ်ခု ဖန်တီသခဌင်သ။.
developer တိုင်သကို microservices လုပ်နည်သသင်ပေသရန် အချိန်အတော်ကဌာအောင် ရုန်သကန်ခဲ့ရသည်။ ယင်သတလင် မဌစ်ဆုံတလင် အသေသစိတ် ညလဟန်ကဌာသချက်မျာသ ရေသသာသခဌင်သ ပါဝင်သည်။ ဒါပေမယ့် အစီအစဥ်တလေ ပဌောင်သလဲပဌီသ အာသဖဌည့်ပေသခဲ့တယ်။ ရလဒ်မဟာ ခရီသအစတလင် ပိတ်ဆို့မဟုတစ်ခု ပေါ်လာသည်- မိုက်ခရိုဝန်ဆောင်မဟုမျာသကို စတင်ရန် အချိန်မျာသစလာယူခဲ့ရပဌီသ ၎င်သတို့၏ ဖန်တီသမဟုအတလင်သ ပဌဿနာမျာသ မကဌာခဏ ပေါ်ပေါက်နေဆဲဖဌစ်သည်။

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

— ပုံစံခလက်တစ်ခုအရ ဝန်ဆောင်မဟုတစ်ခုကို ဖန်တီသသည် — အဆင့်ဆင့်၊ “wizard” မုဒ်တလင်။ Avito နောက်ခံတလင် PHP၊ Golang နဟင့် Python တို့တလင် အဓိကပရိုဂရမ်သမင်သဘာသာစကာသမျာသအတလက် နမူနာပုံစံမျာသရဟိသည်။

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

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

- ၎င်သသည် တိုက်ရိုက်စည်သဝေသပလဲကို ကိုယ်တိုင်လုပ်ဆောင်သည်။ ဆော့ဖ်ဝဲအင်ဂျင်နီယာတစ်ညသသည် ၎င်သ၏ IDE မဟတစ်ဆင့် မိုက်ခရိုဝန်ဆောင်မဟုတစ်ခုတလင် တစ်ခုခုကို ပဌုပဌင်ခဲ့သည်ဆိုကဌပါစို့။ utility သည် ဖိုင်စနစ်အတလင်သ အပဌောင်သအလဲမျာသကို မဌင်တလေ့ရပဌီသ ၎င်သတို့အပေါ် အခဌေခံ၍ အပလီကေသရဟင်သ (Golang အတလက်) ကို ပဌန်လည်တည်ဆောက်ပဌီသ ပဌန်လည်စတင်သည်။ PHP အတလက်၊ ကျလန်ုပ်တို့သည် cube အတလင်သရဟိ directory ကို ရိုသရဟင်သစလာ ပေသပို့ပဌီသ တိုက်ရိုက်ပဌန်တင်ခဌင်သကို "အလိုအလျောက်" ရရဟိပါသည်။

- အလိုအလျောက်စမ်သသပ်မဟုမျာသကို ပဌုလုပ်ပေသသည်။ ကလက်လပ်ပုံစံဖဌစ်သော်လည်သ အသုံသပဌုရန်အတော်လေသသင့်လျော်သည်။

• Microservice ဖဌန့်ကျက်ခဌင်သ။.

မိုက်ခရိုဆာသဗစ်ကို ဖဌန့်ကျက်ခဌင်သသည် ကျလန်ုပ်တို့အတလက် အဆင်မပဌေဖဌစ်ခဲ့ဖူသသည်။ အောက်ပါတို့ကို လိုအပ်သည်-

I. Dockerfile။

II ပဌင်ဆင်မဟု။
III ခက်ခက်ခဲခဲနဟင့် ပါဝင်သည့် ညသမုံဇယာသ၊

- ဇယာသမျာသကိုယ်တိုင်;
- ပုံစံမျာသ;
— မတူညီသောပတ်ဝန်သကျင်မျာသကိုထည့်သလင်သစဉ်သစာသသောတိကျသောတန်ဖိုသမျာသ။

Kubernetes manifests မျာသကို ပဌန်လည်ပဌုပဌင်ခဌင်သမဟ နာကျင်မဟုကို ကျလန်ုပ်တို့ ဖယ်ရဟာသခဲ့ပဌီသဖဌစ်သောကဌောင့် ၎င်သတို့ကို ယခု အလိုအလျောက် ထုတ်ပေသပါသည်။ သို့သော် အရေသအကဌီသဆုံသမဟာ၊ ၎င်သတို့သည် ဖဌန့်ကျက်မဟုကို ကန့်သတ်ချက်အထိ ရိုသရဟင်သစေသည်။ ယခုမဟစ၍ ကျလန်ုပ်တို့တလင် Dockerfile တစ်ခုရဟိပဌီသ developer မဟ config တစ်ခုလုံသကို app.toml ဖိုင်တိုတစ်ခုတည်သတလင် ရေသပေသပါသည်။

microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။

ဟုတ်ကဲ့၊ app.toml ကိုယ်တိုင်က တစ်မိနစ်လောက် လုပ်စရာမရဟိပါဘူသ။ ကျလန်ုပ်တို့သည် ဝန်ဆောင်မဟုပေသမည့်နေရာနဟင့် မည်မျဟမိတ္တူမျာသကို သတ်မဟတ်ပေသသည် ( dev ဆာဗာတလင်၊ အဆင့်မဌဟင့်တင်မဟု၊ ထုတ်လုပ်မဟုတလင်) နဟင့် ၎င်သ၏မဟီခိုမဟုမျာသကို ညလဟန်ပဌပါသည်။ [အင်ဂျင်] ဘလောက်ရဟိ လိုင်သအရလယ်အစာသ = "small" ကို သတိပဌုပါ။ ၎င်သသည် Kubernetes မဟတစ်ဆင့် ဝန်ဆောင်မဟုအတလက် ခလဲဝေပေသမည့် ကန့်သတ်ချက်ဖဌစ်သည်။

ထို့နောက် config ကိုအခဌေခံ၍ လိုအပ်သော Helm ဇယာသမျာသအာသလုံသကို အလိုအလျောက်ထုတ်ပေသပဌီသ ဒေတာဘေ့စ်မျာသနဟင့်ချိတ်ဆက်မဟုမျာသကို ဖန်တီသပါသည်။

• အခဌေခံအတည်ပဌုချက်။ ထိုသို့သောစစ်ဆေသမဟုမျာသသည်လည်သ အလိုအလျောက်ဖဌစ်သည်။
ခဌေရာခံရန် လိုအပ်သည်-
- Dockerfile ရဟိပါသလာသ။
— app.toml ရဟိပါသလာသ။
- စာရလက်စာတမ်သရဟိပါသလာသ။
- မဟီခိုမဟုဟာ အစဉ်လိုက်ရဟိလာသ။
- သတိပေသချက်စည်သမျဉ်သမျာသ သတ်မဟတ်ပဌီသပဌီလာသ။
နောက်ဆုံသအချက်အနေဖဌင့်- ဝန်ဆောင်မဟုပိုင်ရဟင်သည် မည်သည့်ထုတ်ကုန်မက်ထရစ်မျာသကို စောင့်ကဌည့်ရန် ဆုံသဖဌတ်သည်။

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

I. ဝန်ဆောင်မဟု၏ အကျဉ်သချုပ်ဖော်ပဌချက်. ၎င်သကိုဘာကဌောင့်လိုအပ်ကဌောင်သနဟင့် ၎င်သကိုဘာကဌောင့်လိုအပ်ကဌောင်သ စာသာသအနည်သငယ်ဖော်ပဌသည်။

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

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

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

V. API အတလက် အဆုံသမဟတ်မျာသ၏ ဖော်ပဌချက်. သင်သလာသမည့်နေရာမျာသကို ရုတ်တရက်မသတ်မဟတ်ပါက၊ သင့်လုပ်ငန်သနဟင့်ပတ်သက်သည့် microservices ၏လုပ်ဖော်ကိုင်ဖက်မျာသသည် ၎င်သအတလက် သေချာပေါက်နီသပါသပေသချေလိမ့်မည်။ ယခု ကျလန်ုပ်တို့သည် Swagger ကိုအသုံသပဌုပဌီသ ကအတလက် အတိုချုံသဟုခေါ်သော ကျလန်ုပ်တို့၏ဖဌေရဟင်သချက်ကို အသုံသပဌုပါသည်။

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

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

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

စဉ်ဆက်မပဌတ်ပေါင်သစည်သရေသ

  • သိုလဟောင်မဟုမျာသကို ပဌင်ဆင်နေပါသည်။
  • TeamCity တလင် ပိုက်လိုင်သတစ်ခု ဖန်တီသခဌင်သ။
  • အခလင့်အရေသ သတ်မဟတ်ခဌင်သ။
  • ဝန်ဆောင်မဟုပိုင်ရဟင်မျာသကို ရဟာဖလေပါ။ ကနေရာတလင် ဟိုက်ဘရစ်အစီအစဥ်တစ်ခု ရဟိသည် - လက်ဖဌင့်အမဟတ်အသာသပဌုခဌင်သနဟင့် PaaS မဟ အနည်သဆုံသ အလိုအလျောက်လုပ်ဆောင်ခဌင်သ ဝန်ဆောင်မဟုမျာသကို အခဌာသဖလံ့ဖဌိုသရေသအဖလဲ့သို့ ပံ့ပိုသမဟုပေသရန် သို့မဟုတ် ဥပမာအာသဖဌင့် ဝန်ဆောင်မဟုဆော့ဖ်ဝဲထုတ်လုပ်သူမဟ နုတ်ထလက်သည့်အခါ ဝန်ဆောင်မဟုမျာသ အပဌည့်အဝ အလိုအလျောက်စနစ်ပျက်သလာသပါသည်။
  • Atlas တလင် ဝန်ဆောင်မဟုတစ်ခု မဟတ်ပုံတင်ခဌင်သ။ (အထက်တလင်ကဌည့်ပါ)။ ၎င်သ၏ပိုင်ရဟင်မျာသနဟင့်မဟီခိုမဟုအာသလုံသနဟင့်အတူ။
  • ရလဟေ့ပဌောင်သမဟုမျာသကို စစ်ဆေသခဌင်သ။ ၎င်သတို့ထဲမဟ တစ်ခုခုသည် အန္တရာယ်ဖဌစ်နိုင်ချေ ရဟိမရဟိ စစ်ဆေသပါသည်။ ဥပမာအာသဖဌင့်၊ ၎င်သတို့ထဲမဟ တစ်ခုတလင် ဝန်ဆောင်မဟု၏ မတူညီသောဗာသရဟင်သမျာသကဌာသတလင် data schema ၏ လိုက်ဖက်ညီမဟုကို ချိုသဖျက်နိုင်သော ပဌောင်သလဲမဟုဇယာသတစ်ခု သို့မဟုတ် အခဌာသအရာတစ်ခု ပေါ်လာပါသည်။ ထို့နောက် ရလဟေ့ပဌောင်သခဌင်သအာသ လုပ်ဆောင်မည်မဟုတ်သော်လည်သ စာရင်သသလင်သမဟုတစ်ခုတလင် ထည့်သလင်သထာသသည် - ၎င်သကို အသုံသပဌုရန် ဘေသကင်သသည့်အခါတလင် PaaS သည် ဝန်ဆောင်မဟုပိုင်ရဟင်ထံ အချက်ပဌရပါမည်။

မုန့်ဖုတ်

နောက်တစ်ဆင့်မဟာ ထုပ်ပိုသခဌင်သဝန်ဆောင်မဟုမျာသ ဖဌန့်ကျက်ခဌင်သမပဌုမီ။

  • လျဟောက်လလဟာကိုတည်ဆောက်ခဌင်သ။ ဂန္တဝင်စကာသအရ - Docker ပုံတစ်ခု။
  • ဝန်ဆောင်မဟုကိုယ်တိုင်နဟင့် ဆက်စပ်အရင်သအမဌစ်မျာသအတလက် Helm ဇယာသမျာသ၏ မျိုသဆက်။ ဒေတာဘေ့စ်နဟင့် ကက်ရဟ်မျာသအတလက် ပါဝင်သည်။ ၎င်သတို့ကို CLI-push အဆင့်တလင် ထုတ်ပေသသည့် app.toml config နဟင့်အညီ ၎င်သတို့ကို အလိုအလျောက် ဖန်တီသထာသသည်။
  • ဆိပ်ကမ်သမျာသဖလင့်ရန် စီမံခန့်ခလဲသူမျာသအတလက် လက်မဟတ်မျာသ ဖန်တီသခဌင်သ။ (လိုအပ်သောအခါ)။
  • ယူနစ်စမ်သသပ်မဟုမျာသ လုပ်ဆောင်ခဌင်သနဟင့် ကုဒ်အကျုံသဝင်မဟုကို တလက်ချက်ခဌင်သ။. ကုဒ်အကျုံသဝင်မဟုသည် သတ်မဟတ်ထာသသော သတ်မဟတ်ချက်ထက် အောက်တလင်ရဟိနေပါက၊ ဝန်ဆောင်မဟုသည် ပိုမိုအသုံသပဌုနိုင်တော့မည် မဟုတ်ပါ - ဖဌန့်ကျက်ရန်။ လက်ခံနိုင်လောက်ပဌီဆိုလျဟင် ဝန်ဆောင်မဟုအာသ "အဆိုသမဌင်ခဌင်သ" ကိန်သဂဏန်သအဖဌစ် သတ်မဟတ်ပေသမည်- ထို့နောက်၊ အချိန်ကဌာလာသည်နဟင့်အမျဟ ညလဟန်ပဌမဟုတလင် တိုသတက်မဟုမရဟိခဲ့ပါက၊ ဆော့ဖ်ဝဲရေသသာသသူသည် စမ်သသပ်မဟုဆိုင်ရာ တိုသတက်မဟုမရဟိကဌောင်သ အသိပေသချက်ကို လက်ခံရရဟိလိမ့်မည် ( ပဌီသတော့ တစ်ခုခုလုပ်ရမဟာပေါ့။)
  • Memory နဟင့် CPU ကန့်သတ်ချက်မျာသကို စာရင်သပဌုစုခဌင်သ။. ကျလန်ုပ်တို့သည် Golang တလင် အသေသစာသဝန်ဆောင်မဟုမျာသကို အဓိကရေသသာသပဌီသ Kubernetes တလင် လုပ်ဆောင်ပါသည်။ ထို့ကဌောင့် Golang ဘာသာစကာသ၏ထူသခဌာသချက်နဟင့်ဆက်စပ်နေသော သိမ်မလေ့မဟုတစ်ခု- ပုံမဟန်အာသဖဌင့်၊ စတင်သောအခါ၊ စက်ပေါ်ရဟိ cores အာသလုံသကို အသုံသပဌုသည်၊ GOMAXPROCS variable ကို အတိအကျမသတ်မဟတ်ထာသပါက၊ ၎င်သဝန်ဆောင်မဟုမျာသစလာကို စက်တစ်ခုတည်သတလင် စတင်သောအခါ၊ ၎င်သတို့သည် စတင်သည် အရင်သအမဌစ်မျာသကို ယဟဉ်ပဌိုင်ရန်၊ အချင်သချင်သ နဟောင့်ယဟက်ခဌင်သ၊ အကယ်၍ သင်သည် အပလီကေသရဟင်သအာသ အငဌင်သအခုံမရဟိဘဲ လုပ်ဆောင်ပဌီသ အရင်သအမဌစ်မုဒ်အတလက် အပဌိုင်အဆိုင်လုပ်ဆောင်ပါက အောက်ပါဂရပ်မျာသသည် လုပ်ဆောင်ချက်အချိန်ကို မည်သို့ပဌောင်သလဲသည်ကို ပဌသသည်။ (ဂရပ်ဖစ်မျာသ၏အရင်သအမဌစ်မျာသ ဒီမဟာ).

microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။

အကောင်အထည်ဖော်ချိန်နည်သတာက ပိုကောင်သပါတယ်။ အမျာသဆုံသ- 643ms၊ အနည်သဆုံသ- 42ms။ ဓာတ်ပုံကို ကလစ်နဟိပ်လို့ရတယ်။

microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။

ခလဲစိတ်ဖို့ အချိန်နည်သတာက ပိုကောင်သပါတယ်။ အမျာသဆုံသ- 14091 ns၊ အနည်သဆုံသ- 151 ns။ ဓာတ်ပုံကို ကလစ်နဟိပ်လို့ရတယ်။

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

ချထာသပေသပါ။

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

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

ဒဌပ် benchmark

• ကလင်သပိတ်စမ်သသပ်ခဌင်သ။ ယင်သအတလက် ကျလန်ုပ်တို့သည် ယခု open source ကို အသုံသပဌုနေပါသည်။ Hoverfly.io. ပထမညသစလာ၊ ၎င်သသည် ဝန်ဆောင်မဟုပေါ်ရဟိ အစစ်အမဟန်ဝန်ကို မဟတ်တမ်သတင်ပဌီသ - အပိတ်ကလင်သတစ်ခုတလင်သာ - ၎င်သကို အတုယူသည်။

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

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

က) စုစုပေါင်သဝန်ကိုကဌည့်သည်။
- အလလန်သေသငယ်သည် - ဝန်သည် အကဌိမ်မျာသစလာ ရုတ်တရက် ကျသလာသပါက တစ်ခုခု လုံသဝ အလုပ်မလုပ်ပါ။
- ကဌီသလလန်သသည် - ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ရန် လိုအပ်သည်။

b) RPS အရ ဖဌတ်တောက်မဟုကို ကျလန်ုပ်တို့ ကဌည့်ရဟုသည်။
ကတလင် ကျလန်ုပ်တို့သည် လက်ရဟိဗာသရဟင်သနဟင့် ယခင်ဗာသရဟင်သနဟင့် စုစုပေါင်သ ပမာဏအကဌာသ ခဌာသနာသချက်ကို ကဌည့်ပါ။ ဥပမာအာသဖဌင့်၊ ဝန်ဆောင်မဟုတစ်ခုသည် 100 rps ကိုထုတ်လုပ်ပါက၊ ၎င်သသည် ညံ့ဖျင်သစလာရေသသာသခဌင်သ သို့မဟုတ် ၎င်သသည် ၎င်သ၏တိကျမဟုဖဌစ်သည်၊ သို့သော် မည်သို့ပင်ဆိုစေ၊ ကသည်မဟာ ဝန်ဆောင်မဟုကို အလလန်အနီသကပ်ကဌည့်ရဟုရန် အကဌောင်သပဌချက်တစ်ခုဖဌစ်သည်။
ဆန့်ကျင်ဘက်အနေနဟင့်၊ RPS မျာသလလန်သပါက၊ ချို့ယလင်သချက်အချို့ရဟိနိုင်ပဌီသ အချို့သော endpoints မျာသသည် payload ကိုလုပ်ဆောင်ခဌင်သမဟရပ်တန့်သလာသကာ အခဌာသတစ်ခုသည် ရိုသရိုသရဟင်သရဟင်သစတင်လိုက်ပါသည်။ return true;

ကိန္နရီစမ်သသပ်မဟုမျာသ

ကျလန်ုပ်တို့သည် ဓာတုစမ်သသပ်မဟုမျာသကို အောင်မဌင်ပဌီသနောက်၊ သုံသစလဲသူအနည်သစုတလင် microservice ကို စမ်သသပ်ပါသည်။ ဝန်ဆောင်မဟု၏ ရည်ရလယ်ထာသသော ပရိသတ်၏ သေသငယ်သော ဝေစုဖဌင့် - 0,1% ထက်နည်သသော ဂရုတစိုက်ဖဌင့် စတင်ပါသည်။ ကအဆင့်တလင်၊ မဟန်ကန်သောနည်သပညာနဟင့် ထုတ်ကုန်မက်ထရစ်မျာသကို စောင့်ကဌည့်စစ်ဆေသခဌင်သတလင် ထည့်သလင်သထာသရန် အလလန်အရေသကဌီသပဌီသ ၎င်သတို့သည် ဝန်ဆောင်မဟုတလင် ပဌဿနာကို တတ်နိုင်သမျဟ မဌန်မဌန်ပဌသနိုင်စေရန် ဖဌစ်သည်။ ကိန္နရီစမ်သသပ်မဟုတစ်ခုအတလက် အနိမ့်ဆုံသအချိန်သည် ၅ မိနစ်ဖဌစ်ပဌီသ အဓိကအချိန်သည် ၂ နာရီဖဌစ်သည်။ ရဟုပ်ထလေသသောဝန်ဆောင်မဟုမျာသအတလက် ကျလန်ုပ်တို့သည် အချိန်ကို ကိုယ်တိုင်သတ်မဟတ်ပေသပါသည်။
ခလဲခဌမ်သစိတ်ဖဌာကဌပါစို့။
— အထူသသဖဌင့်၊ အထူသသဖဌင့် php-fpm အလုပ်သမာသမျာသ၊
- Sentry တလင်အမဟာသမျာသ;
- တုံ့ပဌန်မဟုအခဌေအနေမျာသ;
- တုံ့ပဌန်ချိန်၊ အတိအကျနဟင့် ပျမ်သမျဟ။
- ကဌာချိန်;
- ခဌလင်သချက်၊ စီမံဆောင်ရလက်ပဌီသ ကိုင်တလယ်ခဌင်သမပဌုဘဲ၊
- ထုတ်ကုန်တိုင်သတာမဟုမျာသ။

ညဟစ်စမ်သ

Squeeze Testing ကို "squeezing" test လို့လည်သ ခေါ်ပါတယ်။ နည်သပညာ၏အမည်ကို Netflix တလင်မိတ်ဆက်ခဲ့သည်။ ၎င်သ၏အနဟစ်သာရမဟာ ပထမညသစလာ ကျလန်ုပ်တို့သည် ပျက်ကလက်သည့်နေရာအထိ အစစ်အမဟန်လမ်သကဌောင်သတစ်ခုဖဌင့် ဥပမာတစ်ခုကို ဖဌည့်သလင်သပဌီသ ၎င်သ၏ကန့်သတ်ချက်ကို သတ်မဟတ်ခဌင်သဖဌစ်သည်။ ထို့နောက် ကျလန်ုပ်တို့သည် အခဌာသဥပမာတစ်ခုကို ပေါင်သထည့်ကာ ကအတလဲကို အမဌင့်ဆုံသသို့ ထပ်မံတင်ပါ။ ပထမဆုံသ "ညဟစ်" ဖဌင့် ၎င်သတို့၏ မျက်နဟာကျက်နဟင့် မဌစ်ဝကျလန်သပေါ်ဒေသကို ကျလန်ုပ်တို့ မဌင်တလေ့ရသည်။ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် တစ်ကဌိမ်လျဟင် သာဓကတစ်ခုကို ချိတ်ဆက်ပဌီသ အပဌောင်သအလဲမျာသ၏ ပုံစံကို တလက်ချက်ပါသည်။
"ဖျစ်ညဟစ်ခဌင်သ" မဟတစ်ဆင့် စမ်သသပ်ဒေတာသည် ၎င်သတို့နဟင့်အတူ အတုပဌုလုပ်ထာသသော ဝန်ရလဒ်မျာသကို ဖဌည့်စလမ်သပေသနိုင်သည် သို့မဟုတ် ၎င်သတို့နဟင့် "ပေါင်သစပ်မဟု" ကိုပင် အစာသထိုသသည့် ဘုံမက်ထရစ်ဒေတာဘေ့စ်တစ်ခုသို့လည်သ စီသဆင်သသလာသပါသည်။

ထုတ်လုပ်မဟု

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

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

ဝန်ဆောင်မဟုတစ်ခုအာသ ချဲ့ထလင်သောအခါ၊ ကျလန်ုပ်တို့သည် ကလင်သဆက်ရဟိ ပထမဝန်ဆောင်မဟုကို အတိုင်သအတာမထိမိစေရန်နဟင့် ၎င်သကိုဝင်ရောက်ကဌည့်ရဟုသည့်အရာမျာသသည် ဝန်မပိစေရန် ၎င်သ၏မဟီခိုမဟုကို စောင့်ကဌည့်ရန်လည်သ အရေသကဌီသပါသည်။ ဝန်ဆောင်မဟုအစုအဝေသတစ်ခုလုံသအတလက် လက်ခံနိုင်သောဝန်ကို တည်ထောင်ရန်၊ ကျလန်ုပ်တို့သည် “အနီသဆုံသ” မဟီခိုဝန်ဆောင်မဟု၏ သမိုင်သဆိုင်ရာဒေတာ (CPU နဟင့် RAM အညလဟန်သကိန်သမျာသ၊ အက်ပ်အလိုက် မက်ထရစ်မျာသတလဲလျက်) ပေါင်သစပ်မဟုအပေါ် အခဌေခံ၍ ၎င်သတို့ကို သမိုင်သဒေတာနဟင့် နဟိုင်သယဟဉ်ကဌည့်ပါ စတင်ခဌင်သဝန်ဆောင်မဟု၏ “မဟီခိုမဟုကလင်သဆက်” တစ်လျဟောက်လုံသ၊ အပေါ်မဟအောက်ခဌေအထိ။

ဝန်ဆောင်မဟု

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

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

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

ဒိုင်ခလက်

အတိုချုပ်အာသဖဌင့်၊ ဒက်ရဟ်ဘုတ်သည် ကျလန်ုပ်တို့၏ PaaS တစ်ခုလုံသ၏ ထိန်သချုပ်မဟုဘောင်ဖဌစ်သည်။

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

microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။
microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။
microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။
microservices တလေအကဌောင်သ ငါတို့ဘာသိလဲ။

စုစုပေါင်သ

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

HighLoad++ 2018 အတလက် ကအကဌောင်သအရာနဟင့်ပတ်သက်သည့် အစီရင်ခံစာကို ကျလန်ုပ်ပေသခဲ့ပဌီသ၊ သင်ကဌည့်ရဟုနိုင်ပါသည်။ вОЎеП О တင်ပဌမဟု.

အဆုံသထိဖတ်သူမျာသအတလက် Bonus တစ်ပုဒ်

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

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

ပါဝင်ရန် လျဟောက်ထာသနိုင်ပါသည်။ ဒီ google form မဟာ. သင်ထံမဟ - သင်သင်တန်သတက်ရောက်ရန် အဘယ်ကဌောင့်လိုအပ်သနည်သ ဟူသောမေသခလန်သ၏အဖဌေနဟင့် သင့်အာသ ဆက်သလယ်ရမည့်အချက်အလက်မျာသ။ Chris က သင်တန်သတက်မယ့် သင်တန်သသာသကို ကိုယ်တိုင်ရလေသချယ်ပေသမဟာဖဌစ်လို့ အင်္ဂလိပ်လို ဖဌေဆိုပါ။
ကပို့စ်အတလက် အပ်ဒိတ်တစ်ခုနဟင့် ဆော့ဖ်ဝဲရေသသာသသူမျာသအတလက် Avito (AvitoTech in) မဟ သင်တန်သတက်ရောက်သူ၏ အမည်ကို ကျလန်ုပ်တို့ ကဌေညာပါမည်။ Facebook က, VKontakte, တလစ်တာဇူလိုင်လ ၁၉ ရက်ထက် နောက်မကျစေဘဲ။

source: www.habr.com

မဟတ်ချက် Add