ဗိသုကာလက်ရာရွေးချယ်မှုအပိုင်း (၃)

မင်္ဂလာပါ Habr ဒီနေ့တော့ သင်တန်းအသစ်တစ်ခုစဖို့ အထူးတလည်ရေးထားတဲ့ စာအုပ်စာတမ်းတွေကို ဆက်တိုက်လုပ်နေပါတယ်။ "ဆော့ဖ်ဝဲဗိသုကာ".

နိဒါန်း

ဗိသုကာစတိုင်လ် ရွေးချယ်မှုသည် အချက်အလက်စနစ်တစ်ခု တည်ဆောက်ရာတွင် အခြေခံကျသော နည်းပညာဆိုင်ရာ ဆုံးဖြတ်ချက်များထဲမှ တစ်ခုဖြစ်သည်။ ဤဆောင်းပါးအတွဲလိုက်တွင်၊ ဆောက်လုပ်ရေးလုပ်ငန်းသုံးအတွက် ရေပန်းအစားဆုံး ဗိသုကာပုံစံများကို ခွဲခြမ်းစိတ်ဖြာပြီး မည်သည့်ဗိသုကာစတိုင်ကို ပိုနှစ်သက်သနည်းဟူသော မေးခွန်းကို ဖြေရန် အဆိုပြုပါသည်။ တင်ဆက်မှုလုပ်ငန်းစဉ်တွင်၊ monoliths မှ microservices အထိ ဗိသုကာပုံစံများ ဖွံ့ဖြိုးတိုးတက်မှုကို ရှင်းပြသည့် ယုတ္တိကွင်းဆက်တစ်ခုဆွဲရန် ကြိုးစားပါမည်။

В နောက်ဆုံးအချိန် ကျွန်ုပ်တို့သည် monolith ကိုကိုင်တွယ်ဖြေရှင်းပြီး monolith တွင်ပြဿနာများစွာရှိသည်- အရွယ်အစား၊ ချိတ်ဆက်မှု၊ အသုံးချမှု၊ အတိုင်းအတာ၊ ယုံကြည်စိတ်ချရမှုနှင့်တင်းကျပ်မှုရှိကြောင်းနိဂုံးချုပ်လာသည်။

ဒီတစ်ခါတော့ modules/libraries (component-oriented architecture) ဒါမှမဟုတ် services (service-oriented architecture) အစုအဝေးတစ်ခုအနေနဲ့ system တစ်ခုကို စုစည်းဖို့ ဖြစ်နိုင်ချေတွေအကြောင်း ဆွေးနွေးဖို့ အကြံပြုချင်ပါတယ်။

အစိတ်အပိုင်းဆန်တဲ့ ဗိသုကာပညာ

အစိတ်အပိုင်း-ဆန်သော ဗိသုကာလက်ရာသည် လက်ရှိနှင့် အနာဂတ်ပရောဂျက်များတွင် အသုံးပြုနိုင်သည့် အစိတ်အပိုင်းများအစုတစ်ခုအနေဖြင့် စနစ်တစ်ခုကို အကောင်အထည်ဖော်ခြင်း ပါဝင်သည်။ စနစ်တစ်ခုအား အစိတ်အပိုင်းများအဖြစ် ခွဲခြမ်းလိုက်သောအခါ အောက်ပါတို့ကို ထည့်သွင်းစဉ်းစားသည်- ၎င်းတို့၏ ပြန်လည်အသုံးပြုနိုင်မှု၊ ၎င်းတို့၏ အစားထိုးနိုင်မှု၊ ဆက်စပ်မှု လွတ်လပ်မှု၊ ချဲ့ထွင်နိုင်မှု၊ ကက်ပ်ခွဲမှုနှင့် လွတ်လပ်မှုတို့ကို ထည့်သွင်းစဉ်းစားသည်။

အစိတ်အပိုင်းများကို သင့်လျော်စွာအသုံးပြုခြင်းဖြင့်၊ "ဖုန်ဘောလုံးကြီး" (အရွယ်အစားကြီး + မြင့်မားသောချိတ်ဆက်မှု) ၏ပြဿနာကို ဖြေရှင်းနိုင်ပြီး အစိတ်အပိုင်းများသည် တပ်ဆင်ယူနစ်များ (မော်ဂျူးများ၊ စာကြည့်တိုက်များ) နှင့် ဖြန့်ကျက်ယူနစ်များ (ဝန်ဆောင်မှုများ) နှစ်မျိုးလုံးဖြစ်နိုင်ပါသည်။ ဖြန့်ကျက်ယူနစ်များကို လည်ပတ်နေသည့် လုပ်ငန်းစဉ်တွင် အမြဲတမ်း ပုံဖော်ထားခြင်းမရှိပါ- ဥပမာ၊ ဝဘ်အပလီကေးရှင်းတစ်ခုနှင့် ဒေတာဘေ့စ်တစ်ခုကို အတူတကွ ဖြန့်ကျက်ထားသည်။

