Understanding of webhooks

traditional api တွေနဲ့ web hook တွေ ကြားက ကွာခြားချက်

sharingweb hook
Understanding of webhooks

web hook တွေအကြောင်းမပြောခင်မှာ web hook တွေကို ဘာကြောင့်လိုအပ်တာလဲဆိုတာကို သိထားဖို့ လိုပါတယ်။ဒါကိုရှင်းပြဖို့ payment workflow တစ်ခုအလုပ်လုပ်ပုံကို အရင်ရှင်းပြပေးပါမယ်။

ကျွန်တော်တို့မှာ e-commerce website တစ်ခုရှိမယ်။ user က product တွေကို ဝယ်မယ်ပေါ့။ ဒီနေ့ရာမှာ ကျွန်တော်တို့က third party service တွေဖြစ်တဲ့ stripe လိုမျိုး payment provider တွေကို သုံးထားမယ်ဆိုပါတော့။

  • အဆင့် ၁ user က တန်ဖိုး ၁၀၀၀၀ ရှိတဲ့ product ကို ဝယ်မယ်။ additional fees က ၅၀၀၀ ဆိုရင် စုစုပေါင်း ၁၅၀၀၀ ဖြစ်သွားမယ်။ ဆိုတော့ ဝယ်လိုက်ပြီး ဆိုပါတော့ user က pay ခလုတ်ကို နှိပ်လိုက်ပြီ။

  • အဆင့် ၂ ဒါဆိုရင် backend ကို request တစ်ခုရောက်လာပြီး ငါတို့မှာ ၁၅၀၀၀ တန် order တစ်ခုရောက်လာပြီလို့ backend ကနေတစ်ဆင့် stripe လိုမျိုး payment service ကို လှမ်းပြောမယ်။

  • အဆင့် ၃ stripe ကနေ မှတစ်ဆင့် user ထည့်ထားတဲ့ credit card ထဲကနေ ပိုက်ဆံ ၁၅၀၀၀ ကို ဖြတ်လိုက်မယ်ပေါ့။ ဖြတ်ပြီးရင် payment information ပါတဲ့ response တစ်ခုကို backend ကို ပို့ပေးမယ်။

  • အဆင့် ၄ backend ကနေမှ တစ်ဆင့် frontend ဖြစ်တဲ့ e-commerce website ကို order ပြီးမြောက်ကြောင်း payment information နဲ့ response တစ်ခုပြန်ပို့ပေးမယ်ပေါ့။

  • အဆင့် ၅ ဒါဆိုရင် frontend ကနေပြီး process ပြီးမြောက်ကြောင်း သိရှိပြီ ဖြစ်တဲ့ အတွက် user ကို order တင်ပြီးကြောင်း confirmation page တစ်ခုခုကို redirect လုပ်တာဖြစ်ဖြစ် order information တွေကို ပြတာဖြစ်ဖြစ်လုပ်မယ်ပေါ့။

ဒါကတော့ order တစ်ခုတင်တဲ့ အခါမှာ နောက်ကွယ်ကနေ ပြုလုပ်သွားတဲ့ frontend - backend - payment provider တို့ရဲ့ work flow တစ်ခုပဲဖြစ်ပါတယ်။

ဒီနေရာမှာ အဆင်ပြေနေတာပဲလေ ဘာလို့များ web hook တွေကို လိုနေမလဲပေါ့။ ဒီနေရာမှာ ကြည့်မယ်ဆိုရင် frontend app အတွက်ကတော့ ဟုတ်ပါတယ်။ user ကနေပြီး order ပြီးမြောက်ကြောင်း confirmation page မှာ payment information တွေ မြင်ရလို့ သိသွားပါပြီ။ ဒါပေမဲ့ backend server ကတော့ ဒါတွေကို မသိသေးပါဘူး။ backend server က‌ လုပ်‌ဆောင်ပေးခဲ့တာသည် frontend က user ပို့လိုက်တဲ့ order information ကို payment provider ကို ပို့ပေးတယ်။ payment provider ကနေမှ တစ်ဆင့် ပြန်ပို့ပေးတဲ့ response ကို frontend ကို ပြန်ပို့ပေးတယ်။ သူလုပ်ပေးခဲ့တာက ဒါပါပဲ။ ဒီလိုပြဿနာတွေ မရှိအောင် ဖြေရှင်းပေးတာကတော့ web hook တွေပါပဲ။

web hook ဆိုတာဘာလဲ။

