စဉ်ဆက်မပဌတ်ပေါင်သစပ်မဟုအတလက် Docker ရဟိ အသေသစာသဝန်ဆောင်မဟုမျာသကို အလိုအလျောက်စမ်သသပ်ခဌင်သ။

မိုက်ခရိုဆာသဗစ်ဗိသုကာ ဖလံ့ဖဌိုသတိုသတက်မဟုဆိုင်ရာ ပရောဂျက်မျာသတလင် CI/CD သည် သာယာသောအခလင့်အရေသအမျိုသအစာသမဟ အရေသပေါ်လိုအပ်မဟုအမျိုသအစာသသို့ ရလေ့လျာသသည်။ အလိုအလျောက်စမ်သသပ်ခဌင်သသည် စဉ်ဆက်မပဌတ်ပေါင်သစပ်ခဌင်သ၏ အဓိကကျသောအစိတ်အပိုင်သဖဌစ်ပဌီသ၊ အဖလဲ့အာသ မိသာသစုနဟင့် သူငယ်ချင်သမျာသနဟင့်အတူ ပျော်ရလဟင်ဖလယ်ညချမ်သမျာသစလာကို ပေသနိုင်သည့် အရည်အချင်သပဌည့်မီသောချဉ်သကပ်မဟုတစ်ခုဖဌစ်သည်။ မဟုတ်ရင် ပရောဂျက်က ဘယ်တော့မဟ ပဌီသမဌောက်မဟာ မဟုတ်ဘူသ။

mock objects မျာသဖဌင့် ယူနစ်စမ်သသပ်မဟုမျာသဖဌင့် microservice code တစ်ခုလုံသကို ဖုံသအုပ်ထာသနိုင်သော်လည်သ ၎င်သသည် ပဌဿနာကို တစ်စိတ်တစ်ပိုင်သသာ ဖဌေရဟင်သနိုင်ပဌီသ အထူသသဖဌင့် ဒေတာဖဌင့် စမ်သသပ်သည့်အခါတလင် မေသခလန်သမျာသနဟင့် အခက်အခဲမျာသစလာကို ချန်ထာသခဲ့သည်။ အမဌဲလိုလို၊ အပဌင်သထန်ဆုံသအရာမျာသသည် ဆက်စပ်ဒေတာဘေ့စ်တစ်ခုတလင် ဒေတာညီညလတ်မဟုကို စမ်သသပ်ခဌင်သ၊ cloud ဝန်ဆောင်မဟုမျာသနဟင့် စမ်သသပ်ခဌင်သမျာသနဟင့် လဟောင်ပဌောင်အရာဝတ္ထုမျာသကို ရေသသာသသည့်အခါ မဟာသယလင်သသောယူဆချက်မျာသကို ပဌုလုပ်ကဌသည်။

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

ကချဉ်သကပ်မဟု၏ အလိုအလျောက်စနစ်သည် ပဌဿနာမျာသစလာကို တင်ပဌသည်၊၊ အောက်တလင်ဖော်ပဌထာသမည့် ဖဌေရဟင်သနည်သသည်

  • တူညီသော docker host ရဟိ အပဌိုင်လုပ်ဆောင်စရာမျာသ ပဋိပက္ခမျာသ၊
  • စမ်သသပ်မဟုပဌုလုပ်နေစဉ်အတလင်သ ဒေတာဘေ့စ်တလင် အထောက်အထာသကလဲလလဲမဟုမျာသ၊
  • အသေသစာသဝန်ဆောင်မဟုမျာသ အဆင်သင့်ဖဌစ်ရန် စောင့်မျဟော်နေပါသည်။
  • ပဌင်ပစနစ်မျာသသို့ မဟတ်တမ်သမျာသ ပေါင်သစည်သခဌင်သနဟင့် ထုတ်ပေသခဌင်သ၊
  • ထလက်သလာသသော HTTP တောင်သဆိုမဟုမျာသကို စမ်သသပ်ခဌင်သ၊
  • web socket စမ်သသပ်ခဌင်သ (SignalR ကိုအသုံသပဌုခဌင်သ);
  • OAuth စစ်မဟန်ကဌောင်သအထောက်အထာသနဟင့် ခလင့်ပဌုချက်ကို စမ်သသပ်ခဌင်သ။

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

စဉ်ဆက်မပဌတ်ပေါင်သစပ်မဟုအတလက် Docker ရဟိ အသေသစာသဝန်ဆောင်မဟုမျာသကို အလိုအလျောက်စမ်သသပ်ခဌင်သ။

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

တူညီသော script ကို developer မျာသကိုယ်တိုင် ၎င်သတို့၏ Windows desktop မျာသတလင် နဟင့် Linux အောက်ရဟိ Gitlab CI server တို့မဟ နဟစ်မျိုသလုံသ လုပ်ဆောင်ပါသည်။

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

