Load Balancing & Node Clustering

Load Balancing & Node Clustering (Express.js)

High traffic ওয়েব অ্যাপ্লিকেশন পরিচালনার জন্য Load Balancing ও Node Clustering অত্যন্ত গুরুত্বপূর্ণ। এই টপিকে আমরা Express.js ব্যবহার করে কিভাবে scalable এবং high-performance server তৈরি করা যায় তা শিখবো।

⚖️ Load Balancing কী?

Load Balancing হলো একাধিক server বা process-এর মধ্যে incoming request সমানভাবে ভাগ করে দেওয়া। এর ফলে একটি single server-এর উপর অতিরিক্ত চাপ পড়ে না এবং ওয়েবসাইট দ্রুত ও নির্ভরযোগ্যভাবে কাজ করে।

🚀 Performance

Multiple process ব্যবহার করে দ্রুত response পাওয়া যায়

🔄 High Availability

একটি server down হলেও অ্যাপ্লিকেশন সচল থাকে

📈 Scalability

সহজেই traffic বাড়ানো ও manage করা যায়

🧩 Node Clustering কী?

Node.js default ভাবে single-threaded। কিন্তু Cluster module ব্যবহার করে আমরা CPU-এর সব core কাজে লাগাতে পারি এবং একাধিক worker process তৈরি করতে পারি।

🔹 Basic Cluster Setup

const cluster = require('cluster');
const os = require('os');
const express = require('express');

if (cluster.isMaster) {
  const cpuCount = os.cpus().length;

  for (let i = 0; i < cpuCount; i++) {
    cluster.fork();
  }
} else {
  const app = express();

  app.get('/', (req, res) => {
    res.send(`Worker ${process.pid} running`);
  });

  app.listen(3000);
}
        

🔹 কী হচ্ছে এখানে?

  • Master process CPU core অনুযায়ী worker তৈরি করছে
  • প্রতিটি worker আলাদা process হিসেবে চলছে
  • Incoming request গুলো worker-এর মধ্যে ভাগ হচ্ছে

🌐 Nginx দিয়ে Load Balancing

Production environment-এ সাধারণত Nginx ব্যবহার করে একাধিক Node.js application-এর মধ্যে load balance করা হয়।

upstream node_app {
  server 127.0.0.1:3000;
  server 127.0.0.1:3001;
  server 127.0.0.1:3002;
}

server {
  listen 80;

  location / {
    proxy_pass http://node_app;
  }
}
      

✅ Best Practices

  • PM2 ব্যবহার করে clustering সহজ করুন
  • Sticky session প্রয়োজন হলে Redis ব্যবহার করুন
  • Health check endpoint রাখুন
  • Nginx বা Load Balancer-এর timeout ঠিকভাবে configure করুন

🏢 Real-Life Use Case

একটি e-commerce বা learning platform-এ হাজার হাজার user একসাথে request পাঠালে Load Balancing ও Node Clustering ব্যবহার করে সার্ভারকে crash হওয়া থেকে বাঁচানো যায় এবং smooth user experience নিশ্চিত করা যায়।

👼 Quiz
/

লোড হচ্ছে...

Interview Questions:

1. Load Balancing কী?

Load Balancing হলো একাধিক সার্ভারের মধ্যে ট্রাফিক ভাগ করে দেওয়া, যাতে কোনো একটি সার্ভারের উপর বেশি চাপ না পড়ে।

2. Node.js এ Clustering কেন প্রয়োজন?

Node.js single-threaded হওয়ায় clustering ব্যবহার করে একাধিক CPU core কাজে লাগানো যায়।