အများစုမှာ monoliths များကို module အစုတစ်ခုအဖြစ် တီထွင်ကြသည်။ ဤချဉ်းကပ်မှုသည် လွတ်လပ်သော ဖွံ့ဖြိုးတိုးတက်မှုကို ဦးတည်သော်လည်း လွတ်လပ်သော အတိုင်းအတာနှင့် ဖြန့်ကျက်မှုဆိုင်ရာ ပြဿနာများ၊ အမှားအယွင်းများကို ခံနိုင်ရည်ရှိမှုနှင့် အလုံးစုံနည်းပညာအစုအဝေးမှ အမှီအခိုကင်းမှု ပြဿနာများ ကျန်ရှိနေပါသည်။ ထို့ကြောင့် module သည် တစ်စိတ်တစ်ပိုင်း လွတ်လပ်သော အစိတ်အပိုင်းတစ်ခုဖြစ်သည်။

ထိုကဲ့သို့သော monolith ၏အကြီးမားဆုံးပြဿနာမှာ modules များအဖြစ်သို့ခွဲဝေခြင်းသည်ယုတ္တိသက်သက်ဖြစ်ပြီး developer များမှအလွယ်တကူချိုးဖောက်နိုင်ခြင်းကြောင့်ဖြစ်သည်။ အမှိုက်ပုံးအဖြစ်သို့ တဖြည်းဖြည်းပြောင်းလဲသွားသည့် core module တစ်ခု ပေါ်လာနိုင်သည်၊ modules များကြားတွင် မှီခိုမှုဂရပ်များ ကြီးထွားလာနိုင်သည်၊ အစရှိသည်ဖြင့်။ ထိုသို့သောပြဿနာများကိုရှောင်ရှားရန်၊ ဖွံ့ဖြိုးတိုးတက်မှုကို အလွန်ရင့်ကျက်သောအဖွဲ့တစ်ခုမှဖြစ်စေ သို့မဟုတ် အချိန်ပြည့်ကုဒ်ပြန်လည်သုံးသပ်ခြင်းတွင် ပါဝင်နေသော “ဗိသုကာပညာရှင်” ၏ လမ်းညွှန်မှုအောက်တွင် ဖွံ့ဖြိုးတိုးတက်မှုကို ယုတ္တိနည်းကျသောတည်ဆောက်မှုပုံစံကိုချိုးဖောက်သော developer များလက်ထဲသို့ ကျော်လွှားနိုင်မည်ဖြစ်သည်။

"ideal" monolith သည် ယုတ္တိနည်းကျကျ ပိုင်းခြားထားသော module အစုတစ်ခုဖြစ်ပြီး တစ်ခုချင်းစီသည် ၎င်း၏ကိုယ်ပိုင်ဒေတာဘေ့စ်သို့ ကြည့်ရှုသည်။

ဝန်ဆောင်မှုကို ဦးတည်သော ဗိသုကာပညာ

အကယ်၍ စနစ်အား ဝန်ဆောင်မှုအစုတစ်ခု၏ ပုံစံဖြင့် ဖွဲ့စည်းထားမည်ဆိုပါက၊ ကျွန်ုပ်တို့သည် ဝန်ဆောင်မှုကို ဦးတည်သော ဗိသုကာတစ်ခုအကြောင်း ပြောနေပါသည်။ ၎င်း၏အခြေခံမူများမှာ အသုံးပြုသူဗဟိုပြု အက်ပ်လီကေးရှင်း အပြန်အလှန်လုပ်ဆောင်နိုင်မှု၊ လုပ်ငန်းဝန်ဆောင်မှုပြန်လည်အသုံးပြုမှု၊ နည်းပညာအစုအဝေး လွတ်လပ်မှုနှင့် ကိုယ်ပိုင်အုပ်ချုပ်ခွင့် (လွတ်လပ်သောဆင့်ကဲဖြစ်စဉ်၊ ချဲ့ထွင်နိုင်မှုနှင့် အသုံးချမှု) တို့ဖြစ်သည်။