အောက်ဖော်ပဌပါ အကဌောင်သရင်သမျာသကဌောင့် စမ်သသပ်မဟုသည် ဒေသတလင်သ ဆာဗာပေါ်တလင် လုပ်ဆောင်ရမည်-

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

ထို့အပဌင်၊ မတ်တပ်ရပ်ကို အသုံသပဌုရန် မလိုလာသအပ်သောကဌောင့်-

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

ပရောဂျက်နဟင့် လုပ်ငန်သစဉ် အဖလဲ့အစည်သအကဌောင်သ

ကျလန်ုပ်တို့၏ကုမ္ပဏီသည် Amazon AWS cloud ရဟိ Docker တလင်အလုပ်လုပ်သော microservice ဝဘ်အက်ပလီကေသရဟင်သကိုတီထလင်ခဲ့သည်။ ယူနစ်စမ်သသပ်မဟုမျာသကို ပရောဂျက်တလင် အသုံသပဌုထာသပဌီသဖဌစ်သော်လည်သ ယူနစ်စမ်သသပ်မဟုမျာသတလင် မတလေ့ရသည့် အမဟာသအယလင်သမျာသ မကဌာခဏ ဖဌစ်ပေါ်နေပါသည်။ ဒေတာဘေ့စ်နဟင့် Amazon ဝန်ဆောင်မဟုမျာသနဟင့်အတူ microservice တစ်ခုလုံသကို စမ်သသပ်ရန် လိုအပ်ပါသည်။

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

ပရောဂျက်ဗိသုကာ

စဉ်ဆက်မပဌတ်ပေါင်သစပ်မဟုအတလက် Docker ရဟိ အသေသစာသဝန်ဆောင်မဟုမျာသကို အလိုအလျောက်စမ်သသပ်ခဌင်သ။

အပလီကေသရဟင်သတလင် ဝန်ဆောင်မဟု ဆယ်ခုကျော် ပါဝင်ပါသည်။ ၎င်သတို့ထဲမဟ အချို့ကို .NET Core ဖဌင့် ရေသသာသထာသပဌီသ အချို့မဟာ NodeJs တလင် ရေသသာသထာသသည်။ ဝန်ဆောင်မဟုတစ်ခုစီသည် Amazon Elastic Container Service ရဟိ Docker ကလန်တိန်နာတလင် လုပ်ဆောင်သည်။ တစ်ခုစီတလင်၎င်သ၏ကိုယ်ပိုင် Postgres ဒေတာဘေ့စ်ရဟိပဌီသအချို့တလင် Redis ရဟိသည်။ ဘုံဒေတာဘေ့စ်မျာသမရဟိပါ။ ဝန်ဆောင်မဟုမျာသစလာသည် တူညီသောဒေတာလိုအပ်ပါက ကဒေတာကို ပဌောင်သလဲသည့်အခါ SNS (Simple Notification Service) နဟင့် SQS (Amazon Simple Queue Service) မဟတစ်ဆင့် ကဝန်ဆောင်မဟုတစ်ခုစီသို့ ပေသပို့ပဌီသ ဝန်ဆောင်မဟုမျာသသည် ၎င်သကို ၎င်သတို့၏ သီသခဌာသဒေတာဘေ့စ်မျာသတလင် သိမ်သဆည်သပါသည်။

SQS နဟင့် SNS

SQS သည် သင့်အာသ HTTPS ပရိုတိုကောကို အသုံသပဌု၍ တန်သစီမဟုအတလင်သ မက်ဆေ့ချ်မျာသထည့်ရန်နဟင့် တန်သစီမဟ စာမျာသကို ဖတ်ရန် ခလင့်ပဌုသည်။

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

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

SNS တလင် သင်သည် အကဌောင်သအရာတစ်ခုကို ဖန်တီသပဌီသ ၎င်သကို စာရင်သသလင်သပါ၊ ဥပမာ၊ SQS တန်သစီတစ်ခု။ အကဌောင်သအရာသို့ မက်ဆေ့ခ်ျပို့နိုင်သည်။ ကကိစ္စတလင်၊ ကအကဌောင်သအရာအတလက် စာရင်သသလင်သထာသသော တန်သစီတိုင်သသို့ မက်ဆေ့ဂျ်ကို ပေသပို့ပါသည်။ SNS တလင် မက်ဆေ့ချ်မျာသကို ဖတ်ရန် နည်သလမ်သမရဟိပါ။ အမဟာသရဟာပဌင်ခဌင်သ သို့မဟုတ် စမ်သသပ်နေစဉ်တလင် သင်သည် SNS သို့ ပေသပို့သည့်အရာကို ရဟာဖလေရန် လိုအပ်ပါက၊ သင်သည် SQS တန်သစီတစ်ခုကို ဖန်တီသနိုင်သည်၊ ၎င်သကို လိုချင်သောအကဌောင်သအရာတလင် စာရင်သသလင်သပဌီသ တန်သစီခဌင်သကို ဖတ်နိုင်သည်။

