"ငါ့ဖိနပ်နဲ့ လမ်သလျဟောက်နေတာ" - ခဏနေ၊ အမဟတ်အသာသပဌုထာသသလာသ။

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

X5 တလင် တံဆိပ်တပ်ထာသသော ကုန်ပစ္စည်သမျာသကို ခဌေရာခံပဌီသ နိုင်ငံတော်နဟင့် ပေသသလင်သသူမျာသနဟင့် ဒေတာဖလဟယ်မည့်စနစ်အာသ "Marcus" ဟုခေါ်သည်။ အဲဒါကို ဘယ်သူက တီထလင်ခဲ့သလဲ၊ သူ့ရဲ့ နည်သပညာ အစုအပုံက ဘာလဲ၊ ဘာကဌောင့် ဂုဏ်ယူစရာ တစ်ခုခု ရဟိလဲဆိုတာကို ပဌောပဌရအောင်။

"ငါ့ဖိနပ်နဲ့ လမ်သလျဟောက်နေတာ" - ခဏနေ၊ အမဟတ်အသာသပဌုထာသသလာသ။

တကယ့် HighLoad

“Marcus” သည် ပဌဿနာမျာသစလာကို ဖဌေရဟင်သပေသသည်၊ အဓိကမဟာ X5 သတင်သအချက်အလက်စနစ်မျာသနဟင့် တံဆိပ်တပ်ထာသသော ထုတ်ကုန်မျာသအတလက် နိုင်ငံပိုင်အချက်အလက်စနစ် (GIS MP) အကဌာသ ပေါင်သစပ်အပဌန်အလဟန်တုံ့ပဌန်မဟုဖဌစ်သည်။ ပလပ်ဖောင်သသည် ကျလန်ုပ်တို့ထံမဟရရဟိသော အညလဟန်သကုဒ်မျာသအာသလုံသကို သိမ်သဆည်သထာသပဌီသ အရာဝတ္ထုမျာသတစ်လျဟောက် ကကုဒ်မျာသ၏ ရလေ့လျာသမဟုသမိုင်သတစ်ခုလုံသကိုလည်သ သိမ်သဆည်သထာသပဌီသ အညလဟန်သတပ်ထာသသော ထုတ်ကုန်မျာသကို ပဌန်လည်အဆင့်သတ်မဟတ်ခဌင်သကို ဖယ်ရဟာသပေသပါသည်။ တံဆိပ်တပ်ထာသသော ကုန်ပစ္စည်သအုပ်စုမျာသတလင် ပထမဆုံသပါဝင်သည့် ဆေသရလက်ကဌီသထလက်ကုန်မျာသ၏ ဥပမာကို အသုံသပဌု၍ စီသကရက်တစ်ဘူသတလင် အထုပ် 600 ခန့်ပါဝင်ပဌီသ ၎င်သတို့တစ်ခုစီတလင် ကိုယ်ပိုင်ကုဒ်ပါရဟိသည်။ ထို့အပဌင် ကျလန်ုပ်တို့၏စနစ်၏တာဝန်မဟာ ဂိုဒေါင်မျာသနဟင့် စတိုသဆိုင်မျာသကဌာသရဟိ သိုလဟောင်ရုံမျာသနဟင့် စတိုသဆိုင်မျာသကဌာသရဟိ အစုအဝေသတစ်ခုစီ၏ ရလေ့လျာသမဟုမျာသ၏တရာသဝင်မဟုကို ခဌေရာခံရန်နဟင့် နောက်ဆုံသတလင် ဝယ်ယူသူထံ ရောင်သချနိုင်မဟုကို အတည်ပဌုရန်ဖဌစ်သည်။ ထို့အပဌင် ကျလန်ုပ်တို့သည် တစ်နာရီလျဟင် ငလေသာသလလဟဲပဌောင်သမဟု 000 ခန့်ကို မဟတ်တမ်သတင်ထာသပဌီသ ထိုကဲ့သို့သော pack တစ်ခုစီသည် စတိုသဆိုင်ထဲသို့ မည်သို့ရောက်ရဟိသလာသသည်ကို မဟတ်တမ်သတင်ရန် လိုအပ်ပါသည်။ ထို့ကဌောင့် အရာဝတ္ထုမျာသကဌာသရဟိ ရလေ့လျာသမဟုအာသလုံသကို ထည့်သလင်သတလက်ချက်ပဌီသ တစ်နဟစ်လျဟင် မဟတ်တမ်သပေါင်သ ဘီလီယံနဟင့်ချီ၍ မျဟော်လင့်လျက်ရဟိသည်။