Service-oriented architecture (SOA = service oriented architecture) သည် monolith ၏ ခွဲခြားသတ်မှတ်ထားသော ပြဿနာအားလုံးကို ဖြေရှင်းပေးသည်- အပြောင်းအလဲတစ်ခုဖြစ်ပေါ်သည့်အခါ ဝန်ဆောင်မှုတစ်ခုသာ ထိခိုက်နိုင်ပြီး ကောင်းစွာသတ်မှတ်ထားသော API သည် အစိတ်အပိုင်းများ၏ ကက်ပ်ပေါင်းကို ကောင်းကောင်းပံ့ပိုးပေးပါသည်။

သို့သော် အရာအားလုံးသည် ဤမျှချောမွေ့သည်မဟုတ်ပေ- SOA သည် ပြဿနာအသစ်များကို ဖန်တီးပေးသည်။ အဝေးထိန်းဖုန်းခေါ်ဆိုမှုများသည် ဒေသန္တရဖုန်းများထက် ပိုစျေးကြီးပြီး အစိတ်အပိုင်းများကြားတွင် တာဝန်ခွဲဝေပေးခြင်းသည် သိသိသာသာ ပိုစျေးကြီးလာသည်။

စကားမစပ်၊ အမှီအခိုကင်းစွာ ဖြန့်ကျက်နိုင်ခြေသည် ဝန်ဆောင်မှု၏ အလွန်အရေးကြီးသော အင်္ဂါရပ်တစ်ခုဖြစ်သည်။ ဝန်ဆောင်မှုများကို အတူတကွ အသုံးချရမည်ဆိုလျှင် သို့မဟုတ် အချို့သော အစီအစဉ်တစ်ခုတွင်၊ ယင်းစနစ်အား ဝန်ဆောင်မှုကို ဦးတည်သည်ဟု မယူဆနိုင်ပါ။ ဤကိစ္စတွင်၊ ၎င်းတို့သည် ဖြန့်ဝေထားသော monolith အကြောင်း (SOA ၏အမြင်တွင်သာမက microservice ဗိသုကာအမြင်တွင်လည်း ဆန့်ကျင်သည့်ပုံစံဟု ယူဆကြသည်)။

ဝန်ဆောင်မှုကို ဦးတည်သော ဗိသုကာလက်ရာကို ဗိသုကာအသိုင်းအဝိုင်းနှင့် ရောင်းချသူများမှ ကောင်းစွာပံ့ပိုးထားသည်။ ၎င်းသည် သင်တန်းများနှင့် အောင်လက်မှတ်များ၊ ကောင်းမွန်စွာ တီထွင်ထားသော ပုံစံများ အများအပြား ရှိနေခြင်းကို ဆိုလိုသည်။ ဥပမာ၊ လူသိများသော လုပ်ငန်းဝန်ဆောင်မှုဘတ်စ် (ESB = လုပ်ငန်းဝန်ဆောင်မှုဘတ်စ်) ပါဝင်သည်။ တစ်ချိန်တည်းမှာပင် ESB သည် ရောင်းချသူများထံမှ အိတ်တစ်လုံးဖြစ်ပြီး SOA တွင် အသုံးပြုရန်မလိုအပ်ပါ။

ဝန်ဆောင်မှုဦးတည်သော ဗိသုကာလက်ရာများ၏ လူကြိုက်များမှုသည် 2008 ခုနှစ်ဝန်းကျင်တွင် အထွတ်အထိပ်သို့ရောက်ရှိသွားပြီး နောက်ပိုင်းတွင် ၎င်းသည် ကျဆင်းလာကာ microservices (~2015) ထွန်းကားလာပြီးနောက် သိသာထင်ရှားစွာ သိသာထင်ရှားလာခဲ့သည်။

ကောက်ချက်

ဝန်ဆောင်မှုများနှင့် မော်ဂျူးများပုံစံဖြင့် သတင်းစနစ်များ စုစည်းခြင်းဆိုင်ရာ ဖြစ်နိုင်ခြေများကို ဆွေးနွေးပြီးနောက်၊ နောက်ဆုံးတွင် microservice ဗိသုကာ၏ အခြေခံမူများကို ဆက်လက်လုပ်ဆောင်ပြီး နောက်အပိုင်းတွင် microservice architecture နှင့် service-oriented architecture အကြား ခြားနားချက်ကို အထူးအာရုံစိုက်ရန် အဆိုပြုပါသည်။

ဗိသုကာလက်ရာရွေးချယ်မှုအပိုင်း (၃)

source: www.habr.com

မှတ်ချက် Add