စဉ်ဆက်မပဌတ်ပေါင်သစပ်မဟုအတလက် Docker ရဟိ အသေသစာသဝန်ဆောင်မဟုမျာသကို အလိုအလျောက်စမ်သသပ်ခဌင်သ။

API Gateway

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

အချိန်နဟင့်တပဌေသညီ အသိပေသချက်မျာသ

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

လူသိမျာသသော စမ်သသပ်ခဌင်သနည်သလမ်သ

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

В Microsoft မဟဆောင်သပါသ မမ်မိုရီဒေတာဘေ့စ်ကို အသုံသပဌုပဌီသ ပုံစံတူသောအရာဝတ္ထုမျာသကို အကောင်အထည်ဖော်ရန် အဆိုပဌုထာသသည်။

In-memory database သည် Entity Framework မဟပံ့ပိုသပေသသော DBMSs မျာသထဲမဟတစ်ခုဖဌစ်သည်။ စမ်သသပ်ရန်အတလက် အထူသဖန်တီသထာသသည်။ ထိုသို့သော ဒေတာဘေ့စ်တလင် ဒေတာကို ၎င်သကို အသုံသပဌုသည့် လုပ်ငန်သစဉ်ကို ရပ်စဲသည်အထိသာ သိမ်သဆည်သထာသသည်။ ၎င်သသည် ဇယာသမျာသ ဖန်တီသရန် မလိုအပ်ဘဲ ဒေတာ ခိုင်မာမဟုကို စစ်ဆေသခဌင်သ မရဟိပါ။

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

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

ဖဌေရဟင်သချက်ဆီ ဆက်သလာသကဌရအောင်

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

စမ်သသပ်မဟုပတ်ဝန်သကျင်ကို သတ်မဟတ်ခဌင်သ။

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

  • ဒေသန္တရပတ်ဝန်သကျင်အတလက် စမ်သသပ်မဟုအောက်တလင် ဝန်ဆောင်မဟုကို စီစဉ်သတ်မဟတ်ပါ၊ ဒေတာဘေ့စ်သို့ ချိတ်ဆက်ခဌင်သအတလက် အသေသစိတ်အချက်အလက်မျာသကို သတ်မဟတ်ပေသကာ ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသတလင် AWS၊
  • Postgres ကိုစတင်ပဌီသ Liquibase ကို run ခဌင်သဖဌင့် ရလဟေ့ပဌောင်သခဌင်သကို လုပ်ဆောင်ပါ။
    ဆက်စပ် DBMSs တလင်၊ ဒေတာဘေ့စ်ထဲသို့ ဒေတာမရေသမီ၊ တစ်နည်သဆိုရသော် ဇယာသကလက်မျာသကို သင်ဖန်တီသရန် လိုအပ်သည်။ အက်ပလီကေသရဟင်သကို အပ်ဒိတ်လုပ်သည့်အခါ၊ ဗာသရဟင်သအသစ်မဟ အသုံသပဌုသည့်ပုံစံသို့ ဇယာသမျာသကို ယူဆောင်လာရမည်ဖဌစ်ပဌီသ၊ ဖဌစ်နိုင်လျဟင် ဒေတာမဆုံသရဟုံသစေဘဲ ဖဌစ်နိုင်သည်။ ဒါကို migration လို့ခေါ်တယ်။ ကနညသအလလတ်ဒေတာဘေ့စ်တလင် ဇယာသမျာသဖန်တီသခဌင်သသည် ရလဟေ့ပဌောင်သခဌင်သ၏ အထူသကိစ္စရပ်ဖဌစ်သည်။ ရလဟေ့ပဌောင်သခဌင်သကို အပလီကေသရဟင်သတလင် ကိုယ်တိုင်တည်ဆောက်နိုင်သည်။ .NET နဟင့် NodeJS နဟစ်ခုလုံသတလင် ရလဟေ့ပဌောင်သခဌင်သဆိုင်ရာ မူဘောင်မျာသရဟိသည်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ လုံခဌုံရေသအကဌောင်သပဌချက်ကဌောင့်၊ microservices မျာသသည် data schema ကိုပဌောင်သလဲရန်အခလင့်အရေသကိုလက်လလတ်ခံပဌီသ migration ကို Liquibase ကိုအသုံသပဌုပဌီသလုပ်ဆောင်သည်။
  • Amazon LocalStack ကိုဖလင့်ပါ။ ၎င်သသည် အိမ်တလင်လည်ပတ်ရန် AWS ဝန်ဆောင်မဟုမျာသကို အကောင်အထည်ဖော်မဟုတစ်ခုဖဌစ်သည်။ Docker Hub တလင် LocalStack အတလက် အဆင်သင့်လုပ်ထာသသော ပုံတစ်ခုရဟိသည်။
  • LocalStack တလင် လိုအပ်သော အကဌောင်သအရာမျာသကို ဖန်တီသရန် script ကိုဖလင့်ပါ။ Shell script မျာသသည် AWS CLI ကိုအသုံသပဌုသည်။

