အဆင်ပဌေသောဗိသုကာပုံစံမျာသ

ဟေသ ဟာဘ!

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

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

အလျာသလိုက် အတိုင်သအတာ

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

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်သည် OwnCloud၊ OneDrive စသည်ဖဌင့် အချို့သော analogue မျာသဖဌစ်သော abstract cloud ဖိုင်သိုလဟောင်မဟုကို ယူပါမည်။

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

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

CQRS

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

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

  1. ဖောက်သည်သည် ဆာဗာသို့ တောင်သဆိုချက်တစ်ခု ပေသပို့ခဲ့သည်။
  2. ဆာဗာသည် အချိန်အတော်ကဌာ လုပ်ဆောင်နေပါသည်။
  3. ဆာဗာသည် သုံသစလဲသူအာသ ရလဒ်ဖဌင့် တုံ့ပဌန်ခဲ့သည်။

အချက် 2 တလင် ချိတ်ဆက်မဟု ပျက်သလာသသည် (သို့မဟုတ် ကလန်ရက် ပဌန်လည်ချိတ်ဆက်မိသည်၊ သို့မဟုတ် အသုံသပဌုသူသည် အခဌာသစာမျက်နဟာသို့သလာသ၍ ချိတ်ဆက်မဟုကို ဖဌတ်တောက်သလာသသည်) ကို စိတ်ကူသကဌည့်ကဌပါစို့။ ကကိစ္စတလင်၊ ဆာဗာသည် လုပ်ဆောင်ပဌီသသည့်အရာနဟင့်ပတ်သက်သည့် အချက်အလက်ဖဌင့် သုံသစလဲသူထံ တုံ့ပဌန်မဟုတစ်ခုပေသပို့ရန် ခက်ခဲလိမ့်မည်။ CQRS ကိုအသုံသပဌုခဌင်သဖဌင့် sequence အနည်သငယ်ကလဲပဌာသလိမ့်မည်-

  1. သုံသစလဲသူသည် အပ်ဒိတ်မျာသအတလက် စာရင်သသလင်သထာသသည်။
  2. ဖောက်သည်သည် ဆာဗာသို့ တောင်သဆိုချက်တစ်ခု ပေသပို့ခဲ့သည်။
  3. ဆာဗာက "တောင်သဆိုချက်ကို လက်ခံသည်" ဟု တုံ့ပဌန်ခဲ့သည်။
  4. ဆာဗာသည် အမဟတ် “၁” မဟ ချန်နယ်မဟတစ်ဆင့် ရလဒ်ဖဌင့် တုံ့ပဌန်ခဲ့သည်။

အဆင်ပဌေသောဗိသုကာပုံစံမျာသ

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

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

သို့သော်လည်သ လက်တလေ့တလင်၊ unidirectional flow ကို functional style (RX နဟင့် အလာသတူ) ဖဌင့် ကိုင်တလယ်နိုင်သောကဌောင့် အပိုဆုကဌေသတစ်ခု ရရဟိပါသည်။ အနဟစ်သာရအာသဖဌင့် အပလီကေသရဟင်သကို လုံသဝ ဓာတ်ပဌုနိုင်ပဌီသ လုပ်ငန်သဆိုင်ရာ ချဉ်သကပ်မဟုကိုလည်သ အသုံသပဌုသောကဌောင့် ၎င်သသည် လေသနက်သော အပေါင်သလက္ခဏာ ဖဌစ်နေပဌီဖဌစ်သည်။ အဆီပရိုဂရမ်မျာသအတလက်၊ ၎င်သသည် ဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့် အရင်သအမဌစ်မျာသကို သိသိသာသာ သက်သာစေနိုင်သည်။

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

ပလဲအရင်သအမဌစ်

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

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

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

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

အဆင်ပဌေသောဗိသုကာပုံစံမျာသ

