ওয়েবহুকস ব্যাখ্যা: সাইনড পেলোড এবং রিট্রাই স্ট্র্যাটেজি

Backend2026-11-10TryQuickToolBox

কেন ওয়েবহুকস ব্যর্থ হয় এবং কীভাবে ঠিক করবেন

আপনি সবেমাত্র একটি পেমেন্ট প্রোভাইডারের ওয়েবহুক ইন্টিগ্রেট করেছেন আপনার অ্যাপে অর্ডার স্ট্যাটাস আপডেট করার জন্য। টেস্টিংয়ে সবকিছু কাজ করে, কিন্তু প্রোডাকশনে কিছু ইভেন্ট কখনোই পৌঁছায় না, বা আরও খারাপ, আপনি ডুপ্লিকেট পান। সঠিক সুরক্ষা ব্যবস্থা ছাড়া, ওয়েবহুকস নীরব ব্যর্থতা এবং সিকিউরিটি হোলের উৎস হয়ে উঠতে পারে।

ওয়েবহুকস হলো ইভেন্ট দ্বারা ট্রিগার করা HTTP কলব্যাক, কিন্তু সাধারণ API কলের বিপরীতে, এগুলো পুশ-ভিত্তিক এবং অ্যাসিঙ্ক্রোনাস। এটি দুটি মূল চ্যালেঞ্জ নিয়ে আসে: সত্যতা যাচাই এবং ডেলিভারি নিশ্চিত করা। এই গাইডে, আমরা সাইনড পেলোড এবং স্মার্ট রিট্রাই দিয়ে উভয়ই মোকাবেলা করব।

ওয়েবহুকস কী?

একটি ওয়েবহুক হলো একটি ইউজার-ডিফাইনড HTTP কলব্যাক। যখন সোর্স সিস্টেমে একটি ইভেন্ট ঘটে (যেমন, একটি নতুন পেমেন্ট), তখন এটি আপনার দেওয়া একটি URL-এ ইভেন্ট ডেটা সহ একটি HTTP POST রিকোয়েস্ট পাঠায়। এটি পোলিং ছাড়াই রিয়েল-টাইম প্রতিক্রিয়ার অনুমতি দেয়।

সাধারণ ব্যবহারের ক্ষেত্রে পেমেন্ট নোটিফিকেশন, CI/CD ট্রিগার, এবং চ্যাট ইন্টিগ্রেশন অন্তর্ভুক্ত। কিন্তু যেহেতু ওয়েবহুকস পাবলিক ইন্টারনেট অতিক্রম করে, এগুলো স্পুফিং এবং লসের জন্য ঝুঁকিপূর্ণ।

সাইনড পেলোড দিয়ে ওয়েবহুকস সুরক্ষিত করা

আপনি কীভাবে জানবেন একটি ওয়েবহুক সত্যিই আপনার প্রোভাইডার থেকে এসেছে? একটি শেয়ার্ড সিক্রেট দিয়ে পেলোড সাইন করা অখণ্ডতা এবং সত্যতা নিশ্চিত করে।

HMAC সিগনেচার কীভাবে কাজ করে

প্রোভাইডার একটি সিক্রেট কী ব্যবহার করে রিকোয়েস্ট বডির একটি HMAC (যেমন, SHA-256) গণনা করে, এবং একটি হেডারে (যেমন, X-Signature) সিগনেচার পাঠায়। আপনার সার্ভার HMAC পুনরায় গণনা করে এবং টাইমিং অ্যাটাক প্রতিরোধ করতে একটি কনস্ট্যান্ট-টাইম তুলনা ব্যবহার করে এটি তুলনা করে।

// Node.js উদাহরণ: একটি ওয়েবহুক সিগনেচার যাচাই করা
const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
  const hmac = crypto.createHmac('sha256', secret);
  hmac.update(payload);
  const digest = hmac.digest('hex');
  return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(digest));
}

সেরা অনুশীলন:

নির্ভরযোগ্য রিট্রাই implement করা

সিগনেচার থাকা সত্ত্বেও, নেটওয়ার্ক সমস্যা বা ডাউনটাইম ওয়েবহুক ডেলিভারি ব্যর্থ করতে পারে। প্রোভাইডাররা সাধারণত এক্সপোনেনশিয়াল ব্যাকঅফের সাথে রিট্রাই করে, কিন্তু আপনাকে আপনার দিকেও রিট্রাই হ্যান্ডেল করতে হবে।