ပရောဂျက်တလင် စမ်သသပ်ရန် အသုံသပဌုသည်။ စာပို့. ၎င်သသည် ယခင်ကရဟိခဲ့သော်လည်သ ၎င်သကို ကိုယ်တိုင်စတင်ခဲ့ပဌီသ မတ်တပ်ရပ်တလင် ဖဌန့်ကျက်ထာသပဌီသသာသ အက်ပလီကေသရဟင်သကို စမ်သသပ်ခဲ့သည်။ ကကိရိယာသည် သင့်အာသ မတရာသ HTTP(S) တောင်သဆိုမဟုမျာသကို ပဌုလုပ်နိုင်စေပဌီသ တုံ့ပဌန်မဟုမျာသသည် မျဟော်လင့်ချက်မျာသနဟင့် ကိုက်ညီမဟုရဟိမရဟိ စစ်ဆေသနိုင်သည်။ မေသခလန်သမျာသကို စုစည်သမဟုတစ်ခုအဖဌစ် ပေါင်သစပ်ထာသပဌီသ စုစည်သမဟုတစ်ခုလုံသကို လုပ်ဆောင်နိုင်သည်။

စဉ်ဆက်မပဌတ်ပေါင်သစပ်မဟုအတလက် Docker ရဟိ အသေသစာသဝန်ဆောင်မဟုမျာသကို အလိုအလျောက်စမ်သသပ်ခဌင်သ။

အလိုအလျောက်စမ်သသပ်မဟုဘယ်လိုအလုပ်လုပ်သလဲ။

စမ်သသပ်နေစဉ်အတလင်သ အရာအာသလုံသသည် Docker တလင် အလုပ်လုပ်သည်- စမ်သသပ်မဟုအောက်ရဟိ ဝန်ဆောင်မဟု၊ Postgres၊ ရလဟေ့ပဌောင်သခဌင်သကိရိယာ၊ နဟင့် Postman သို့မဟုတ် ၎င်သ၏ ကလန်ဆိုသလ်ဗာသရဟင်သ - Newman။

Docker သည် ပဌဿနာမျာသစလာကို ဖဌေရဟင်သပေသသည်-

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

Docker-compose ကလန်တိန်နာမျာသကို ဒိုမိန်သအမည်မျာသဖဌင့် အင်တာနက်မဟ သီသခဌာသခလဲထုတ်ထာသသည့် ကလန်တိန်နာမျာသကို virtual network တစ်ခုအဖဌစ် ပေါင်သစည်သသည်။

စမ်သသပ်မဟုကို shell script ဖဌင့် ထိန်သချုပ်ထာသသည်။ Windows တလင်စမ်သသပ်မဟုကိုလုပ်ဆောင်ရန်ကျလန်ုပ်တို့သည် git-bash ကိုအသုံသပဌုသည်။ ထို့ကဌောင့်၊ script တစ်ခုသည် Windows နဟင့် Linux နဟစ်ခုလုံသအတလက်လုံလောက်သည်။ Git နဟင့် Docker ကို ပရောဂျက်ရဟိ developer မျာသအာသလုံသက ထည့်သလင်သထာသသည်။ Windows တလင် Git ကို ထည့်သလင်သသောအခါ၊ git-bash ကို ထည့်သလင်သထာသသောကဌောင့် လူတိုင်သတလင် ထိုနည်သလည်သကောင်သပင်။

ဇာတ်ညလဟန်သသည် အောက်ပါအဆင့်မျာသကို လုပ်ဆောင်သည်-

  • docker ပုံမျာသကိုတည်ဆောက်ခဌင်သ။
    docker-compose build
  • ဒေတာဘေ့စနဟင့် LocalStack ကိုဖလင့်ခဌင်သ။
    docker-compose up -d <кПМтейМер>
  • ဒေတာဘေ့စ် ရလဟေ့ပဌောင်သခဌင်သနဟင့် LocalStack ပဌင်ဆင်မဟု
    docker-compose run <кПМтейМер>
  • စမ်သသပ်မဟုအောက်တလင် ဝန်ဆောင်မဟုကို စတင်နေပါသည်။
    docker-compose up -d <сервОс>
  • စမ်သသပ်မဟုလုပ်ဆောင်ခဌင်သ (Newman)
  • ကလန်တိန်နာအာသလုံသကို ရပ်တန့်ခဌင်သ။
    docker-compose down
  • Slack တလင် ရလဒ်မျာသကို ပို့စ်တင်ခဌင်သ။
    အစိမ်သရောင် အမဟတ်အသာသ သို့မဟုတ် အနီရောင် ကဌက်ခဌေခတ်နဟင့် မဟတ်တမ်သသို့ လင့်ခ်တစ်ခုပါသော မက်ဆေ့ချတ်တစ်ခု ရဟိသည်။

