ဖဌန့်ဝေထာသသော application မျာသတည်ဆောက်ခဌင်သ။ သုညအနီသစပ်ဆုံသ

ဖဌန့်ဝေထာသသော application မျာသတည်ဆောက်ခဌင်သ။ သုညအနီသစပ်ဆုံသ

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

နိဒါန်သ

ဒီဇိုင်သထုတ်ထာသသောစနစ်၏ အရလယ်အစာသနဟင့် ၎င်သအတလက် လိုအပ်ချက်မျာသပေါ်မူတည်၍ ကျလန်ုပ်တို့၊ developer မျာသသည် စနစ်အတလင်သရဟိ အချက်အလက်ဖလဟယ်သည့်နည်သလမ်သကို ရလေသချယ်ကဌသည်။ ကိစ္စအမျာသစုတလင်၊ ဝန်ဆောင်မဟုမျာသ၏အပဌန်အလဟန်ကိုစုစည်သရန်၊ အလုပ်ရလေသချယ်မဟုတစ်ခုသည် RabbitMQ သို့မဟုတ် kafka ကိုအခဌေခံ၍ ပလဲစာသနဟင့်အစီအစဥ်ဖဌစ်နိုင်သည်။ သို့သော် တစ်ခါတစ်ရံတလင် အဖဌစ်အပျက်မျာသ စီသဆင်သမဟု၊ SLA နဟင့် စနစ်အပေါ် ထိန်သချုပ်မဟုအဆင့်မျာသသည် ကျလန်ုပ်တို့အတလက် အဆင်သင့်လုပ်ထာသသော စာတိုပေသပို့ခဌင်သမျိုသနဟင့် မသင့်တော်ပါ။ ZeroMQ သို့မဟုတ် nanomsg ကိုအသုံသပဌု၍ သယ်ယူပို့ဆောင်ရေသအလလဟာနဟင့်အစုအဝေသဖလဲ့စည်သခဌင်သအတလက်တာဝန်ယူခဌင်သဖဌင့်စနစ်အာသအနည်သငယ်ရဟုပ်ထလေသစေနိုင်သည်။ သို့သော် စနစ်တလင် စံ Erlang အစုအဝေသတစ်ခု၏ လုံလောက်သော ဖဌတ်သန်သမဟုနဟင့် စလမ်သရည်မျာသရဟိပါက၊ နောက်ဆက်တလဲအဖလဲ့အစည်သတစ်ခုကို မိတ်ဆက်ခဌင်သကိစ္စသည် အသေသစိတ်လေ့လာမဟုနဟင့် စီသပလာသရေသဆိုင်ရာ မျဟတမဟုရဟိရန် လိုအပ်သည်။

ဓာတ်ပဌုဖဌန့်ဝေခဌင်သဆိုင်ရာ အသုံသချပရိုဂရမ်မျာသ၏ ခေါင်သစဉ်သည် အတော်လေသကျယ်ပဌန့်သည်။ ဆောင်သပါသ၏ ဖော်မတ်အတလင်သ ထာသရဟိရန်၊ ယနေ့ ဆလေသနလေသမဟု အကဌောင်သအရာသည် Erlang/Elixir ပေါ်တလင် တည်ဆောက်ထာသသော တစ်သာသတည်သကျသော ပတ်ဝန်သကျင်မျာသသာ ဖဌစ်ပါမည်။ Erlang/OTP ဂေဟစနစ်သည် သင့်အာသ အာသထုတ်မဟုအနည်သဆုံသပမာဏဖဌင့် ဓာတ်ပဌုတည်ဆောက်ထာသသော ဗိသုကာတစ်ခုအာသ အကောင်အထည်ဖော်နိုင်စေပါသည်။ မည်သို့ပင်ဆိုစေကာမူ ကျလန်ုပ်တို့သည် စာတိုပေသပို့မဟု အလလဟာတစ်ခု လိုအပ်ပါသည်။

သီအိုရီအခဌေခံ

