Replication কী?
Replication হলো ডাটা বা সার্ভিসের কপি তৈরি করে একাধিক সার্ভার বা স্থানে রাখার কৌশল। এর মূল উদ্দেশ্য High Availability, Reliability ও Performance বাড়ানো। একটি সার্ভার বিকল হলেও অন্য সার্ভার থেকে ডাটা পাওয়া যায়।
উদাহরণ: Google Drive-এ আপনার ফাইলের কপি একাধিক Data Center-এ থাকে, তাই একটি সার্ভার নষ্ট হলেও ফাইল হারায় না।
Replication এর ধরন
১. Database Replication
Primary-Replica (আগে Master-Slave):
Primary সার্ভার Write সামলায়, Replica সার্ভার শুধু Read সামলায়
একাধিক Replica রাখলে Read-এর চাপ ভাগ হয়
উদাহরণ: MySQL, PostgreSQL
Multi-Primary (আগে Master-Master):
একাধিক সার্ভার Write নিতে পারে
Write Load ভাগ হয় এবং একটি Primary বিকল হলেও Write চলে
Conflict Resolution দরকার, কারণ একই ডাটা দুই জায়গায় একসাথে বদলাতে পারে
উদাহরণ: CouchDB, Google Spanner
Peer-to-Peer (Leaderless):
প্রতিটি Node সমান, একে অপরের সাথে ডাটা শেয়ার করে
Distributed System-এ ব্যবহৃত হয়
উদাহরণ: Apache Cassandra, DynamoDB
সংশোধনী: মূল লেখায় Google Spanner-কে Master-Master বলা হয়েছিল। Spanner আসলে Paxos-ভিত্তিক Consensus ব্যবহার করে Strong Consistency দেয়, তাই সরল Master-Master থেকে আলাদা। এখানে সাধারণ ধারণা বোঝাতে রেখেছি, তবে Spanner-কে আলাদা ধরনের হিসেবে জানা ভালো।
২. File Replication
ফাইল সার্ভারগুলোর মধ্যে ফাইলের কপি রাখা, Backup ও Disaster Recovery-র জন্য।
৩. Storage / Block-Level Replication
হার্ডওয়্যার বা Storage স্তরে ডাটার কপি রাখা।
RAID: একাধিক ডিস্কে ডাটা রেখে ডিস্ক বিকল হওয়া থেকে রক্ষা করে
Cloud Storage Replication: AWS S3, Google Cloud Storage স্বয়ংক্রিয়ভাবে একাধিক স্থানে ডাটা রাখে
Synchronous বনাম Asynchronous
মূল লেখায় এটি "ফাইল Replication"-এর অংশ ছিল, কিন্তু এটি সব ধরনের Replication-এর একটি মূল বিষয়।
বিষয় | Synchronous | Asynchronous |
|---|---|---|
কাজ | সব কপিতে লেখা শেষ হলে তবেই Write সফল ধরা হয় | আগে Primary-তে লেখা হয়, কপি পরে আপডেট হয় |
Consistency | Strong | Eventual (কিছু সময় পুরোনো ডাটা দেখা যেতে পারে) |
Latency | বেশি | কম |
ডাটা হারানোর ঝুঁকি | নেই বললেই চলে | Primary বিকল হলে সাম্প্রতিক Write হারাতে পারে |
উপযোগী | ব্যাংকিং, পেমেন্ট | সোশ্যাল মিডিয়া, Analytics |
একটি মধ্যপথও আছে: Semi-Synchronous, যেখানে অন্তত একটি Replica নিশ্চিত করলেই Write সফল ধরা হয়।
Replication এর উপকারিতা
High Availability: সার্ভার বিকল হলেও সার্ভিস চালু থাকে।
Load Balancing: Read রিকোয়েস্ট একাধিক সার্ভারে ভাগ হয়।
Fault Tolerance: হার্ডওয়্যার বা সফটওয়্যার ব্যর্থতায় সিস্টেম টিকে থাকে।
Disaster Recovery: সমস্যা হলে ডাটা পুনরুদ্ধার সহজ হয়।
কম Latency: ব্যবহারকারীর কাছের সার্ভার থেকে ডাটা এলে দ্রুত সেবা মেলে।
Replication এর চ্যালেঞ্জ
Data Consistency: সব কপি এক রাখা কঠিন। Synchronous করলে Latency বাড়ে, Asynchronous করলে পুরোনো ডাটা দেখা যেতে পারে।
Replication Lag: Replica Primary-র চেয়ে পিছিয়ে থাকলে ইউজার নিজের সদ্য লেখা ডাটা দেখতে নাও পারে। এর সমাধান: Write-এর পর নির্দিষ্ট সময় Primary থেকে Read করা।
Conflict: Multi-Primary বা Leaderless সিস্টেমে একই ডাটা একসাথে দুই জায়গায় বদলালে সমাধান করতে হয় (যেমন Last-Write-Wins)।
Failover জটিলতা: Primary বিকল হলে নতুন Primary বেছে নেওয়ার সময় ডাটা হারানো বা Split-Brain (দুটি সার্ভার নিজেকে Primary ভাবা) হতে পারে।
খরচ ও রক্ষণাবেক্ষণ: একাধিক সার্ভার চালানো ব্যয়বহুল ও জটিল।
Replication বনাম Backup
Replication | Backup |
|---|---|
প্রায় Real-time কপি | নির্দিষ্ট সময়ের Snapshot |
Availability বাড়ায় | পুরোনো অবস্থায় ফেরার সুযোগ দেয় |
ভুল ডাটা মুছলে সেটিও কপি হয়ে যায় | মোছার আগের অবস্থা ফিরে পাওয়া যায় |
তাই Replication থাকলেও Backup আলাদাভাবে রাখা জরুরি। মূল লেখায় Replication-কে "ব্যাকআপের মতো" বলা হয়েছিল, কিন্তু এটি Backup-এর বিকল্প নয়।
Replication এর ব্যবহারের ক্ষেত্র
ব্যাংকিং ও ফিনান্স: ট্রানজেকশন একাধিক ডাটাবেসে সংরক্ষণ
ই-কমার্স: দ্রুত Read-এর জন্য Read Replica
Cloud Computing: AWS, Google Cloud, Azure-এ Redundancy নিশ্চিত করা
বড় প্ল্যাটফর্ম: Facebook, YouTube-এ ডাটা সবসময় উপলব্ধ রাখা
ডিজাইনে মনে রাখবেন
অধিকাংশ অ্যাপে Read বেশি, Write কম, তাই Primary-Replica দিয়েই শুরু করা যুক্তিসঙ্গত।
ব্যাংকিং-জাতীয় কাজে Consistency আগে, আর সোশ্যাল ফিডের মতো কাজে Availability ও গতি আগে (CAP Theorem)।
Replication Lag নিয়মিত Monitor করুন।
Failover নিয়মিত পরীক্ষা করুন এবং Multi-AZ বা Multi-Region Replica বিবেচনা করুন।
Replication সিস্টেমের স্থিতিশীলতা ও নির্ভরযোগ্যতার অন্যতম প্রধান কৌশল। এটি ডাটা নিরাপদ রাখে এবং Performance বাড়ায়। তবে Consistency, Lag ও Failover-এর চ্যালেঞ্জ আছে, তাই প্রয়োজন অনুযায়ী Synchronous বা Asynchronous এবং সঠিক ধরন বেছে নেওয়াই মূল কাজ।