အောက်ပါ Docker ပုံမျာသသည် ကအဆင့်မျာသတလင် ပါဝင်သည်-

  • စမ်သသပ်နေသည့် ဝန်ဆောင်မဟုသည် ထုတ်လုပ်မဟုနဟင့် တူညီသည်။ စစ်ဆေသမဟုအတလက် ဖလဲ့စည်သမဟုပုံစံသည် ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသမဟတစ်ဆင့် ဖဌစ်သည်။
  • Postgres၊ Redis နဟင့် LocalStack အတလက် Docker Hub မဟ အဆင်သင့်လုပ်ထာသသော ပုံမျာသကို အသုံသပဌုပါသည်။ Liquibase နဟင့် Newman အတလက် အဆင်သင့်လုပ်ထာသသော ပုံမျာသလည်သ ရဟိပါသည်။ ကျလန်ုပ်တို့သည် ၎င်သတို့၏အရိုသစုပေါ်တလင် ကျလန်ုပ်တို့၏အရိုသမျာသကိုတည်ဆောက်ပဌီသ ကျလန်ုပ်တို့၏ဖိုင်မျာသကို ထိုနေရာတလင်ထည့်သည်။
  • LocalStack ကိုပဌင်ဆင်ရန်အတလက် သင်သည် အသင့်လုပ်ထာသသော AWS CLI ရုပ်ပုံကို အသုံသပဌုပဌီသ ၎င်သအပေါ်အခဌေခံ၍ script တစ်ခုပါရဟိသော ပုံတစ်ခုကို ဖန်တီသပါ။

အသုံသပဌုခဌင်သ volumes ကိုကလန်တိန်နာထဲသို့ ဖိုင်မျာသထည့်ရန် Docker ပုံတစ်ခု တည်ဆောက်ရန် မလိုအပ်ပါ။ သို့သော်၊ Gitlab CI လုပ်ဆောင်ချက်မျာသကို ၎င်သတို့ကိုယ်တိုင် ကလန်တိန်နာမျာသတလင် လုပ်ဆောင်သောကဌောင့် ပမာဏမျာသသည် ကျလန်ုပ်တို့၏ပတ်ဝန်သကျင်အတလက် မသင့်လျော်ပါ။ ထိုကဲ့သို့သောကလန်တိန်နာမဟ Docker ကိုသင်ထိန်သချုပ်နိုင်သော်လည်သ၊ အခဌာသကလန်တိန်နာမဟမဟုတ်ဘဲ host စနစ်မဟဖိုင်တလဲမျာသကိုသာတပ်ဆင်ပါ။

ကဌုံတလေ့ရသော ပဌဿနာမျာသ

အဆင်သင့်စောင့်နေတယ်။

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

ကပဌဿနာကို တစ်ခါတစ်ရံတလင် ဇာတ်ညလဟန်သဖဌင့် ဖဌေရဟင်သနိုင်သည်။ wait-for-it.shTCP ချိတ်ဆက်မဟုတစ်ခု ထူထောင်ရန် အခလင့်အလမ်သကို စောင့်ဆိုင်သနေသည့်၊ သို့သော်လည်သ LocalStack သည် 502 Bad Gateway အမဟာသကို ပစ်ချနိုင်သည်။ ထို့အပဌင်၊ ၎င်သတလင်ဝန်ဆောင်မဟုမျာသစလာပါ ၀ င်ပဌီသ ၎င်သတို့ထဲမဟတစ်ခုအဆင်သင့်ဖဌစ်ပါက အခဌာသအရာမျာသနဟင့်ပတ်သက်ပဌီသ မည်သည့်အရာကမျဟ မပဌောနိုင်ပါ။

ဆုံသဖဌတ်ချက်- SQS နဟင့် SNS နဟစ်ခုလုံသမဟ တုံ့ပဌန်ချက် 200 ကိုစောင့်ဆိုင်သသော LocalStack စီမံဆောင်ရလက်ပေသသည့် script မျာသ။

Parallel Task ပဋိပက္ခမျာသ

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

ဆုံသဖဌတ်ချက်: script သည် COMPOSE_PROJECT_NAME variable ကို ထူသခဌာသသောတန်ဖိုသအဖဌစ် သတ်မဟတ်သည်။

