Coderbrix

Coderbrix

  • About
  • Services
  • Blog
  • Careers
Contact
Coderbrix
Coderbrix

Coderbrix

With our innovative solutions and dedicated expertise, success is a guaranteed outcome. Lets accelerate together towards your goals and beyond.🧘

Subscribe to our newsletter.

Quick Links

    HomeAboutBlogContact

Company

    BenifitsCollaboratesTeam OffshoringTerms & ConditionsPrivacy Policy

Resources

    BlogCareersFAQs

Social Links

    LinkedInFacebookDribble

Copyright © 2025 Coderbrix. All rights reserved.

Lets Connect
Back to Blogs

Node.js-এ Webhook ইমপ্লিমেন্টেশন: PostgreSQL ও Redis সহ

  • Rayhan

    Rayhan KObir

  • June 18, 2024(1 year ago)
Blog

Node.js-এ Webhook ইমপ্লিমেন্টেশন: PostgreSQL ও Redis সহ

Webhook হলো এমন একটি HTTP-based কলব্যাক মেকানিজম, যা কোনো নির্দিষ্ট ইভেন্ট ঘটলে স্বয়ংক্রিয়ভাবে নির্দিষ্ট URL-এ ডেটা পাঠায়। এটি API-র বিপরীতে, যেখানে ক্লায়েন্টকে বারবার চেক করতে হয় (polling)। Webhook ইভেন্ট-ড্রিভেন আর্কিটেকচারের জন্য খুবই কার্যকর।


Webhook কীভাবে কাজ করে?

১. ইভেন্ট সোর্স (যেমন: পেমেন্ট গেটওয়ে, গিটহাব) কোনো ইভেন্ট ঘটলে,
২. Webhook Endpoint-এ HTTP POST রিকোয়েস্ট পাঠায়,
৩. Endpoint সেই ডেটা প্রসেস করে, ডাটাবেজে সংরক্ষণ করে, অথবা অন্য সার্ভিসে পাঠায়।

Webhook Flow Diagram


কেন PostgreSQL ও Redis?

  • PostgreSQL:
    রিলেশনাল ডাটাবেজ, পারসিস্টেন্ট স্টোরেজ ও জটিল কুয়েরির জন্য।
  • Redis:
    ইন-মেমরি ডাটাবেজ, দ্রুত ক্যাশিং ও কিউ ম্যানেজমেন্টের জন্য।

Step-by-Step Implementation

১. Webhook Endpoint তৈরি (Node.js + Express)

const express = require("express");
const bodyParser = require("body-parser");
const { Pool } = require("pg");
const Redis = require("ioredis");
 
const app = express();
app.use(bodyParser.json());
 
// PostgreSQL ও Redis কানেকশন
const pool = new Pool({ connectionString: process.env.PG_URL });
const redis = new Redis(process.env.REDIS_URL);
 
// Webhook Endpoint
app.post("/webhook", async (req, res) => {
  const event = req.body;
 
  // ১. ডেটা Redis-এ ক্যাশ করুন (ফাস্ট প্রসেসিং)
  await redis.lpush("webhook_events", JSON.stringify(event));
 
  // ২. ডেটা PostgreSQL-এ সংরক্ষণ করুন (পারসিস্টেন্স)
  await pool.query(
    "INSERT INTO webhook_events (event_type, payload, received_at) VALUES ($1, $2, NOW())",
    [event.type, JSON.stringify(event.payload)]
  );
 
  res.status(200).json({ received: true });
});
 
app.listen(4000, () => console.log("Webhook server running on port 4000"));

২. PostgreSQL টেবিল স্কিমা

CREATE TABLE webhook_events (
  id SERIAL PRIMARY KEY,
  event_type VARCHAR(255),
  payload JSONB,
  received_at TIMESTAMP DEFAULT NOW()
);

৩. Redis কীভাবে ব্যবহার হচ্ছে?

  • লিস্ট (Queue) হিসেবে:
    ইভেন্ট দ্রুত প্রসেসিং বা ব্যাকগ্রাউন্ড জব-এর জন্য Redis-এ রাখা হয়।
  • ক্যাশিং:
    সাম্প্রতিক ইভেন্ট দ্রুত দেখাতে বা ড্যাশবোর্ডে রিয়েল-টাইম আপডেট দিতে।

৪. ব্যাকগ্রাউন্ড প্রসেসিং (Worker Example)

// worker.js
const Redis = require("ioredis");
const redis = new Redis(process.env.REDIS_URL);
 
async function processEvents() {
  while (true) {
    const event = await redis.brpop("webhook_events", 0);
    if (event) {
      const data = JSON.parse(event[1]);
      // এখানে ব্যাকগ্রাউন্ড প্রসেসিং (যেমন: ইমেইল, নোটিফিকেশন)
      console.log("Processing event:", data);
    }
  }
}
 
processEvents();

ডায়াগ্রাম: Webhook আর্কিটেকচার

Webhook Architecture


বেস্ট প্র্যাকটিস

  • ডেটা ভ্যালিডেশন: Webhook ডেটা অবশ্যই যাচাই করুন।
  • রেট লিমিটিং: একাধিক রিকোয়েস্ট থেকে সার্ভার বাঁচাতে।
  • রিট্রাই মেকানিজম: ফেইল হলে পুনরায় প্রসেস করার ব্যবস্থা।
  • লগিং ও মনিটরিং: ইভেন্ট প্রসেসিং ট্র্যাক করুন।

উপসংহার

Node.js-এ Webhook ইমপ্লিমেন্টেশন সহজ, তবে স্কেলেবল ও রিলায়েবল সিস্টেমের জন্য PostgreSQL ও Redis-এর মতো টুল ব্যবহার করা জরুরি। এই আর্কিটেকচারে আপনি দ্রুত, রিয়েল-টাইম ও পারসিস্টেন্ট ইভেন্ট প্রসেসিং

If you found this helpful, please share it!

Elevate Your Businesses With our Digital Services

We always work on developing feature-rich customize solutions so your business can be constant with the evolving trends in the eCommerce industry.

Get in Touch