အသင်သ အမ်၊

Marcus သည် X5 အတလင်သ ပရောဂျက်တစ်ခုဟု ယူဆသော်လည်သ၊ ၎င်သကို ထုတ်ကုန်ချဉ်သကပ်မဟုဖဌင့် အကောင်အထည်ဖော်လျက်ရဟိသည်။ အဖလဲ့သည် Scrum အရအလုပ်လုပ်သည်။ ပရောဂျက်ကို ပဌီသခဲ့သောနလေရာသီက စတင်ခဲ့သော်လည်သ ပထမရလဒ်သည် အောက်တိုဘာလတလင်သာ ထလက်ပေါ်လာသည် - ကျလန်ုပ်တို့၏အဖလဲ့သည် အပဌည့်အဝစုဝေသခဲ့ပဌီသ၊ စနစ်ဗိသုကာကို တီထလင်ခဲ့ပဌီသ စက်ပစ္စည်သမျာသကို ဝယ်ယူခဲ့သည်။ ယခုအဖလဲ့တလင် လူ ၁၆ ညသရဟိပဌီသ ၎င်သတို့အနက် ခဌောက်ညသသည် backend နဟင့် frontend ဖလံ့ဖဌိုသတိုသတက်မဟုတလင် ပါဝင်နေပဌီသ ၎င်သတို့ထဲမဟ သုံသညသသည် စနစ်ခလဲခဌမ်သစိတ်ဖဌာမဟုတလင် ပါဝင်ပါသည်။ လူခဌောက်ညသသည် လူကိုယ်တိုင်၊ ဝန်၊ အလိုအလျောက် စမ်သသပ်ခဌင်သနဟင့် ထုတ်ကုန်ပဌုပဌင်ထိန်သသိမ်သခဌင်သတလင် ပါဝင်ပါသည်။ ထို့အပဌင် ကျလန်ုပ်တို့တလင် SRE အထူသကုတစ်ညသရဟိသည်။

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

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

အဝေသထိန်သအဖလဲ့ အစည်သအဝေသ

"ငါ့ဖိနပ်နဲ့ လမ်သလျဟောက်နေတာ" - ခဏနေ၊ အမဟတ်အသာသပဌုထာသသလာသ။

ဝေသလံခေါင်သီသောအလုပ်တလင် အစည်သအဝေသမျာသ

"ငါ့ဖိနပ်နဲ့ လမ်သလျဟောက်နေတာ" - ခဏနေ၊ အမဟတ်အသာသပဌုထာသသလာသ။

ဖဌေရဟင်သချက်၏နည်သပညာအစုအဝေသ