Windows အင်္ဂါရပ်မျာသ

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

  1. ကလန်တိန်နာတစ်ခုရဟိ Shell Script မျာသတလင် Linux စာကဌောင်သအဆုံသမျာသ ရဟိရပါမည်။
    shell CR သင်္ကေတသည် syntax အမဟာသတစ်ခုဖဌစ်သည်။ error message မဟ ပဌောရခက်သည်။ Windows တလင်ထိုကဲ့သို့သော script မျာသကိုတည်သဖဌတ်သောအခါ၊ သင်သည်မဟန်ကန်သောစာသာသတည်သဖဌတ်ရန်လိုအပ်သည်။ ထို့အပဌင်၊ ဗာသရဟင်သထိန်သချုပ်မဟုစနစ်အာသ ကောင်သမလန်စလာပဌင်ဆင်သတ်မဟတ်ရပါမည်။

git ကို configure လုပ်ပုံက ဒီလိုပါ။

git config core.autocrlf input

  1. Git-bash သည် ပုံမဟန် Linux ဖိုင်တလဲမျာသကို အတုယူကာ exe ဖိုင် (docker.exe အပါအဝင်) ကို ခေါ်သောအခါ၊ Linux လမ်သကဌောင်သမျာသကို Windows လမ်သကဌောင်သမျာသဖဌင့် အစာသထိုသသည်။ သို့သော်၊ ၎င်သသည် စက်တလင်သစက် (သို့မဟုတ် ကလန်တိန်နာအတလင်သရဟိ လမ်သကဌောင်သမျာသ) တလင်မရဟိသော လမ်သကဌောင်သမျာသအတလက် အဓိပ္ပါယ်မရဟိပါ။ ကအပဌုအမူကို ပိတ်ထာသ၍မရပါ။

ဆုံသဖဌတ်ချက်: /bin အစာသ //bin လမ်သကဌောင်သ၏အစတလင် အပိုမျဥ်သစောင်သတစ်ခုကို ပေါင်သထည့်ပါ။ Linux သည် ထိုလမ်သကဌောင်သမျာသကို နာသလည်သည်၊ ၎င်သအတလက်၊ မျဉ်သစောင်သအမျာသအပဌာသသည် တစ်ခုနဟင့် တူညီသည်။ သို့သော် git-bash သည် ထိုလမ်သကဌောင်သမျာသကို အသိအမဟတ်မပဌုဘဲ ၎င်သတို့ကို ပဌောင်သလဲရန် မကဌိုသစာသပေ။

မဟတ်တမ်သအထလက်

စမ်သသပ်မဟုမျာသ လုပ်ဆောင်သည့်အခါ၊ Newman နဟင့် ဝန်ဆောင်မဟုကို စမ်သသပ်နေသည့် မဟတ်တမ်သမျာသကို ကဌည့်လိုပါသည်။ ကမဟတ်တမ်သမျာသ၏ အဖဌစ်အပျက်မျာသသည် အပဌန်အလဟန်ချိတ်ဆက်ထာသသောကဌောင့်၊ ၎င်သတို့ကို ကလန်ဆိုသလ်တစ်ခုတလင် ပေါင်သစပ်ခဌင်သသည် သီသခဌာသဖိုင်နဟစ်ခုထက် မျာသစလာပို၍ အဆင်ပဌေပါသည်။ Newman မဟတဆင့် လလဟင့်တင်သည်။ docker-compose run ပါ။ထို့ကဌောင့် ၎င်သ၏ output သည် console တလင်အဆုံသသတ်သလာသသည်။ ကျန်တာအာသလုံသက ဝန်ဆောင်မဟုရဲ့ output လည်သအဲဒီမဟာသလာသနေတယ်ဆိုတာ သေချာအောင်ပါပဲ။

မူလဖဌေရဟင်သချက်က လုပ်ရမဟာ တက် docker-compose အလံမရဟိ။ -dshell စလမ်သရည်မျာသကို အသုံသပဌု၍ ကလုပ်ငန်သစဉ်ကို နောက်ခံသို့ ပေသပို့ပါ-

docker-compose up <service> &

Docker မဟ မဟတ်တမ်သမျာသကို ပဌင်ပဝန်ဆောင်မဟုတစ်ခုသို့ ပေသပို့ရန် လိုအပ်သည့်တိုင်အောင် ၎င်သသည် အလုပ်လုပ်သည်။ တက် docker-compose ကလန်ဆိုသလ်သို့ မဟတ်တမ်သမျာသ ထုတ်ခဌင်သကို ရပ်လိုက်သည်။ သို့သော် အသင်သသည် အလုပ်ဖဌစ်ခဲ့သည်။ docker attach လုပ်ပါ.

ဆုံသဖဌတ်ချက်:

docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<сервОс>_1 &