ကချဉ်သကပ်မဟု၏ အရေသကဌီသသောအင်္ဂါရပ်မျာသ-

  • အဝင်တောင်သဆိုမဟုတစ်ခုစီကို တန်သစီတစ်ခုတလင် ထာသရဟိထာသသည်။
  • တောင်သဆိုမဟုကို လုပ်ဆောင်နေစဉ်၊ ဝန်ဆောင်မဟုသည် အလုပ်မျာသကို အခဌာသသော စီတန်သမျာသတလင်လည်သ နေရာချပေသနိုင်ပါသည်။
  • ဝင်လာသည့်ဖဌစ်ရပ်တစ်ခုစီတလင် identifier တစ်ခုရဟိသည် (ထပ်ယူရန် လိုအပ်သည်)။
  • တန်သစီသည် "နောက်ဆက်တလဲသာ" အစီအစဉ်အရ အယူဝါဒအရ အလုပ်လုပ်သည်။ ၎င်သမဟ အစိတ်အပိုင်သမျာသကို ဖယ်ရဟာသခဌင်သ သို့မဟုတ် ၎င်သတို့ကို ပဌန်လည်စီစဉ်၍မရပါ။
  • တန်သစီသည် FIFO အစီအစဉ်အရ အလုပ်လုပ်သည် (တင်သပညာအတလက် တောင်သပန်ပါတယ်)။ အကယ်၍ သင်သည် parallel execution ကိုပဌုလုပ်ရန် လိုအပ်ပါက၊ ထို့နောက် အဆင့်တစ်ခုတလင် အရာဝတ္ထုမျာသကို မတူညီသော စီတန်သမျာသသို့ ရလဟေ့သင့်သည်။

အလန်လိုင်သဖိုင်သိုလဟောင်မဟုကိစ္စရပ်ကို စဉ်သစာသနေကဌောင်သ သတိပေသပါရစေ။ ကကိစ္စတလင်၊ စနစ်သည်ကကဲ့သို့သောပုံပေါက်လိမ့်မည်။

အဆင်ပဌေသောဗိသုကာပုံစံမျာသ

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

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

အဆင်ပဌေသောဗိသုကာပုံစံမျာသ

ယင်သသို့ပေါင်သစပ်မဟုမဟ အပိုဆုမျာသ-

  • သတင်သအချက်အလက်လုပ်ဆောင်ခဌင်သဝန်ဆောင်မဟုမျာသကို ခလဲခဌာသထာသသည်။ တန်သစီခဌင်သကိုလည်သ ခလဲခဌာသထာသသည်။ အကယ်၍ ကျလန်ုပ်တို့သည် စနစ်ဖဌတ်သန်သမဟုကို တိုသမဌဟင့်ရန် လိုအပ်ပါက၊ ကျလန်ုပ်တို့သည် နောက်ထပ်ဆာဗာမျာသပေါ်တလင် ဝန်ဆောင်မဟုမျာသကို ပိုမိုလုပ်ဆောင်ရန် လိုအပ်ပါသည်။
  • ကျလန်ုပ်တို့သည် အသုံသပဌုသူတစ်ညသထံမဟ အချက်အလက်မျာသကို လက်ခံရရဟိသောအခါ၊ ကျလန်ုပ်တို့သည် ဒေတာကို လုံသလုံသလျာသလျာသ သိမ်သဆည်သသည့်အချိန်အထိ စောင့်စရာမလိုပါ။ ဆန့်ကျင်ဘက်အနေနဟင့်၊ ကျလန်ုပ်တို့သည် “ok” ဟုသာဖဌေရန် လိုအပ်ပဌီသ ဖဌည်သဖဌည်သချင်သ စတင်လုပ်ဆောင်ပါ။ တစ်ချိန်တည်သမဟာပင်၊ အရာဝတ္တုအသစ်တစ်ခုကို ပေါင်သထည့်ခဌင်သသည် လျင်မဌန်စလာဖဌစ်ပေါ်သောကဌောင့်၊ တန်သစီသည် အထလတ်အထိပ်မျာသကို ချောမလေ့စေပဌီသ အသုံသပဌုသူသည် စက်ဝန်သတစ်ခုလုံသကို ဖဌတ်သန်သရန် စောင့်ဆိုင်သနေစရာမလိုပါ။
  • ဥပမာအနေနဲ့၊ ထပ်တူထပ်မျဟတဲ့ ဖိုင်တလေကို ပေါင်သစည်သဖို့ ကဌိုသစာသတဲ့ ကူသယူမဟု ဝန်ဆောင်မဟုကို ကျလန်တော် ထပ်ထည့်လိုက်ပါတယ်။ အကယ်၍ ၎င်သသည် အမဟုတလဲမျာသ၏ 1% တလင် အချိန်ကဌာမဌင့်စလာ အလုပ်လုပ်ပါက၊ ကျလန်ုပ်တို့သည် XNUMX% မဌန်နဟုန်သနဟင့် ယုံကဌည်စိတ်ချရရန် မလိုအပ်တော့သောကဌောင့် (အထက်ကိုကဌည့်ပါ) သည် ကဌီသမာသသော အပေါင်သလက္ခဏာကို သတိပဌုမိလိမ့်မည်မဟုတ်ပါ။

