Skip to content

Webhooks

পাঠানো, সাইনিং, রিট্রাই, আইডেম্পোটেন্সি

0/11 অধ্যায় · 0 XP অর্জিত

  1. 00 Webhooks — রোডম্যাপ দশটি অধ্যায়, যেগুলো 'webhooks তো নিছক HTTP POST request' থেকে শুরু করে এমন একটা সেল্ফ-হোস্টেড, signed, retried, idempotent webhook সিস্টেম পর্যন্ত নিয়ে যায় যেটা receiver ঘণ্টার পর ঘণ্টা down থাকলেও টিকে থাকে।
  2. 01 Webhooks কী এবং কখন ব্যবহার করবেন কিছু একটা ঘটলে অন্য কারও server-এ আপনি যে HTTP POST পাঠান, সেটাই একটা webhook। protocol-টা তুচ্ছ; কিন্তু failure mode-গুলো নয়।
  3. 02 Event contract design আপনার event payload-এর গড়ন এমন একটা contract হয়ে দাঁড়ায় যা প্রত্যেক integrate-কারীর সাথে বাঁধা। প্রথম দুপুরে নেওয়া সিদ্ধান্তগুলো নিয়েই আপনাকে বছরের পর বছর কাটাতে হয়।
  4. 03 Webhooks পাঠানো Go-তে ষাট লাইনে end-to-end producer। শেষে আপনার হাতে একটা binary থাকবে যা একটা URL-এ JSON POST করে, non-2xx সামলায়, আর পরিষ্কারভাবে timeout করে। Signing, retries, আর outbox পরে আসছে।
  5. 04 Payload signing একটা unsigned webhook হলো একটা public POST endpoint। URL আন্দাজ করা যে কেউ event জাল করতে পারে। একটা timestamp সহ canonical string-এর ওপর HMAC-ই হলো সরল, সঠিক সমাধান।
  6. 05 Signature verify করা receiver-এর কাজ হলো raw body পড়া, HMAC পুনরায় গণনা করা, constant time-এ compare করা, আর replay window-এর চেয়ে পুরনো event reject করা। ছোট কোড, ভুল করা সহজ।
  7. 06 Retries ও backoff একবার fail হওয়া delivery স্বাভাবিক। একটা hot loop-এ দশবার fail হওয়া delivery আপনার আর আপনার customer-এর service নামিয়ে দেয়। jitter সহ exponential backoff আর একটা hard deadline-ই হলো সরল, সঠিক সমাধান।
  8. 07 Receiver-এ idempotency At-least-once delivery মানে duplicate। receiver-এর কাজ তবুও exactly once process করা। inbox pattern — dedupe key, atomic claim, idempotent side effect — সেটাই উপায়।
  9. 08 Delivery guarantee ও dead-letter queue কিছু event কখনও deliver হয় না। dead-letter queue হলো সেখানে যেখানে তারা যায়, dashboard হলো যেখানে মানুষ তাদের দেখে, আর manual replay হলো আপনি কীভাবে recover করেন। এর কোনোটাই ঐচ্ছিক নয়।
  10. 09 Observability ও replay Webhooks কোনো fire-and-forget feature নয়। এটা একটা operated feature। debug করার জন্য আপনি যে dashboard, metric, আর trace বানান, সেটাই সেই পার্থক্য গড়ে দেয় — যে feature আপনি maintain করেন আর যে feature আপনাকে maintain করায়।
  11. 10 Self-host outbox pattern আপনার domain transaction আর webhook queue-র মধ্যে সেতু গড়ে। worker pool সেটা drain করে। TLS সহ nginx-এর পেছনে, একটা VPS-এ, অধ্যায় ৯-এর সব operational টুকরো জোড়া দিয়ে।