ဒီဇိုင်သသည် ပန်သတိုင်မျာသနဟင့် ကန့်သတ်ချက်မျာသကို သတ်မဟတ်ခဌင်သဖဌင့် စတင်သည်။ အဓိက ပန်သတိုင်သည် ဖလံ့ဖဌိုသတိုသတက်ရေသ နယ်ပယ်တလင် ဖလံ့ဖဌိုသတိုသတက်ရေသ အတလက် မဟုတ်ပါ။ ကျလန်ုပ်တို့ ဖန်တီသနိုင်သည့် အခဌေခံပေါ်တလင် လုံခဌုံပဌီသ အရလယ်အစာသရဟိ ကိရိယာကို ရယူရန် လိုအပ်ပဌီသ အရေသအကဌီသဆုံသမဟာ အဆင့်အမျိုသမျိုသရဟိသည့် ခေတ်မီအက်ပ်လီကေသရဟင်သမျာသကို ဖလံ့ဖဌိုသတိုသတက်စေသည်- တစ်ခုတည်သသော ဆာဗာအက်ပ်ပလီကေသရဟင်သမျာသမဟ စတင်၍ ပရိသတ်ငယ်မျာသကို ဝန်ဆောင်မဟုပေသသည့် အစုအဖလဲ့ 50 အထိ ရဟိလာနိုင်သည်။ -60 node မျာသ၊ cluster federations မျာသဖဌင့် အဆုံသသတ်သည်။ ထို့ကဌောင့် အဓိကပန်သတိုင်မဟာ ဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့် နောက်ဆုံသစနစ်၏ ပိုင်ဆိုင်မဟုကုန်ကျစရိတ်ကို လျဟော့ချခဌင်သဖဌင့် အမဌတ်အစလန်သကို မဌဟင့်တင်ရန်ဖဌစ်သည်။

နောက်ဆုံသစနစ်အတလက် အဓိကလိုအပ်ချက် ၄ ခုကို မီသမောင်သထိုသပဌကဌပါစို့။

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

“လုပ်နိုင်သောအင်ဂျင်ငယ်” အကဌောင်သ ဒဏ္ဍာရီပုံပဌင်ဟောင်သကို မဟတ်မိပါသလာသ။ ဒီဇိုင်သထုတ်ထာသသောစနစ်သည် ရဟေ့ပဌေသပုံစံအဆင့်မဟ အောင်မဌင်စလာထလက်ပဌီသ တိုသတက်စေရန်အတလက် ၎င်သ၏အခဌေခံအုတ်မဌစ်သည် အနည်သဆုံသလိုအပ်ချက်မျာသနဟင့် ပဌည့်မီရမည်ဖဌစ်သည်။ SMOG.

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

ပလဲဆန်တယ်။

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

အပေါ်ယံ

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

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

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

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

  • တိုသတက်မဟု၏ရလဒ်အဖဌစ် စက်ကိရိယာမျာသ၏ စလမ်သအာသ တိုသလာသောအခါ။ မစုံလင်သောဆော့ဖ်ဝဲကဌောင့် ၎င်သသည် ပျင်သရိမည်မဟုတ်ပါ။ Erlang သည် ဒေါင်လိုက် ကောင်သစလာ ချိန်ညဟိနိုင်ပဌီသ CPU cores နဟင့် ရရဟိနိုင်သော memory အာသလုံသကို အမဌဲတမ်သ အသုံသချနိုင်မည်ဖဌစ်သည်။
  • cloud ပတ်ဝန်သကျင်မျာသတလင်၊ လက်ရဟိ သို့မဟုတ် ခန့်မဟန်သထာသသော load နဟင့် SLA အာမခံချက်ပေါ်မူတည်၍ စက်ကိရိယာပမာဏကို စီမံခန့်ခလဲနိုင်ပါသည်။

အမဟာသခံနိုင်ရည်

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

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

နူသညံ့ကဌင်နာမဟု

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

ပဏာမအကျဉ်သချုပ်

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

ပထမပိုင်သပဌီသပါပဌီ။

ဓာတ်ပုံ @lucabravo.

source: www.habr.com

မဟတ်ချက် Add