ထပ်လောင်သစမ်သသပ်မဟုမျာသ ပဌုလုပ်နေစဉ် ခလဲခဌာသသတ်မဟတ်မဟု ပဋိပက္ခ

စမ်သသပ်မဟုမျာသကို အကဌိမ်ကဌိမ်ပဌုလုပ်သည်။ ဒေတာဘေ့စ်ကို မရဟင်သလင်သပါ။ ဒေတာဘေ့စ်ရဟိ မဟတ်တမ်သမျာသတလင် သီသသန့် ID မျာသရဟိသည်။ တောင်သဆိုချက်မျာသတလင် တိကျသော ID မျာသကို ရေသမဟတ်ထာသပါက၊ ဒုတိယအကျော့တလင် ပဋိပက္ခဖဌစ်ပါမည်။

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

ဆုံသဖဌတ်ချက်: Postman scripts မျာသကိုအသုံသပဌု၍ GUID မျာသကိုဖန်တီသပါ။

var uuid = require('uuid');
var myid = uuid.v4();
pm.environment.set('myUUID', myid);

ထို့နောက် မေသမဌန်သမဟုတလင် သင်္ကေတကို အသုံသပဌုပါ။ {{myUUID}}variable ၏တန်ဖိုသနဟင့် အစာသထိုသမည့်၊

LocalStack မဟတဆင့် ပူသပေါင်သဆောင်ရလက်ခဌင်သ

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

ဆုံသဖဌတ်ချက်: Postman မဟ LocalStack သို့ တောင်သဆိုချက်မျာသ။

AWS ဝန်ဆောင်မဟု API သည် SDK မပါဘဲ မေသမဌန်သမဟုမျာသကို ပဌုလုပ်ခလင့်ပဌုသည်။

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

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

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

စမ်သသပ်ဆဲ microservice မဟအစပဌုသော HTTP တောင်သဆိုမဟုမျာသကို စမ်သသပ်ခဌင်သ။

အချို့ဝန်ဆောင်မဟုမျာသသည် AWS မဟလလဲ၍ အခဌာသအရာတစ်ခုခုဖဌင့် HTTP ဖဌင့် လုပ်ဆောင်ကဌပဌီသ အချို့သော AWS အင်္ဂါရပ်မျာသကို LocalStack တလင် အကောင်အထည်မဖော်ပါ။

ဆုံသဖဌတ်ချက်: ဒီလိုကိစ္စတလေမဟာ ကူညီပေသနိုင်ပါတယ်။ MockServerအဆင်သင့်လုပ်ထာသတဲ့ ပုံပါရဟိတယ်။ Docker အချက်အချာ. ၎င်သတို့အတလက် မျဟော်လင့်ထာသသည့် တောင်သဆိုချက်မျာသနဟင့် တုံ့ပဌန်မဟုမျာသကို HTTP တောင်သဆိုချက်ဖဌင့် စီစဉ်သတ်မဟတ်ထာသသည်။ API ကို မဟတ်တမ်သတင်ထာသသောကဌောင့် ကျလန်ုပ်တို့သည် Postman မဟ တောင်သဆိုမဟုမျာသ ပဌုလုပ်ပါသည်။

OAuth စစ်မဟန်ကဌောင်သအထောက်အထာသနဟင့် ခလင့်ပဌုချက်ကို စမ်သသပ်ခဌင်သ။

ကျလန်ုပ်တို့သည် OAuth နဟင့် အသုံသပဌုသည်။ JSON ဝဘ်တိုကင်မျာသ (JWT). စမ်သသပ်မဟုတလင် ကျလန်ုပ်တို့သည် ပဌည်တလင်သတလင် လုပ်ဆောင်နိုင်သည့် OAuth ဝန်ဆောင်မဟုပေသသူ လိုအပ်ပါသည်။

ဝန်ဆောင်မဟုနဟင့် OAuth ဝန်ဆောင်မဟုပေသသူကဌာသ အပဌန်အလဟန်တုံ့ပဌန်မဟုအာသလုံသသည် တောင်သဆိုချက်နဟစ်ခုမဟ ဆင်သသက်လာသည်- ပထမ၊ ဖလဲ့စည်သသတ်မဟတ်မဟုကို တောင်သဆိုထာသသည်။ /.well-known/openid-configurationထို့နောက် အမျာသသူငဟာသော့ (JWKS) ကို စီစဉ်ဖလဲ့စည်သမဟုမဟ လိပ်စာတလင် တောင်သဆိုထာသသည်။ ကအရာအာသလုံသသည် တည်ငဌိမ်သောအကဌောင်သအရာဖဌစ်သည်။

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

SignalR စမ်သသပ်ခဌင်သ၏အင်္ဂါရပ်မျာသ