သို့သော် အာသနည်သချက်မျာသကို ချက်ချင်သမဌင်နိုင်သည်-

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

သင်တလေ့မဌင်ရသည့်အတိုင်သ Event Sourcing သည် CQRS နဟင့် ကောင်သမလန်စလာအလုပ်လုပ်ပါသည်။ ထို့အပဌင်၊ ထိရောက်ပဌီသ အဆင်ပဌေသော တန်သစီစနစ်ဖဌင့် အကောင်အထည်ဖော်သော်လည်သ ဒေတာစီသဆင်သမဟုကို ပိုင်သခဌာသခဌင်သမရဟိဘဲ စီတန်သ၏အပဌုသဘောဆောင်သောအကျိုသသက်ရောက်မဟုကို ပျက်ပဌာသစေမည့် ထပ်တူပဌုမဟုအမဟတ်မျာသကို ထည့်သလင်သရသောကဌောင့် ၎င်သကိုယ်တိုင်က ခက်ခဲနေပါသည်။ ချဉ်သကပ်မဟုနဟစ်ခုလုံသကို တစ်ပဌိုင်နက်အသုံသပဌုခဌင်သဖဌင့် ပရိုဂရမ်ကုဒ်ကို အနည်သငယ်ချိန်ညဟိရန် လိုအပ်ပါသည်။ ကျလန်ုပ်တို့၏ကိစ္စတလင်၊ ဆာဗာသို့ ဖိုင်တစ်ခုပေသပို့သောအခါ၊ တုံ့ပဌန်မဟုသည် "ok" သာဖဌစ်ပဌီသ "ဖိုင်ကိုထည့်သလင်သခဌင်သလုပ်ဆောင်မဟုအာသ သိမ်သဆည်သခဲ့သည်" ဟုသာဆိုလိုသည်။ တရာသဝင်အာသဖဌင့်၊ ၎င်သသည် အခဌာသစက်ပစ္စည်သမျာသတလင် ဒေတာကို ရရဟိနေပဌီဟု မဆိုလိုပါ (ဥပမာ၊ ထပ်ယူခဌင်သဝန်ဆောင်မဟုသည် အညလဟန်သကို ပဌန်လည်တည်ဆောက်နိုင်သည်)။ သို့သော်လည်သ အချိန်အတန်ကဌာပဌီသနောက်၊ client သည် "file X has been saved" ပုံစံဖဌင့် အသိပေသချက်ကို လက်ခံရရဟိမည်ဖဌစ်သည်။

ရလဒ်အနေနဟင့်:

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

အံ့အာသသင့်

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

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