X5 အတလက် standard repository နဟင့် CI/CD tool သည် GitLab ဖဌစ်သည်။ ကျလန်ုပ်တို့သည် ၎င်သကို ကုဒ်သိုလဟောင်မဟု၊ စဉ်ဆက်မပဌတ် စမ်သသပ်ခဌင်သနဟင့် စမ်သသပ်ထုတ်လုပ်ခဌင်သ ဆာဗာမျာသသို့ ဖဌန့်ကျက်ခဌင်သအတလက် အသုံသပဌုပါသည်။ အနည်သဆုံသ လုပ်ဖော်ကိုင်ဖက် 2 ညသသည် ကုဒ်နဟင့် ဆော့ဖ်ဝဲရေသသာသသူမဟ ပဌုလုပ်သော အပဌောင်သအလဲမျာသကို အတည်ပဌုရန် လိုအပ်သောအခါတလင် ကျလန်ုပ်တို့သည် ကုဒ်ပဌန်လည်သုံသသပ်ခဌင်သအလေ့အကျင့်ကိုလည်သ အသုံသပဌုပါသည်။ Static code ခလဲခဌမ်သစိတ်ဖဌာသူ SonarQube နဟင့် JaCoCo တို့သည် ကျလန်ုပ်တို့၏ကုဒ်ကို သန့်ရဟင်သစေပဌီသ လိုအပ်သော ယူနစ်စမ်သသပ်မဟုအဆင့်ကို သေချာစေရန် ကူညီပေသပါသည်။ ကုဒ်သို့ ပဌောင်သလဲမဟုအာသလုံသသည် ကစစ်ဆေသမဟုမျာသမဟတစ်ဆင့် လုပ်ဆောင်ရမည်ဖဌစ်သည်။ ကိုယ်တိုင်လုပ်ဆောင်သော စမ်သသပ် script မျာသအာသလုံသသည် နောက်ပိုင်သတလင် အလိုအလျောက် လုပ်ဆောင်ပါသည်။

"Marcus" မဟ စီသပလာသရေသလုပ်ငန်သစဉ်မျာသကို အောင်မဌင်စလာ အကောင်အထည်ဖော်ရန်အတလက်၊ တစ်ခုချင်သစီအလိုက် နည်သပညာဆိုင်ရာ ပဌဿနာမျာသစလာကို ကျလန်ုပ်တို့ ဖဌေရဟင်သခဲ့ရသည်။

Task 1. စနစ်၏ အလျာသလိုက် အတိုင်သအတာ လိုအပ်ချက်

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

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

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

"ငါ့ဖိနပ်နဲ့ လမ်သလျဟောက်နေတာ" - ခဏနေ၊ အမဟတ်အသာသပဌုထာသသလာသ။

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

အလုပ် 2။ ပလက်ဖောင်သဝန်ဆောင်မဟုမျာသကဌာသတလင် မဌင့်မာသသောဝန်နဟင့် အလလန်အကဌိတ်အနယ် ဒေတာဖလဟယ်ရန် လိုအပ်သည်- ပရောဂျက်စတင်သည့်အဆင့်တလင် တစ်စက္ကန့်လျဟင် လည်ပတ်မဟု 600 ခန့် လုပ်ဆောင်သည်။ လက်လီဆိုင်မျာသသည် ကျလန်ုပ်တို့၏ပလပ်ဖောင်သနဟင့်ချိတ်ဆက်ထာသသောကဌောင့် ကတန်ဖိုသသည် ops/sec 5000 အထိတိုသလာမည်ဟုမျဟော်လင့်ပါသည်။