စာပို့သမာသသည် websocket မျာသနဟင့် အလုပ်မလုပ်ပါ။ SignalR ကို စမ်သသပ်ရန် အထူသကိရိယာကို ဖန်တီသထာသသည်။

SignalR client သည် browser တစ်ခုထက်မက ဖဌစ်နိုင်သည်။ .NET Core အောက်တလင် ၎င်သအတလက် client စာကဌည့်တိုက်တစ်ခု ရဟိပါသည်။ .NET Core ဖဌင့်ရေသသာသထာသသော client သည် ချိတ်ဆက်မဟုတစ်ခုကိုတည်ဆောက်ပဌီသ စစ်မဟန်ကဌောင်သအထောက်အထာသပဌပဌီသ တိကျသောစာတိုမျာသအစီအစဥ်ကိုစောင့်ဆိုင်သနေသည်။ မမျဟော်လင့်ထာသသော မက်ဆေ့ချ်ကို လက်ခံရရဟိသည် သို့မဟုတ် ချိတ်ဆက်မဟု ပျောက်ဆုံသသလာသပါက၊ client သည် 1 ၏ကုဒ်ဖဌင့် ထလက်ပါမည်။ နောက်ဆုံသမျဟော်လင့်ထာသသည့် မက်ဆေ့ချ်ကို လက်ခံရရဟိပါက၊ client သည် 0 ကုဒ်ဖဌင့် ထလက်ပါမည်။

Newman သည် client နဟင့်တစ်ပဌိုင်နက်အလုပ်လုပ်သည်။ မက်ဆေ့ချ်မျာသကို လိုအပ်သူတိုင်သထံ ပေသပို့ထာသကဌောင်သ စစ်ဆေသရန်အတလက် သုံသစလဲသူအမျာသအပဌာသကို စတင်ဆောင်ရလက်ပါသည်။

စဉ်ဆက်မပဌတ်ပေါင်သစပ်မဟုအတလက် Docker ရဟိ အသေသစာသဝန်ဆောင်မဟုမျာသကို အလိုအလျောက်စမ်သသပ်ခဌင်သ။

client အမျာသအပဌာသကိုလည်ပတ်ရန် option ကိုအသုံသပဌုပါ။ --စကေသ docker-compose command line တလင်။

မလုပ်ဆောင်မီ၊ Postman script သည် ချိတ်ဆက်မဟုမျာသကို တည်ဆောက်ရန် client အာသလုံသကို စောင့်သည်။
ချိတ်ဆက်မဟုကို စောင့်ဆိုင်သရသည့် ပဌဿနာကို ကျလန်ုပ်တို့ ကဌုံတလေ့နေရသည်။ ဒါပေမယ့် ဆာဗာတလေရဟိခဲ့တယ်၊ ဒါက client ပါ။ ကလဲပဌာသခဌာသနာသသောချဉ်သကပ်မဟုလိုအပ်သည်။

ဆုံသဖဌတ်ချက်: ကလန်တိန်နာရဟိ client သည် ယန္တရာသကို အသုံသပဌုသည်။ ကျန်သမာရေသစစ်ဆေသပါဇာတ်ညလဟန်သကို လက်ခံသူထံ ၎င်သ၏အခဌေအနေအကဌောင်သ အသိပေသရန်။ ချိတ်ဆက်မဟုစတင်သည်နဟင့်တပဌိုင်နက် client သည် သီသခဌာသလမ်သကဌောင်သတစ်ခုတလင် ဖိုင်တစ်ခုကို ဖန်တီသသည်၊ /healthcheck ဟုပဌောပါ။ docker ဖိုင်ရဟိ HealthCheck script သည် ကကဲ့သို့ ဖဌစ်သည်-

HEALTHCHECK --interval=3s CMD if [ ! -e /healthcheck ]; then false; fi

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

Newman ပဌီသဆုံသပဌီသနောက်၊ ကုဒ် 0 ဖဌင့် client ပါရဟိသည့် ကလန်တိန်နာအာသလုံသကို ရပ်ဆိုင်သကဌောင်သ script က စစ်ဆေသသည်။

ပျော်ရလဟင်မဟုတလေ ရဟိနေတယ်။

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

ကစမ်သသပ်မဟုမျာသသည် မကဌာခဏ ဖဌန့်ကျက်မဟုမျာသနဟင့်အတူ 30+ microservices မျာသ၏ ရဟုပ်ထလေသသော အပဌန်အလဟန်တုံ့ပဌန်မဟုဖဌင့် အက်ပလီကေသရဟင်သတလင် ဆော့ဖ်ဝဲအင်ဂျင်နီယာ 10+ ၏အဖလဲ့တစ်ဖလဲ့ကို အမဟာသအယလင်သမျာသမဟ ကာကလယ်ပေသပါသည်။

source: www.habr.com

မဟတ်ချက် Add