အဆင်ပဌေသောဗိသုကာပုံစံမျာသ

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

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

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

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

  • ကျလန်ုပ်တို့သည် အရာဝတ္ထုမျာသကို အသုံသပဌုသူမျာသနဟင့် ပိုမိုနီသကပ်စလာ ရလေ့လျာသနိုင်သောနည်သလမ်သဖဌင့် ရလဟေ့နိုင်ပါသည်။ ကနည်သဖဌင့် သင်သည် ဝန်ဆောင်မဟုအရည်အသလေသကို မဌဟင့်တင်နိုင်ပါသည်။
  • ကျလန်ုပ်တို့သည် ကုမ္ပဏီမျာသအတလင်သ ဒေတာအချို့ကို သိမ်သဆည်သနိုင်ပါသည်။ ဥပမာအာသဖဌင့်၊ Enterprise အသုံသပဌုသူမျာသသည် ၎င်သတို့၏ဒေတာမျာသကို ထိန်သချုပ်ထာသသော ဒေတာစင်တာမျာသတလင် သိမ်သဆည်သထာသရန် (ဒေတာပေါက်ကဌာသမဟုကို ရဟောင်ရဟာသရန်) မကဌာခဏ လိုအပ်သည်။ sharding အာသဖဌင့်ကျလန်ုပ်တို့သည်ကအရာကိုအလလယ်တကူထောက်ပံ့နိုင်သည်။ ဖောက်သည်တလင် တလဲဖက်သုံသနိုင်သော cloud တစ်ခုရဟိလျဟင် အလုပ်က ပိုလလယ်သည် (ဥပမာ၊ Azure ကိုယ်တိုင် လက်ခံဆောင်ရလက်ပေသခဌင်သ။).
  • ပဌီသတော့ အရေသကဌီသဆုံသက ဒါကို ငါတို့ လုပ်စရာမလိုဘူသ။ ပဌီသနောက်၊ အစပိုင်သတလင်၊ အကောင့်အာသလုံသအတလက် သိုလဟောင်မဟုတစ်ခု (အမဌန်စတင်လုပ်ဆောင်ရန်) တစ်ခုတည်သဖဌင့် ကျလန်ုပ်တို့သည် အလလန်ပျော်ရလဟင်နေပါသည်။ ပဌီသတော့ ဒီစနစ်ရဲ့ အဓိကအင်္ဂါရပ်ကတော့ ချဲ့ထလင်နိုင်ပေမယ့် ကနညသအဆင့်မဟာ အတော်လေသရိုသရဟင်သပါတယ်။ သီသခဌာသလလတ်လပ်သော တန်သစီခဌင်သ စသည်တို့ဖဌင့် လုပ်ဆောင်နိုင်သော ကုဒ်ကို ချက်ချင်သရေသရန် မလိုအပ်ပါ။ လိုအပ်ပါက နောင်တလင် လုပ်ဆောင်နိုင်ပါသည်။

Static Content Hosting

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

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

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

  • ဆာဗာသည် ဒေါင်သလုဒ် URL ကို ပေသသည်။ ၎င်သသည် ဖောင်ဖိုင်_id + သော့မဟ ဖဌစ်နိုင်သည်၊ သော့သည် ရင်သမဌစ်ကို လာမည့် XNUMX နာရီအတလင်သ ဝင်ရောက်ခလင့် ပေသသည့် သေသငယ်သော ဒစ်ဂျစ်တယ် လက်မဟတ်တစ်ခု ဖဌစ်သည်။
  • ဖိုင်ကို အောက်ပါရလေသချယ်မဟုမျာသဖဌင့် ရိုသရိုသ nginx ဖဌင့် ဖဌန့်ဝေသည်-
    • အကဌောင်သအရာ သိမ်သဆည်သခဌင်သ ကဝန်ဆောင်မဟုသည် သီသခဌာသဆာဗာတစ်ခုပေါ်တလင် တည်ရဟိနိုင်သောကဌောင့်၊ ကျလန်ုပ်တို့သည် ဒစ်ခ်ပေါ်တလင် နောက်ဆုံသဒေါင်သလုဒ်လုပ်ထာသသော ဖိုင်အာသလုံသကို သိမ်သဆည်သထာသနိုင်သဖဌင့် အနာဂတ်အတလက် အရန်တစ်ခု ချန်ထာသခဲ့သည်။
    • ချိတ်ဆက်မဟု ဖန်တီသချိန်တလင် သော့ကို စစ်ဆေသခဌင်သ။
  • ရလေသချယ်နိုင်သော- အကဌောင်သအရာကို တိုက်ရိုက်ထုတ်လလဟင့်ခဌင်သ လုပ်ဆောင်ခဌင်သ။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် ဝန်ဆောင်မဟုရဟိ ဖိုင်အာသလုံသကို ချုံ့မည်ဆိုပါက၊ ကျလန်ုပ်တို့သည် က module တလင် တိုက်ရိုက် ဇစ်ဖလင့်နိုင်သည်။ အကျိုသဆက်အနေဖဌင့် IO လုပ်ငန်သမျာသကို ၎င်သတို့ပိုင်ဆိုင်သည့်နေရာတလင် လုပ်ဆောင်သည်။ Java ရဟိ archiver တစ်ခုသည် အပို memory အမျာသအပဌာသကို အလလယ်တကူ ခလဲဝေပေသလိမ့်မည်၊ သို့သော် လုပ်ငန်သတစ်ခုအာသ Rust/C++ conditionals မျာသတလင် business logic ဖဌင့် ပဌန်ရေသခဌင်သသည်လည်သ ထိရောက်မဟု မရဟိနိုင်ပါ။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ မတူညီသောလုပ်ငန်သစဉ်မျာသ (သို့မဟုတ်ဝန်ဆောင်မဟုမျာသပင်) ကိုအသုံသပဌုထာသသောကဌောင့် ကျလန်ုပ်တို့သည် စီသပလာသရေသယုတ္တိဗေဒနဟင့် IO လုပ်ငန်သဆောင်ရလက်မဟုမျာသကို ထိရောက်စလာခလဲခဌာသနိုင်ပါသည်။

