အသေးစိတ် Design နှင့် အဓိကဆုံးဖြတ်ချက်များ
အဆင့် ၆: ဆက်သွယ်မှုပုံစံများကို ရွေးချယ်ခြင်း
Section titled “အဆင့် ၆: ဆက်သွယ်မှုပုံစံများကို ရွေးချယ်ခြင်း”ကျွန်တော်တို့ service တွေက မတူညီတဲ့အလုပ်တွေအတွက် တစ်ခုနဲ့တစ်ခု ဘယ်လိုဆက်သွယ်ကြမလဲဆိုတာ ဆုံးဖြတ်ကြရအောင်။
-
ကားငှားသူမှ ခရီးစဉ်စတင်ခြင်း - ကားငှားသူဆီက အတည်ပြုချက် (confirmation) လိုအပ်ပါတယ်။ ဒါကြောင့် Rider’s App (ကျွန်တော်တို့ တည်ဆောက်နေသော App) ကနေ
Trip Serviceကို Synchronous REST API call တစ်ခုပို့ပေးတာ အဓိပ္ပာယ်ရှိပါတယ်။ -
ကားသမား၏ Location Update များ - ဒါတွေက မကြာခဏ update လုပ်ဖို့လိုအပ်ပြီး၊ real-time ဖြစ်ကာ၊ များသောအားဖြင့် တစ်လမ်းသွားဆက်သွယ်ခြင်း (ကားသမားဆီက server သို့) ဖြစ်ပါတယ်။ ဒါကြောင့်
Location Serviceကို WebSockets သို့မဟုတ် gRPC လိုမျိုး high-performance, low-latency protocol တစ်ခုသုံးတာက ရွေးချယ်မှုကောင်းတစ်ခုပါ။ -
ကားသမားတစ်ဦးအား ခရီးစဉ်အသစ်အကြောင်း အကြောင်းကြားခြင်း -
Trip Serviceက ကားသမားရဲ့ Response ကို စောင့်မနေသင့်ပါဘူး။ ဒါက Asynchronous events တွေသုံးဖို့ အကောင်းဆုံးအချိန်ပါပဲ။Trip ServiceကRideRequested eventတစ်ခုကို ထုတ်လွှင့် (publish) ပြီး၊Notification Serviceက အဲဒီ event ကို subscribe ကာ အနီးအနားက ကားသမားတွေဆီကို notification ပို့ပေးနိုင်ပါတယ်။
အဆင့် ၇: Database အမျိုးအစားများ ရွေးချယ်ခြင်း (Polyglot Persistence)
Section titled “အဆင့် ၇: Database အမျိုးအစားများ ရွေးချယ်ခြင်း (Polyglot Persistence)”Service တစ်ခုချင်းစီရဲ့ အလုပ်အတွက် မှန်ကန်တဲ့ database ကို ရွေးချယ်ကြပါမယ်။
-
Rider & Driver Services - ဒါက ဖွဲ့စည်းပုံကျနပြီး၊ အမြဲတမ်းမှန်ကန်နေဖို့လိုအပ်တဲ့ user profile data တွေပါ။ ဒါကြောင့်
SQL database (PostgreSQL လိုမျိုး)က ရွေးချယ်မှုကောင်းတစ်ခုပါ။ -
Trip Service - ခရီးစဉ်တစ်ခုမှာ အဆင့်တွေအများကြီးနဲ့ မှတ်တမ်းအပြည့်အစုံရှိပါတယ်။ ခရီးစဉ်တစ်ခုချင်းစီကို ပြောင်းလွယ်ပြင်လွယ်ရှိတဲ့ document တစ်ခုအနေနဲ့ သိမ်းဆည်းတာက အဓိပ္ပာယ်ရှိပါတယ်။ ဒါကြောင့်
Document Database (MongoDB လိုမျိုး)က သင့်တော်ပါတယ်။ -
Location Service - ဒီ service က location data တွေကို အလွန်မြန်မြန်ရေးနိုင်ဖို့၊ ပြီးတော့ “nearest drivers” ဆိုတဲ့ query တွေကို မြန်မြန်ဖတ်နိုင်ဖို့ လိုအပ်ပါတယ်။ ဒါကြောင့်
Key-Value သို့မဟုတ် Geospatial Database (Redis (သို့) အထူးပြု DB လိုမျိုး)က အကောင်းဆုံးပါပဲ။
အဆင့် ၈: အဓိကဆုံးဖြတ်ချက်တစ်ခုကို ADR ဖြင့် မှတ်တမ်းတင်ခြင်း
Section titled “အဆင့် ၈: အဓိကဆုံးဖြတ်ချက်တစ်ခုကို ADR ဖြင့် မှတ်တမ်းတင်ခြင်း”ကျွန်တော်တို့ရဲ့ အရေးကြီးတဲ့ ရွေးချယ်မှုတစ်ခုကို မှတ်တမ်းတင်ကြည့်ကြရအောင်။