লোড ব্যালান্সার এবং ডাটাবেস রিপ্লিকেশন (Bangla Translation)
একটি Load Balancer আসা সব ট্রাফিককে সমানভাবে বিভিন্ন Web Server-এর মধ্যে ভাগ করে দেয়, যেগুলো একটি load-balanced set-এ থাকে। Figure 4-এ দেখানো হয়েছে Load Balancer কীভাবে কাজ করে।
Figure 4 (লোড ব্যালান্সার কীভাবে কাজ করে)
একজন ব্যবহারকারী Web Browser বা Mobile App দিয়ে mywebsite.com এ রিকোয়েস্ট পাঠায়।
এই রিকোয়েস্ট প্রথমে DNS সার্ভারে যায়, যা ডোমেইন নাম mywebsite.com কে একটি public IP Address-এ রূপান্তর করে:
88.88.88.1এই IP Address Load Balancer-এর দিকে নির্দেশ করে। ব্যবহারকারীর রিকোয়েস্ট Load Balancer-এ পৌঁছায়।
এরপর Load Balancer সেই রিকোয়েস্টকে দুটি সার্ভারের মধ্যে যেকোনো একটিতে পাঠায়:
- Server 1 →
10.0.0.1 - Server 2 →
10.0.0.2
Load Balancer সমানভাবে ট্রাফিক ভাগ করে দেয়।
একটি টেবিল দেখায় DNS কীভাবে ডোমেইন নামকে IP Address-এ map করে।
এই দুইটি সার্ভার একটি private network-এর মধ্যে থাকে (dashed box দিয়ে দেখানো), অর্থাৎ এগুলো ইন্টারনেট থেকে সরাসরি অ্যাক্সেসযোগ্য নয়।
গুরুত্বপূর্ণ ধারণা
Figure 4 অনুযায়ী, ব্যবহারকারীরা সরাসরি Load Balancer-এর public IP-এর সাথে যুক্ত হয়। এরপর Load Balancer রিকোয়েস্ট Web Server-এ পাঠায়।
Private IP কী?
Private IP হলো এমন IP যা শুধুমাত্র একই network-এর ভেতরের সার্ভারগুলো একে অপরের সাথে ব্যবহার করতে পারে। এটি ইন্টারনেট থেকে সরাসরি অ্যাক্সেসযোগ্য নয়।
Load Balancer Web Server-এর সাথে যোগাযোগ করে Private IP ব্যবহার করে।
Load Balancer এর সুবিধা
এই ডিজাইনে আমরা সফলভাবে দুইটি বড় সমস্যা সমাধান করেছি:
১. Failover (সার্ভার বন্ধ হয়ে গেলে বিকল্প ব্যবস্থা)
- যদি Server 1 বন্ধ হয়ে যায়, তাহলে সব ট্রাফিক Server 2-এ চলে যাবে
- এতে করে ওয়েবসাইট ডাউন হবে না
- পরে নতুন একটি healthy server আবার pool-এ যোগ করা যায়
২. High Availability & Scaling
- যদি ট্রাফিক বেড়ে যায় এবং ২টি সার্ভার যথেষ্ট না হয়
- তাহলে শুধু নতুন সার্ভার যোগ করলেই হবে
- Load Balancer স্বয়ংক্রিয়ভাবে ট্রাফিক নতুন সার্ভারগুলোর মধ্যে ভাগ করে দেবে
এখন প্রশ্ন: Data Tier কী হবে?
বর্তমানে ডাটাবেস একটিই আছে, তাই:
- কোনো failover নেই
- কোনো redundancy নেই
এই সমস্যার সমাধানের জন্য ব্যবহার করা হয়:
Database Replication
Database Replication কী?
Wikipedia অনুযায়ী:
Database replication হলো এমন একটি পদ্ধতি যেখানে একটি মূল (master) ডাটাবেস এবং তার একাধিক কপি (slave) থাকে।
Master–Slave Model
Master Database
- শুধু write operations (insert, update, delete) গ্রহণ করে
- সব পরিবর্তন এখানে করা হয়
Slave Database
- Master থেকে ডেটার কপি গ্রহণ করে
- শুধু read operations পরিচালনা করে
গুরুত্বপূর্ণ বিষয়
- সব data পরিবর্তন (write/update/delete) শুধুমাত্র Master DB-তে যায়
- Read অপারেশনগুলো Slave DB-তে ভাগ করা হয়
- কারণ বাস্তবে read operation অনেক বেশি হয় write এর তুলনায়
Figure 5 (Database Replication)
Figure 5-এ দেখানো হয়েছে:
- উপরে একাধিক Web Server
- মাঝখানে একটি Master DB
- নিচে একাধিক Slave DB
Web Server → Master DB এ write করে Web Server → Slave DB থেকে read করে
Master DB থেকে data Slave DB-তে replicate হয়।
Database Replication এর সুবিধা
১. ভালো পারফরম্যান্স (Better Performance)
- Write সব Master-এ হয়
- Read একাধিক Slave-এ ভাগ হয়
- ফলে একসাথে অনেক query দ্রুত প্রসেস করা যায়
২. Reliability (নির্ভরযোগ্যতা)
- কোনো একটি সার্ভার নষ্ট হলেও ডেটা হারায় না
- কারণ ডেটা একাধিক জায়গায় কপি করা থাকে
৩. High Availability
- কোনো DB offline হলেও অন্য DB থেকে ডেটা পাওয়া যায়
- ফলে সিস্টেম চালু থাকে
যদি কোনো Database বন্ধ হয়ে যায়?
পরিস্থিতি ১: Slave DB বন্ধ হয়ে গেলে
- Read request অন্য healthy DB-তে চলে যায়
- পরে নতুন Slave DB তৈরি করা হয়
পরিস্থিতি ২: Master DB বন্ধ হয়ে গেলে
- একটি Slave DB কে নতুন Master বানানো হয়
- সব write operation সেখানে করা হয়
- নতুন Slave DB যোগ করে replication চালু করা হয়
⚠️ বাস্তবে এটি জটিল, কারণ Slave DB সবসময় আপডেটেড নাও থাকতে পারে। তাই data recovery script চালাতে হতে পারে।
Figure 6 (Final Architecture)
Figure 6-এ পুরো সিস্টেম দেখানো হয়েছে:
ধাপে ধাপে Flow
১. DNS থেকে Load Balancer-এর IP পাওয়া যায়
২. ব্যবহারকারী Load Balancer-এর সাথে connect করে
৩. Load Balancer request Server 1 বা Server 2-এ পাঠায়
৪. Web Server data পড়ে Slave DB থেকে (read operation)
৫. Write/Update/Delete সব Master DB-তে যায়
৬. Master DB data Slave DB-তে replicate করে
Final Architecture (সংক্ষেপে)
- User → DNS → Load Balancer
- Load Balancer → Web Servers
- Web Servers → Database (Master + Slave)
- Master DB → Slave DB (replication)
পরবর্তী উন্নতি
এখন আমরা Web tier এবং Data tier ভালোভাবে স্কেল করতে পেরেছি।
পরবর্তী ধাপে সিস্টেম আরও দ্রুত করার জন্য করা হয়:
- Cache layer যোগ করা
- Static content (JS, CSS, image, video) CDN-এ রাখা
এগুলো response time কমিয়ে সিস্টেমকে আরও efficient করে তোলে।