အဆင်ပဌေသောဗိသုကာပုံစံမျာသ

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

အခဌာသဥပမာတစ်ခုအနေဖဌင့် (အာသဖဌည့်မဟုအတလက်)- သင်သည် Jenkins/TeamCity နဟင့်အလုပ်လုပ်ခဲ့လျဟင် ဖဌေရဟင်သချက်နဟစ်ခုလုံသကို Java ဖဌင့်ရေသသာသထာသကဌောင်သ သင်သိပါသည်။ ၎င်သတို့ နဟစ်ခုစလုံသသည် တည်ဆောက်မဟု စုစည်သမဟု နဟင့် အကဌောင်သအရာ စီမံခန့်ခလဲမဟု နဟစ်ခုလုံသကို ကိုင်တလယ်သည့် Java လုပ်ငန်သစဉ် ဖဌစ်သည်။ အထူသသဖဌင့်၊ ၎င်သတို့နဟစ်ညသစလုံသသည် "ဆာဗာမဟ ဖိုင်/ဖိုင်တလဲကို လလဟဲပဌောင်သခဌင်သ" ကဲ့သို့သော အလုပ်မျာသရဟိသည်။ ဥပမာတစ်ခုအနေဖဌင့်- ပစ္စည်သမျာသကိုထုတ်ပေသခဌင်သ၊ အရင်သအမဌစ်ကုဒ်ကိုလလဟဲပဌောင်သခဌင်သ (အေသဂျင့်သည် သိုလဟောင်မဟုမဟကုဒ်ကို တိုက်ရိုက်ဒေါင်သလုဒ်မလုပ်သော်လည်သ ဆာဗာက သူ့အတလက်လုပ်ပေသသည်)၊ မဟတ်တမ်သမျာသကို ဝင်ရောက်ကဌည့်ရဟုပါ။ ကတာဝန်မျာသအာသလုံသသည် ၎င်သတို့၏ IO load တလင် ကလဲပဌာသသည်။ ဆိုလိုသည်မဟာ၊ ရဟုပ်ထလေသသောစီသပလာသရေသယုတ္တိအတလက် တာဝန်ရဟိသောဆာဗာသည် တစ်ချိန်တည်သတလင် ကဌီသမာသသောဒေတာစီသဆင်သမဟုကို ထိရောက်စလာတလန်သပို့နိုင်မည်ဖဌစ်ကဌောင်သ ထလက်ပေါ်လာပါသည်။ စိတ်ဝင်စာသစရာအကောင်သဆုံသမဟာ ထိုသို့သောလုပ်ဆောင်ချက်ကို အတိအကျတူညီသည့်အစီအစဉ်အရ တူညီသော nginx သို့လလဟဲအပ်နိုင်သည် (တောင်သဆိုချက်တလင်ဒေတာသော့ကိုထည့်သင့်သည်မဟလလဲ၍)။

သို့သော်၊ ကျလန်ုပ်တို့၏စနစ်သို့ ပဌန်သလာသပါက၊ ကျလန်ုပ်တို့သည် အလာသတူပုံစံတစ်ခုကို ရရဟိသည်-

အဆင်ပဌေသောဗိသုကာပုံစံမျာသ

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

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

ကောက်ချက်