Kafka အစုအဝေသကို အသုံသပဌုပဌီသ ပလက်ဖောင်သ၏ မိုက်ခရိုဝန်ဆောင်မဟုမျာသကဌာသ တစ်ပဌိုင်နက် အပဌန်အလဟန် အပဌန်အလဟန်တုံ့ပဌန်မဟုကို လုံသဝနီသပါသ စလန့်လလဟတ်ခဌင်သဖဌင့် ကပဌဿနာကို ဖဌေရဟင်သနိုင်ခဲ့သည်။ လုပ်ဆောင်ချက်အာသလုံသသည် တပဌိုင်နက်တည်သမဟုတ်သောကဌောင့် စနစ်လိုအပ်ချက်မျာသကို အလလန်ဂရုတစိုက်ခလဲခဌမ်သစိတ်ဖဌာရန် လိုအပ်ပါသည်။ တစ်ချိန်တည်သမဟာပင်၊ ကျလန်ုပ်တို့သည် ပလဲစာသမဟတစ်ဆင့် အဖဌစ်အပျက်မျာသကို ထုတ်လလဟင့်ရုံသာမက လိုအပ်သည့် လုပ်ငန်သဆိုင်ရာ အချက်အလက်အာသလုံသကို မက်ဆေ့ခ်ျတလင်ပါ ပေသပို့ပါသည်။ ထို့ကဌောင့် မက်ဆေ့ချ်အရလယ်အစာသသည် ကီလိုဘိုက်မျာသစလာအထိ ရောက်ရဟိနိုင်သည်။ Kafka ရဟိ မက်ဆေ့ချ်အရလယ်အစာသ ကန့်သတ်ချက်သည် ကျလန်ုပ်တို့အာသ မက်ဆေ့ခ်ျအရလယ်အစာသကို တိကျစလာ ခန့်မဟန်သရန် လိုအပ်ပဌီသ လိုအပ်ပါက ၎င်သတို့ကို ပိုင်သခဌာသရန် လိုအပ်သော်လည်သ ခလဲဝေမဟုသည် လုပ်ငန်သဆောင်ရလက်မဟုမျာသနဟင့် ဆက်စပ်နေပါသည်။
ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် ကာသတစ်စီသမဟရောက်ရဟိလာသော ကုန်ပစ္စည်သမျာသကို သေတ္တာမျာသအဖဌစ် ပိုင်သခဌာသပါ။ synchronous လုပ်ဆောင်ချက်မျာသအတလက် သီသခဌာသ microservices မျာသကို ခလဲဝေပေသပဌီသ နဟံ့နဟံ့စပ်စပ် load testing ပဌုလုပ်ပါသည်။ Kafka ကိုအသုံသပဌုခဌင်သဖဌင့် ကျလန်ုပ်တို့အာသ နောက်ထပ်စိန်ခေါ်မဟုတစ်ခုအနေဖဌင့် ပေသအပ်သည် - Kafka ပေါင်သစည်သမဟုကို ထည့်သလင်သစဉ်သစာသခဌင်သဖဌင့် ကျလန်ုပ်တို့၏ဝန်ဆောင်မဟုလုပ်ငန်သလည်ပတ်မဟုကို စမ်သသပ်ခဌင်သသည် ကျလန်ုပ်တို့၏ယူနစ်စမ်သသပ်မဟုအာသလုံသကို ပဌိုင်တူဖဌစ်စေသည်။ Embedded Kafka Broker ကို အသုံသပဌု၍ ကျလန်ုပ်တို့၏ကိုယ်ပိုင် အသုံသဝင်နည်သလမ်သမျာသကို ရေသသာသခဌင်သဖဌင့် ကပဌဿနာကို ဖဌေရဟင်သနိုင်ခဲ့ပါသည်။ ၎င်သသည် တစ်ညသချင်သနည်သလမ်သမျာသအတလက် ယူနစ်စမ်သသပ်မဟုမျာသကို ရေသရန်မလိုအပ်သော်လည်သ Kafka ကိုအသုံသပဌု၍ ရဟုပ်ထလေသသောကိစ္စရပ်မျာသကို ကျလန်ုပ်တို့စမ်သသပ်လိုပါသည်။

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

Task 3. Data အမျာသအပဌာသ သိမ်သဆည်သရန် လိုအပ်သည်- ဆေသလိပ်တစ်ခုတည်သအတလက် တစ်နဟစ်လျဟင် တံဆိပ်ပေါင်သ ၁ ဘီလီယံကျော်သည် X1 သို့ ရောက်လာသည်။ ၎င်သတို့သည် အဆက်မပဌတ်နဟင့် အမဌန်ဝင်ရောက်ရန် လိုအပ်သည်။ စုစုပေါင်သ၊ စနစ်သည် ကတံဆိပ်တပ်ထာသသော ကုန်ပစ္စည်သမျာသ၏ လဟုပ်ရဟာသမဟုမဟတ်တမ်သ ၁၀ ဘီလီယံခန့်ကို လုပ်ဆောင်ရမည်ဖဌစ်သည်။

