মন্টু মিয়াঁর সিস্টেম ডিজাইন
লোড ব্যালেন্সার

লোড ব্যালেন্সার: একাই একশো!

মন্টু মিয়াঁ তো লোড ব্যালেন্সার সেটআপ করার জন্য রেডি। কিন্তু তার মনে খটকা—"এত টাকা খরচ করে এই জিনিস বসাচ্ছি, এ কি শুধু ট্রাফিক পুলিশগিরিই করবে? নাকি আরও কোনো গুণ আছে?"

একটু ঘাটাঘাটি করতেই মন্টু দেখল, লোড ব্যালেন্সার আসলে 'Swiss Army Knife'-এর মতো। এর কাজের কোনো শেষ নেই। মন্টু তার নোটখাতায় লোড ব্যালেন্সারের জাদুকরী সব ক্ষমতার কথা টুকে নিল:

ট্রাফিক বাড়লে সার্ভার বাড়ে (Auto Scaling) 📈

মন্টু ভাবল, "সামনেই বিড়ালটিউবের সুপারস্টার 'মিস্টার ট্রিট'-এর জন্মদিন। ও যদি ঘোষণা দেয় যে রাত ১২টায় লাইভে আসবে, তখন কী হবে?" নিশ্চিতভাবেই দুনিয়ার সব বিড়ালপ্রেমী একসাথে হুমড়ি খেয়ে পড়বে। মন্টুর ১০টা সার্ভার তখন নিমিষেই ক্র্যাশ করবে।

এখানেই লোড ব্যালেন্সারের ম্যাজিক। মন্টু লোড ব্যালেন্সারকে বলে রাখতে পারে, "দেখো বাপু, যখনই দেখবে সার্ভারগুলোর ওপর চাপ (CPU Usage) ৮০% এর বেশি হয়ে গেছে, সাথে সাথে আরও ১০টা নতুন সার্ভার চালু করে দেবে।" আবার লাইভ শেষ হয়ে গেলে যখন চাপ কমবে, তখন অতিরিক্ত সার্ভারগুলো বন্ধ করে দেবে। এই পুরো ব্যাপারটা অটোমেটিক ঘটবে, মন্টুকে রাতে ঘুম থেকে উঠে সার্ভার অন-অফ করতে হবে না।

অসুস্থ সার্ভারকে ছুটি দেওয়া (Health Check) 🏥

মেশিনও তো মানুষের মতো অসুস্থ হতে পারে, তাই না? ১০টা সার্ভারের মধ্যে ১টা সার্ভার যদি হঠাৎ হ্যাং করে বা নষ্ট হয়ে যায়, আর লোড ব্যালেন্সার যদি সেখানেই ইউজার পাঠাতে থাকে, তবে ওই ইউজাররা শুধু 'Loading...' বা 'Error' দেখতে পাবে।

কিন্তু লোড ব্যালেন্সার বেশ স্মার্ট। সে প্রতি কয়েক সেকেন্ড পর পর সার্ভারগুলোকে ডাক দেয় (একে বলে Health Check বা Ping)। — "কিরে ১ নম্বর, ঠিক আছিস?" — সার্ভার ১: "হ্যাঁ বস, ঠিক আছি (200 OK)।" যদি কোনো সার্ভার উত্তর না দেয়, লোড ব্যালেন্সার বুঝে নেয় সে অসুস্থ। তখন সে সুস্থ না হওয়া পর্যন্ত ওই সার্ভারে কোনো ইউজার পাঠায় না। একে বলে ফল্ট টলারেন্স (Fault Tolerance)

Health Check

দোকান খোলা রেখেই রং করা (Zero Downtime Deployment) 🛠️

মন্টু চাইল বিড়ালটিউবে নতুন একটা ফিচার আনবে। কিন্তু সমস্যা হলো, নতুন কোড সার্ভারে আপলোড করার সময় কিছুক্ষণ সার্ভার বন্ধ রাখতে হয়। ইউজাররা তখন সাইটে ঢুকতে পারে না। এটা তো ব্যবসার ক্ষতি!

লোড ব্যালেন্সার থাকলে এই সমস্যা নেই। মন্টু প্রথমে ১টা সার্ভারে নতুন আপডেট দিল। লোড ব্যালেন্সারকে বলল, "শুধু ১% ইউজারকে এই নতুন সার্ভারে পাঠাও।" যদি দেখা যায় সব ঠিক আছে, কোনো এরর নেই, তখন ধীরে ধীরে বাকি সার্ভারগুলো আপডেট করা হলো। এতে সাইট এক সেকেন্ডের জন্যও বন্ধ থাকল না। ইউজার টেরই পেল না কখন অ্যাপ আপডেট হয়ে গেল!

সিকিউরিটি গার্ড বা দারোয়ান (Security) 🛡️

বিড়ালটিউব পপুলার হওয়ার সাথে সাথে কিছু দুষ্টু লোক (হ্যাকার) চাইবে সাইট ডাউন করে দিতে। তারা হয়তো হাজার হাজার ভুয়া ট্রাফিক বা 'ভাইরাস রিকোয়েস্ট' পাঠাবে যাতে সার্ভার ব্যস্ত হয়ে পড়ে। লোড ব্যালেন্সার এখানে বাড়ির গেটের দারোয়ানের মতো কাজ করে। সে যদি দেখে কোনো একটা নির্দিষ্ট আইপি (IP) থেকে সন্দেহজনকভাবে হাজার হাজার রিকোয়েস্ট আসছে, সে গেটেই তাকে আটকে দেয়। ফলে ভেতরের মেইন সার্ভারগুলো নিরাপদ থাকে।

Security

এনক্রিপশন-ডিক্রিপশনের বোঝা কমানো (SSL Termination) 🔐

(এই টপিকটা একটু অ্যাডভান্সড, আমরা পরে বিস্তারিত জানব। আপাতত সহজ করে বুঝি)

আমরা যখন ব্রাউজারে HTTPS দেখি, তার মানে আমাদের তথ্যগুলো তালা-চাবি দিয়ে বন্ধ (Encrypted) করে পাঠানো হচ্ছে। সার্ভারের কাছে পৌঁছালে সেই তালা খুলতে হয়। এই তালা খোলা আর লাগানোর কাজটা (Decryption/Encryption) করতে প্রচুর পরিশ্রম (CPU Power) হয়। মন্টু দেখল, তার সার্ভারগুলো এমনিতেই ভিডিও লোড করতে ব্যস্ত, তার ওপর এই তালা খোলার বাড়তি ঝামেলা কেন নেবে? তাই সে এই দায়িত্ব লোড ব্যালেন্সারকে দিয়ে দিল। লোড ব্যালেন্সার তালা খুলে চেক করে তারপর সার্ভারের কাছে ফ্রেশ রিকোয়েস্ট পাঠিয়ে দেয়। এতে সার্ভারের ওপর চাপ অনেক কমে যায়।

মন্টু মিয়াঁ নোটখাতা বন্ধ করে তৃপ্তির হাসি হাসল। লোড ব্যালেন্সার তো সাধারণ কোনো ট্রাফিক পুলিশ নয়, এ তো রীতিমতো সুপারহিরো! আর দেরি না, এবার কনফিগার করার পালা!

On this page