Replication

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 এবং সঠিক ধরন বেছে নেওয়াই মূল কাজ।