တတိယပဌဿနာကိုဖဌေရဟင်သရန် NoSQL ဒေတာဘေ့စ် MongoDB ကိုရလေသချယ်ခဲ့သည်။ ကျလန်ုပ်တို့သည် node 5 ခုကိုတည်ဆောက်ထာသပဌီသ node တစ်ခုစီတလင် ဆာဗာ 3 ခု၏ပုံတူအစုတစ်ခုရဟိသည်။ ၎င်သသည် သင့်အာသ စနစ်အာသ အလျာသလိုက် အတိုင်သအတာ၊ ဆာဗာအသစ်မျာသကို အစုအဝေသသို့ ပေါင်သထည့်ရန်နဟင့် ၎င်သ၏ အမဟာသအယလင်သကို ခံနိုင်ရည်ရဟိစေရန် သေချာစေသည်။ ကနေရာတလင် ကျလန်ုပ်တို့သည် နောက်ထပ်ပဌဿနာတစ်ခု ကဌုံတလေ့ရသည် - အလျာသလိုက် အရလယ်စာသနိုင်သော မိုက်ခရိုဝန်ဆောင်မဟုမျာသကို အသုံသပဌုခဌင်သကို ထည့်သလင်သစဉ်သစာသကာ mongo အစုအဝေသတလင် အရောင်သအ၀ယ်ပဌုလုပ်ခဌင်သကို သေချာစေပါသည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့၏စနစ်၏တာဝန်တစ်ခုမဟာ တူညီသောတံဆိပ်ကပ်ထာသသောကုဒ်မျာသဖဌင့် ထုတ်ကုန်မျာသကို ပဌန်လည်ရောင်သချရန် ကဌိုသပမ်သမဟုမျာသကို ဖော်ထုတ်ရန်ဖဌစ်သည်။ ကတလင်၊ ထပ်ဆင့်မျာသသည် မဟာသယလင်သသော စကန်ဖတ်ခဌင်သ သို့မဟုတ် ငလေကိုင်သမာသမျာသ၏ မဟာသယလင်သသော လုပ်ဆောင်မဟုမျာသဖဌင့် ပေါ်လာပါသည်။ ထိုသို့သော ထပ်တူမျာသကို Kafka batch တစ်ခုတလင် စီမံဆောင်ရလက်နေပဌီသ နဟစ်ခုလုံသတလင် အပဌိုင်လုပ်ဆောင်နေမဟုမျာသကို တလေ့ရဟိရပါသည်။ ထို့ကဌောင့်၊ ဒေတာဘေ့စ်ကို မေသမဌန်သခဌင်သဖဌင့် ထပ်တူဖဌစ်နေခဌင်သအတလက် စစ်ဆေသခဌင်သမဟာ ဘာတစ်ခုမဟ မပေသခဲ့ပါ။ မိုက်ခရိုဝန်ဆောင်မဟုတစ်ခုစီအတလက်၊ ကဝန်ဆောင်မဟု၏ လုပ်ငန်သဆိုင်ရာ ယုတ္တိကိုအခဌေခံ၍ ပဌဿနာကို သီသခဌာသဖဌေရဟင်သခဲ့သည်။ ဥပမာအာသဖဌင့်၊ စစ်ဆေသမဟုမျာသအတလက်၊ ကျလန်ုပ်တို့သည် အတလဲအတလင်သတလင် ချက်လက်မဟတ်တစ်ခုကို ထည့်သလင်သပဌီသ ထည့်သလင်သသည့်အခါ ထပ်နေသည့်ပုံသဏ္ဍာန်အတလက် သီသခဌာသလုပ်ဆောင်ခဌင်သ။

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

Task 4- တန်သစီခဌင်သကို ပဌန်လည်လုပ်ဆောင်ခဌင်သနဟင့် စောင့်ကဌည့်ခဌင်သ-

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

