> For the complete documentation index, see [llms.txt](https://mominur.gitbook.io/mominur-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mominur.gitbook.io/mominur-notes/system-design/availability/replication.md).

# Replication

Replication হলো সিস্টেম ডিজাইনের একটি গুরুত্বপূর্ণ কৌশল, যেখানে ডেটা বা সার্ভিসের কপি তৈরি করে একাধিক স্থানে সংরক্ষণ করা হয়। এর মূল উদ্দেশ্য হলো High Availability, Reliability, এবং Performance বৃদ্ধি করা। ব্যাকআপ তৈরির মাধ্যমে এটি ডাউনটাইম কমায় এবং সার্ভারের উপর লোড কমাতে সাহায্য করে।

***

### **Replication কী?**

Replication এমন একটি প্রক্রিয়া যেখানে ডেটা বা সার্ভিসের কপি একাধিক সার্ভার বা স্থানে সংরক্ষণ করা হয়। এটি নিশ্চিত করে যে যদি কোনো সার্ভার Fail হয়, তবুও ডেটা অন্য সার্ভার থেকে অ্যাক্সেস করা যাবে।

উদাহরণস্বরূপ, Google Drive-এ আপনার ফাইলগুলি মূল সার্ভারে সংরক্ষিত থাকে, কিন্তু Google একাধিক ডাটা সেন্টারে এসব ফাইলের কপি রাখে, যাতে একটি সার্ভার Fail হলেও আপনার ডেটা হারিয়ে না যায়।

***

### **Replication-এর প্রকারভেদ**

Replication বিভিন্ন ধরণের হতে পারে, তবে প্রধানত তিনটি ক্যাটাগরিতে বিভক্ত করা যায়:

#### **১. ডাটাবেজ Replication**

এটি হলো ডাটাবেজ সার্ভারে ডেটার কপি তৈরি করার পদ্ধতি। তিন ধরনের ডাটাবেজ Replication রয়েছে:

**Master-Slave Replication**

* Master সার্ভার Write Operation এর কাজ করে ।
* Slave সার্ভার শুধুমাত্র Read Operation এর জন্য ব্যবহৃত হয়।
* সুবিধা: একাধিক Slave সার্ভার ব্যবহার করলে লোড কমে যায়।
* উদাহরণ: MySQL, PostgreSQL।

**Master-Master Replication**

* একাধিক Master সার্ভার Write Operation এর কাজ করতে পারে।
* Load balancing করা সহজ হয়।
* উদাহরণ: CouchDB, Google Spanner।

**Peer-to-Peer Replication**

* প্রত্যেক Node একে অপরের সাথে ডেটা শেয়ার করতে পারে।
* সাধারণত Distributed System-এ ব্যবহৃত হয়।
* উদাহরণ: Apache Cassandra, DynamoDB।

***

#### **২. ফাইল Replication**

ফাইল সার্ভারের মধ্যে ফাইলের কপি তৈরি করে। এটি Backup এবং Disaster Recovery-তে ব্যবহৃত হয়।

* Synchronous Replication – পরিবর্তন সাথে সাথে অন্য সার্ভারে প্রতিফলিত হয়।
* Asynchronous Replication – কিছুটা বিলম্বের সাথে কপি আপডেট হয়।

***

#### **৩. স্টোরেজ বা ব্লক-লেভেল Replication**

এই ধরণের Replication মূলত হার্ডওয়্যার লেভেলে (Storage Disks) পরিচালিত হয়।

* RAID (Redundant Array of Independent Disks) – একাধিক ডিস্কে ডেটার কপি সংরক্ষণ করে হার্ডওয়্যার Failure প্রতিরোধ করে।
* Cloud Storage Replication – AWS S3, Google Cloud Storage-এর মতো সিস্টেমগুলোতে স্বয়ংক্রিয়ভাবে ডেটা একাধিক স্থানে সংরক্ষণ করা হয়।

***

### **Replication-এর উপকারিতা**

**High Availability :** Replication নিশ্চিত করে যে কোনো সার্ভার Fail হলেও ডেটা বা সার্ভিসের অ্যাক্সেস থেকে ব্যবহারকারী বঞ্চিত হবে না।

**Load Balancing:** যখন একাধিক সার্ভারে ডেটা কপি থাকে, তখন ব্যবহারকারীর Request বিভিন্ন সার্ভারে ভাগ করা যায়, ফলে সার্ভারের উপর চাপ কমে।

**Fault Tolerance :** Replication থাকার কারণে কোনো হার্ডওয়্যার বা সফটওয়্যার Fail হলে সিস্টেম ঠিক থাকে এবং ডেটা হারিয়ে যায় না।

**Disaster Recovery:** Replication ব্যাকআপের মতো কাজ করে, ফলে হঠাৎ কোনো সমস্যা হলে ডেটা পুনরুদ্ধার করা সহজ হয়।

**পারফরম্যান্স বৃদ্ধি:** ব্যবহারকারী যদি নিকটস্থ সার্ভার থেকে ডেটা পায়, তাহলে Latency কমে এবং দ্রুতগতিতে সেবা পাওয়া যায়।

***

### **Replication-এর চ্যালেঞ্জ ও সীমাবদ্ধতা**

Data Consistency– সব কপি আপডেট রাখতে হলে Network Latency বাড়তে পারে।\
Expensive– একাধিক সার্ভার ব্যবহার করা মূল্যবান ও রক্ষণাবেক্ষণ জটিল।\
Synchronization সমস্যা – Master-Slave Replication-এ Slave নোডগুলো সামঞ্জস্য রাখতে কিছুটা দেরি করতে পারে।

***

### **Use Cases**

ব্যাংকিং ও ফিনান্স – একাধিক ডাটাবেজ সার্ভারে ট্রানজেকশন সংরক্ষণ করা হয়।\
ই-কমার্স – Amazon, eBay-এর মতো সাইটগুলো দ্রুত ডাটা রিড করার জন্য Replication ব্যবহার করে।\
ক্লাউড কম্পিউটিং – AWS, Google Cloud, Azure সার্ভার রিডান্ডেন্সি নিশ্চিত করতে এটি ব্যবহার করে।\
বড় স্কেল অ্যাপলিকেশন – Facebook, YouTube-এর মতো প্ল্যাটফর্মে Replication ব্যবহার করা হয় যাতে ডেটা সর্বদা উপলব্ধ থাকে।

***

Replication হলো একটি সিস্টেমের স্থিতিশীলতা ও নির্ভরযোগ্যতা নিশ্চিত করার অন্যতম প্রধান কৌশল। এটি শুধু ডেটা নিরাপদ রাখে না, বরং সার্ভিসের গতি ও পারফরম্যান্স বৃদ্ধি করে। যদিও এর কিছু চ্যালেঞ্জ রয়েছে, তবে সঠিকভাবে ডিজাইন করলে এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং ব্যবসার ধারাবাহিকতা বজায় রাখে।
