রেপ্লিকেশন টপোলজি
সার্ভারের দুনিয়ায় কে বস আর কে চামচা?
বল্টু ভাই হোয়াইটবোর্ডে মার্কার দিয়ে আঁকিবুঁকি শুরু করলেন, “রেপ্লিকেশন তো করবি, কিন্তু এতগুলো সার্ভারের মধ্যে কন্ট্রোল কার হাতে থাকবে? সবাই যদি একসাথে ডাটা এডিট করতে চায়, তাহলে তো সার্ভারের ভেতরেই কুরুক্ষেত্র বেজে যাবে! তাই প্রথমেই ঠিক করতে হবে লিডার কে আর ফলোয়ার কে? যে সার্ভার ক্লায়েন্টের কাছ থেকে সরাসরি ডাটা রাইট বা আপডেট করার অর্ডার নেবে, সে হলো 'লিডার' (বস)। আর যারা চুপচাপ বসের কাছ থেকে ডাটা কপি করে নিজেদের কাছে রাখবে, তারা হলো 'ফলোয়ার' (চামচা)। কয়টা লিডার থাকবে তার ওপর ভিত্তি করে মূলত তিন ধরনের আর্কিটেকচার হয়।”
১. সিঙ্গেল লিডার (Single Leader): একনায়কতন্ত্র
“এই পদ্ধতিতে পুরো সিস্টেমে একটাই বস বা লিডার থাকে। ক্লায়েন্টের যত রাইট রিকোয়েস্ট (যেমন- নতুন ভিডিও আপলোড, লাইক, কমেন্ট), সব শুধু এই একটা সার্ভারেই যাবে। এরপর লিডার তার ফলোয়ারদের কাছে ডাটা সিঙ্ক করে দেবে। ফলোয়ারদের কাজ শুধু মানুষের কাছে ডাটা 'রিড' করতে দেওয়া। একে মাস্টার-স্লেভ আর্কিটেকচারও বলে।
তোর বিড়ালটিউবের মতো রিড-হেভি সিস্টেমের জন্য এটা জোস! কারণ এখানে একটাই লিডার, তাই কে কার আগে ডাটা রাইট করবে সেই সিরিয়াল নিয়ে কোনো ক্যাচাল বা কনফ্লিক্ট হয় না।”

মন্টু একটু ভেবে বলল, “কিন্তু ভাই, বসের যদি হার্ট অ্যাটাক হয়? মানে লিডার সার্ভারটা ফেইল করলে তো সিস্টেমের রাইট হওয়া পুরোপুরি বন্ধ হয়ে যাবে, যতক্ষণ না নতুন লিডার সিলেক্ট হয়! আবার পৃথিবীর অন্য প্রান্তের ইউজাররা একটা মাত্র লিডারের কাছে রাইট করতে গেলে তো ল্যাগ ফিল করবে।”
বল্টু ভাই হেসে বললেন, “একদম পয়েন্টে হিট করেছিস! এটা সিম্পল হলেও, সিঙ্গেল পয়েন্ট অফ ফেইলিউরের একটা রিস্ক থেকেই যায়।”
২. মাল্টি-লিডার (Multi-Leader): এলাকার একাধিক ডন
“সিঙ্গেল লিডারের ল্যাগ আর ফেইলিউরের সমস্যা দূর করতে চাইল মাল্টি-লিডার আর্কিটেকচার। এখানে একের অধিক লিডার থাকে। ধর, তোর একটা লিডার সার্ভার রাখলি ঢাকায়, আরেকটা আমেরিকায়। ঢাকার ইউজার ঢাকায় রাইট করবে, আমেরিকার ইউজার আমেরিকায়। এতে স্পিডও বাড়বে, আবার একটা লিডার মরলে অন্যটা দিয়ে কাজ চলবে।”
মন্টুর চোখ চকচক করে উঠল, “বাহ, এটাই তো বেস্ট!”
বল্টু ভাই ডেভিলিশ একটা হাসি দিয়ে বললেন, “বেস্ট? মাল্টি-লিডারের সবচেয়ে বড় বিষফোঁড়ার নাম হলো 'কনফ্লিক্ট'। ধর, ঢাকা আর আমেরিকা থেকে দুইজন ইউজার ঠিক একই মিলি-সেকেন্ডে একটা বিড়ালের ভিডিওর টাইটেল এডিট করল! দুই লিডারই রাইট অ্যাকসেপ্ট করে বসল। এরপর যখন তারা নিজেদের মধ্যে ডাটা সিঙ্ক করতে যাবে, তখন কার টাইটেলটা ফাইনাল হিসেবে ডাটাবেজে সেভ হবে? এই কনফ্লিক্ট রিজলভ করাটা সিস্টেম ডিজাইনের অন্যতম ঝামেলার একটা কাজ।”

৩. লিডারলেস (Leaderless): সর্বহারাদের রাজত্ব (গণতন্ত্র)
“যদি সিস্টেমে কোনো বসই না থাকে? সবাই সমান! ক্লায়েন্ট চাইলে যেকোনো সার্ভারেই রাইট বা রিড রিকোয়েস্ট পাঠাতে পারে। এটাই হলো লিডারলেস বা পিয়ার-টু-পিয়ার (Peer-to-Peer) রেপ্লিকেশন। এখানে কে কার আগে ডাটা নিল, সেটা মেইনটেইন করার জন্য 'কোরাম' (Quorum) বা ভোটিং সিস্টেম ব্যবহার করা হয়। মানে, রাইট সাকসেসফুল হতে হলে মেজরিটি সংখ্যক সার্ভারের সম্মতি লাগবে।”
মন্টু কপাল কুঁচকে বলল, “ভাই, এটা শুনেই তো অনেক কমপ্লেক্স মনে হচ্ছে।”

“কমপ্লেক্স তো বটেই! তবে এই সিস্টেমে কোনো সিঙ্গেল পয়েন্ট অফ ফেইলিউর বা বটলনেক থাকে না। Amazon-এর DynamoDB বা Apache Cassandra এই কনসেপ্টেই বানানো।” বল্টু ভাই হোয়াইটবোর্ডের ঢাকনা লাগাতে লাগাতে বললেন, “এই তিনটা মেইন পদ্ধতি ছাড়াও আরও কিছু প্যাটার্ন আছে, যেমন:
- রিড রেপ্লিকা (Read Replica)
- চেইন রেপ্লিকেশন (Chain Replication)
- স্ন্যাপশট রেপ্লিকেশন (Snapshot Replication)
তোর বিড়ালটিউবের জন্য আপাতত এই তিনটার কনসেপ্ট হজম করলেই চলবে। বাকিটা গুগল করে নিস।”
মন্টু এবার খুশি মনে বলল, “সব পানির মতো ক্লিয়ার ভাই। আমি তাহলে কাজ শুরু করে দিই! সিস্টেমে সত্যি সত্যিই কোনো ঝামেলা হওয়ার আগেই সব সেটআপ করে ফেলব।”
“যা, ময়দানে নেমে পড়,” বলে বল্টু ভাই আজকের মতো বিদায় দিলেন মন্টুকে।