Idempotency: নিরাপদ রিট্রাইয়ের চাবিকাঠি

রিট্রাই ডুপ্লিকেট প্রসেসিংয়ের দিকে নিয়ে যেতে পারে। প্রতিটি ইভেন্ট ঠিক একবার প্রসেস করা নিশ্চিত করতে idempotency কী (প্রায়শই পেলোডে বা হেডার হিসাবে অন্তর্ভুক্ত) ব্যবহার করুন। প্রসেস করা ইভেন্ট আইডি সংরক্ষণ করুন এবং ডুপ্লিকেট উপেক্ষা করুন।

// উদাহরণ: idempotent ওয়েবহুক হ্যান্ডলার
const processedEvents = new Set();

app.post('/webhook', (req, res) => {
  const eventId = req.body.id;
  if (processedEvents.has(eventId)) {
    return res.status(200).send('Already processed');
  }
  // process event...
  processedEvents.add(eventId);
  res.status(200).send('OK');
});

রিসিভার সাইডে রিট্রাই স্ট্র্যাটেজি

যদি আপনার প্রসেসিং ব্যর্থ হয়, প্রোভাইডারের রিট্রাই ট্রিগার করতে 5xx স্ট্যাটাস দিয়ে সাড়া দিন। ট্রানজিয়েন্ট ত্রুটির জন্য, আপনি ব্যাকঅফ সহ আপনার নিজের রিট্রাই কিউও implement করতে পারেন।

পরিস্থিতিপ্রতিক্রিয়াকর্ম
সফল200 OKরিট্রাই নেই
ভ্যালিডেশন ত্রুটি400 Bad Requestরিট্রাই নেই (পেলোড ঠিক করুন)
সার্ভার ত্রুটি500 Internal Server Errorপ্রোভাইডার রিট্রাই করে
রেট লিমিটেড429 Too Many Requestsবিলম্বের পরে প্রোভাইডার রিট্রাই করে

ওয়েবহুকস মনিটরিং এবং ডিবাগিং

হেডার এবং পেলোড সহ সমস্ত ইনকামিং ওয়েবহুক রিকোয়েস্ট লগ করুন (সংবেদনশীল ডেটা রিড্যাক্ট করুন)। সহজ পরিদর্শনের জন্য পেলোড প্রিটি-প্রিন্ট করতে JSON Formatter-এর মতো একটি টুল ব্যবহার করুন। ব্যর্থ ডেলিভারির জন্য অ্যালার্ট সেট আপ করুন এবং রিট্রাই গণনা ট্র্যাক করুন।

FAQ

সাইনড ওয়েবহুক পেলোড কী?

একটি সাইনড পেলোডে একটি ক্রিপ্টোগ্রাফিক সিগনেচার (সাধারণত HMAC) থাকে যা যাচাই করে যে রিকোয়েস্টটি একটি বিশ্বস্ত উৎস থেকে এসেছে এবং টেম্পার করা হয়নি।

একটি ব্যর্থ ওয়েবহুক কতবার রিট্রাই করা উচিত?

বেশিরভাগ প্রোভাইডার এক্সপোনেনশিয়াল ব্যাকঅফের সাথে 3–5 বার রিট্রাই করে। রিসিভার হিসাবে, উপযুক্ত স্ট্যাটাস কোড দিয়ে সাড়া দিন এবং প্রোভাইডারকে রিট্রাই হ্যান্ডেল করতে দিন।

আমি কি HTTPS ছাড়া ওয়েবহুকস ব্যবহার করতে পারি?

না—পেলোড এনক্রিপ্ট করতে এবং ম্যান-ইন-দ্য-মিডল অ্যাটাক প্রতিরোধ করতে HTTPS অপরিহার্য। কখনোই প্লেইন HTTP-তে ওয়েবহুক গ্রহণ করবেন না।

ওয়েবহুক পেলোড পরিদর্শন এবং ডিবাগ করতে প্রস্তুত? JSON ডেটা তাৎক্ষণিকভাবে ফরম্যাট এবং ভ্যালিডেট করতে আমাদের ফ্রি JSON Formatter ব্যবহার করুন।