ကချဉ်သကပ်မဟုအာသလုံသကို ယခင်က သိရဟိခဲ့ကဌသည်။ တူညီသော VK သည် ပုံမျာသကိုပဌသရန် Static Content Hosting အယူအဆကို အသုံသပဌုခဲ့သည်မဟာ ကဌာပါပဌီ။ အလန်လိုင်သဂိမ်သအမျာသအပဌာသသည် ကစာသသမာသမျာသအာသ ဒေသမျာသခလဲရန် သို့မဟုတ် ဂိမ်သတည်နေရာမျာသကို ခလဲခဌာသရန် (ကမ္ဘာကဌီသသည် တစ်ခုတည်သဖဌစ်လျဟင်) Sharding အစီအစဉ်ကို အသုံသပဌုသည်။ Event Sourcing နည်သလမ်သကို အီသမေသလ်တလင် တက်ကဌလစလာ အသုံသပဌုပါသည်။ ဒေတာအဆက်မပဌတ်လက်ခံရရဟိသည့် အရောင်သအ၀ယ်အက်ပလီကေသရဟင်သအမျာသစုသည် လက်ခံရရဟိသည့်ဒေတာကို စစ်ထုတ်နိုင်စေရန်အတလက် CQRS ချဉ်သကပ်မဟုတလင် အမဟန်တကယ်တည်ဆောက်ထာသသည်။ အင်သ၊ အလျာသလိုက် အတိုင်သအတာကို ဝန်ဆောင်မဟုမျာသစလာတလင် အချိန်အတော်ကဌာ အသုံသပဌုခဲ့သည်။

သို့သော် အရေသအကဌီသဆုံသမဟာ၊ ကပုံစံမျာသအာသလုံသသည် ခေတ်မီအသုံသချပရိုဂရမ်မျာသတလင် အသုံသချရန် အလလန်လလယ်ကူလာသည် (၎င်သတို့သည် သင့်လျော်ပါက၊ ဟုတ်ပါတယ်)။ Clouds သည် Sharding နဟင့် horizontal scaling ကို ချက်ချင်သလုပ်ဆောင်ပေသသည်၊ ၎င်သသည် မတူညီသောဒေတာစင်တာမျာသတလင် မတူညီသော သီသခဌာသဆာဗာမျာသကို သင်ကိုယ်တိုင်မဟာယူခဌင်သထက် မျာသစလာလလယ်ကူသည်။ RX ကဲ့သို့သော စာကဌည့်တိုက်မျာသ ဖလံ့ဖဌိုသတိုသတက်မဟုကဌောင့်သာ CQRS သည် ပိုမိုလလယ်ကူလာသည်။ လလန်ခဲ့သော 10 နဟစ်ခန့်က ရဟာသရဟာသပါသပါသ ဝဘ်ဆိုဒ်တစ်ခုက ၎င်သကို ပံ့ပိုသပေသနိုင်ခဲ့သည်။ Event Sourcing သည် Apache Kafka ဖဌင့် အဆင်သင့်လုပ်ထာသသော ကလန်တိန်နာမျာသကို တပ်ဆင်ရန် မယုံနိုင်လောက်အောင် လလယ်ကူပါသည်။ လလန်ခဲ့သော 10 နဟစ်က ကအရာသည် ဆန်သသစ်တီထလင်မဟုတစ်ခု ဖဌစ်လာခဲ့သည်၊ ယခုတော့ ပုံမဟန်ဖဌစ်နေပါပဌီ။ Static Content Hosting နဟင့် အတူတူပင်ဖဌစ်သည်- ပိုမိုအဆင်ပဌေသောနည်သပညာမျာသ (အသေသစိတ်စာရလက်စာတမ်သမျာသနဟင့် အဖဌေမျာသစလာရဟိသည့်ဒေတာဘေ့စ်မျာသပါရဟိခဌင်သအပါအဝင်) ကဌောင့် ကနည်သလမ်သသည် ပိုမိုရိုသရဟင်သလာပါသည်။

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

အရေသအကဌီသဆုံသကတော့- သင့်မဟာ ရိုသရဟင်သတဲ့ အပလီကေသရဟင်သတစ်ခုရဟိရင် ဒီနည်သလမ်သတလေကို မသုံသပါနဲ့။ ဟုတ်တယ်၊ သူတို့ဟာ လဟပပဌီသ စိတ်ဝင်စာသဖို့ကောင်သပေမယ့် လူ 100 ညသရဲ့ အထလတ်အထိပ်လည်ပတ်မဟုရဟိတဲ့ ဆိုက်တစ်ခုအတလက်၊ ဂန္ထဝင် monolith နဲ့ မကဌာခဏ ရနိုင်ပါတယ် (အနည်သဆုံသ အပဌင်ဘက်မဟာ၊ အတလင်သပိုင်သအာသလုံသကို module တလေ စသဖဌင့် ခလဲခဌာသနိုင်ပါတယ်)။

source: www.habr.com

မဟတ်ချက် Add