web hook တွေကို web callback, http push api, reverse api စသဖြင့် အမျိုးမျိုးခေါ်ကြပါတယ်။ ဘယ်လိုပဲ ခေါ်ခေါ် သူတို့ရဲ့ အလုပ်ကတော့ application တစ်ခုကနေ တစ်ခုကို သတ်မှတ်ထားတဲ့အခြေအနေ တစ်ခုဖြစ်ပေါ်တဲ့အခါမှာ real-time data information တွေကို ပို့ဆောင်ပေးတာဖြစ်ပါတယ်။

ဒီနေရာမှာ သာမန် api တွေနဲ့ ဘာကွာလဲဆို‌ရင် web hook တွေက သာမန် api တွေလိုမျိုး သတ်မှတ်ထားတဲ့ endpoint တစ်ခုကို request ရောက်လာမှ data ကို ပြန်လည်ပို့ပေးတာမျိုး မဟုတ်ဘဲ သတ်မှတ်ထားတဲ့ အခြေအနေ တစ်ခုဖြစ်ပေါ်တာနဲ့ data တွေကို အလိုအလျောက်ပို့ဆောင်ပေးတာမျိုး ဖြစ်ပါတယ်။ ဥပမာ payment အောင်မြင်သွားတဲ့အခါ။ payment နဲ့ သတ်ဆိုင်တဲ့ အလုပ်တစ်ခုခု လုပ်ဆောင်တဲ့အခါ။ ဒီလို အခြေအနေတွေကို ဆိုလိုတာ ဖြစ်ပါတယ်။

မြင်သာအောင် ပြောရမယ်ဆိုရင်တော့ စကားများတဲ့ ကောင်မလေးလိုပါပဲ။ ကိုက မေးမေး မမေးမေး သူက အိမ်မှာ တစ်ခုခု ဖြစ်ပြီဆိုတာနဲ့ ပြန်ပြောပြတာမျိုးပါ။ ကောင်မလေးမရှိတဲ့ developer တွေကတော့ ဒီ example နဲ့လဲ နားလည်မှာ မဟုတ်ပါဘူး။ ဆိုတော့ ခုနက အပေါ်မှာပြောပြခဲ့တဲ့ work flow ပုံစံမှာ web hook က ဘယ်လို ပါဝင်အလုပ်လုပ်မလဲဆိုတာကို ပြောပြပေးပါမယ်။

အရှေ့ကအဆင့်တွေကျော်ပြီး အဆင့် ၄ လောက်ကနေ ပြန်စ‌တာပေါ့။ ဒီတစ်ခါမှာကတော့ web hook နဲ့ချိတ်ဆက်ထားမယ်ဆိုရင်တော့ payment provider ကနေပြီး payment complete ဖြစ်တဲ့အခါမှာ payment response တင်မဟုတ်ဘဲ payment process အောင်မြင်ကြောင်း web hook ကနေတစ်ဆင့် ကျွန်တော်တို့ backend server ကို post request တစ်ခုနဲ့ အတူ payment information တွေကို သယ်လာပြီး အသိပေးလာမှာ ဖြစ်ပါတယ်။ ဒီအခါကျမှာသာ ကျွန်တော်တို့က order details တွေကို database ထဲမှာ update လုပ်တာတွေ order အောင်မြင်ကြောင်း recipe mail ပို့ပေးတာတွေကို server ကနေပြီး ပြုလုပ်ပေးနိုင်မှာ ဖြစ်ပါတယ်။

တကယ်လို့ web hook တွေသာ မသုံးထားဘူး ဆိုရင်တော့ payment status စစ်ကြည့်တဲ့ အခါမျိုးတွေမှာ သာမန် api endpoint တွေဆောက် client ကနေ server ကို request တွေပို့ server ကနေပြီး payment api ကနေ data တောင်း data ရောက် frontend ကို ပို့ စသဖြင့် resources intensive ဖြစ်တဲ့ အလုပ်တွေ ပြုလုပ်ရမှာဖြစ်သလို real-time update လဲရမှာမဟုတ်ပါဘူး။

သာမန် api နဲ့ မတူတဲ့ web hook တွေကတော့ relatime update တွေ ပို့ပေးနိုင်တယ်။ request တွေ ထပ်ခါထပ်ခါထိုးပြီး စစ်ကြည့်စရာမလိုဘဲနဲ့ သတ်မှတ်ထားတဲ့ event တစ်ခုဖြစ်ပေါ်တာနဲ့ real-time update information တွေကို ပို့ပေးနိုင်တဲ့ အားသာချက်တွေ ပိုင်ဆိုင်ထားတာဖြစ်ပါတယ်။


by CODE HUB