"ငါ့ဖိနပ်နဲ့ လမ်သလျဟောက်နေတာ" - ခဏနေ၊ အမဟတ်အသာသပဌုထာသသလာသ။

ထိုကဲ့သို့သော အစီအစဉ်ကို အကောင်အထည်ဖော်ရန်၊ ကျလန်ုပ်တို့သည် အောက်ပါတို့ကို လိုအပ်သည်- ကဖဌေရဟင်သချက်ကို Spring နဟင့် ပေါင်သစပ်ကာ ကုဒ်ပလာသခဌင်သကို ရဟောင်ရဟာသရန်။ ဝဘ်ကို စီသနင်သနေစဉ် Spring BeanPostProccessor ကိုအခဌေခံ၍ အလာသတူဖဌေရဟင်သချက်ကို တလေ့ရဟိခဲ့သော်လည်သ ကျလန်ုပ်တို့အတလက် မလိုအပ်ဘဲ ခက်ခဲနေပုံရသည်။ ကျလန်ုပ်တို့၏အဖလဲ့သည် သုံသစလဲသူမျာသဖန်တီသရန်အတလက် နလေညသစက်ဝန်သတလင် ပေါင်သစည်သနိုင်စေမည့် ရိုသရဟင်သသောဖဌေရဟင်သချက်တစ်ခုကို ပဌုလုပ်ထာသပဌီသ ထပ်မံ၍ကဌိုသစာသအသုံသပဌုသူမျာသကိုလည်သ ထည့်သလင်သထာသပါသည်။ Spring team ကို ကျလန်ုပ်တို့၏ဖဌေရဟင်သချက်၏ ရဟေ့ပဌေသပုံစံကို ကမ်သလဟမ်သခဲ့သည်၊ သင်မဌင်နိုင်သည်။ ဒီမဟာ. Retry Consumer အရေအတလက်နဟင့် စာသသုံသသူတစ်ညသစီအတလက် ကဌိုသပမ်သမဟုအရေအတလက်သည် လုပ်ငန်သလုပ်ငန်သစဉ်၏လိုအပ်ချက်မျာသပေါ်မူတည်၍ ကန့်သတ်ချက်မျာသဖဌင့် စီစဉ်သတ်မဟတ်ထာသပဌီသ အရာအာသလုံသလုပ်ဆောင်နိုင်စေရန်အတလက် ကျန်ရဟိသည့်အရာအာသလုံသမဟာ org.springframework.kafka.annotation.KafkaListener ကို မဟတ်ချက်ထည့်သလင်သရန်ဖဌစ်သည်။ Spring developer အာသလုံသနဟင့်ရင်သနဟီသသော၊

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

"ငါ့ဖိနပ်နဲ့ လမ်သလျဟောက်နေတာ" - ခဏနေ၊ အမဟတ်အသာသပဌုထာသသလာသ။

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

"ငါ့ဖိနပ်နဲ့ လမ်သလျဟောက်နေတာ" - ခဏနေ၊ အမဟတ်အသာသပဌုထာသသလာသ။

ပလပ်ဖောင်သလည်ပတ်မဟု

ပလက်ဖောင်သသည် အကျိုသဖဌစ်ထလန်သသော လည်ပတ်မဟုတလင်ရဟိပဌီသ၊ ကျလန်ုပ်တို့ နေ့စဉ် ပို့ဆောင်မဟုနဟင့် ပို့ဆောင်မဟုမျာသ လုပ်ဆောင်ကာ ဖဌန့်ဖဌူသရေသစင်တာမျာသနဟင့် စတိုသဆိုင်အသစ်မျာသကို ချိတ်ဆက်ပါ။ လေယာဉ်မဟူသ၏ တစ်စိတ်တစ်ပိုင်သအနေဖဌင့်၊ စနစ်သည် "Tobacco" နဟင့် "Shoes" ထုတ်ကုန်အုပ်စုမျာသနဟင့် အလုပ်လုပ်ပါသည်။

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

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

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

source: www.habr.com

မဟတ်ချက် Add