Overview

Fault Tolerance কী?

Fault Tolerance হলো এমন একটি ডিজাইন পদ্ধতি, যাতে সিস্টেমের কোনো অংশ বিকল হলেও পুরো সিস্টেম চালু থাকে এবং ব্যবহারকারী সেবা পেতে থাকেন।

উদাহরণ: ট্রাফিক সিগনাল নষ্ট হলে রাস্তায় বিশৃঙ্খলা হয়। কিন্তু যদি ব্যাকআপ সিগনাল বা ট্রাফিক পুলিশের ব্যবস্থা থাকে, তাহলে যানবাহন চলতে থাকে। সিস্টেমেও কোনো সার্ভার বা সার্ভিস বিকল হলে বিকল্প ব্যবস্থা কাজ চালিয়ে নেয়।

Fault Tolerance কেন প্রয়োজন?

ব্যাংকিং, Cloud সার্ভিস বা ই-কমার্সের মতো বড় সিস্টেমে একটি Database সার্ভার Crash করলেই ব্যবহারকারী সেবা হারান। তাই সিস্টেমের স্থিতিশীলতা ও নির্ভরযোগ্যতা বজায় রাখতে Fault Tolerance জরুরি।

Fault Tolerance ও Reliability-র সম্পর্ক

Fault Tolerance হলো Reliability অর্জনের একটি প্রধান উপায়। আর Fault Tolerance ও High Availability কাছাকাছি হলেও এক নয়: Fault Tolerant সিস্টেমে বিকল হওয়ার মুহূর্তেও সেবায় ব্যাঘাত প্রায় থাকে না, আর High Availability সিস্টেমে অল্প সময়ের ব্যাঘাত ঘটতে পারে, তবে দ্রুত ফিরে আসে।

Fault Tolerance মূল কৌশল

১. Redundancy

অতিরিক্ত উপাদান রাখা, যাতে একটি বিকল হলে অন্যটি তার জায়গা নেয়।
উদাহরণ: একাধিক সার্ভার, একাধিক Load Balancer, একাধিক ডিস্ক (RAID)।

২. Replication

ডাটা একাধিক জায়গায় কপি রাখা, যাতে এক জায়গা নষ্ট হলে অন্য জায়গা থেকে পাওয়া যায়।
উদাহরণ: Database Replication। মনে রাখবেন, এটি Backup-এর বিকল্প নয়।

৩. Failover

একটি সিস্টেম বা সার্ভিস বিকল হলে স্বয়ংক্রিয়ভাবে অন্যটিতে সুইচ করা।
উদাহরণ: Primary Database বিকল হলে Standby Database দায়িত্ব নেয়।

৪. Graceful Degradation

কোনো ফিচার বিকল হলে পুরো সিস্টেম বন্ধ না করে বাকি অংশ চালু রাখা।
উদাহরণ: ওয়েবসাইটে ছবি লোড না হলেও লেখা ও বাকি ফিচার ঠিকমতো দেখানো, বা Payment বিকল হলেও Product Browsing চালু রাখা।

৫. Error Detection ও Recovery

ত্রুটি দ্রুত শনাক্ত করে স্বয়ংক্রিয়ভাবে সমাধান বা পুনরুদ্ধার করা। এর জন্য Monitoring টুল, Health Check ও Alert ব্যবহার হয়।

৬. আরও কিছু গুরুত্বপূর্ণ কৌশল

  • Retry with Backoff: ব্যর্থ হলে ধাপে ধাপে বিরতি বাড়িয়ে আবার চেষ্টা করা

  • Timeout: অনির্দিষ্টকাল অপেক্ষা না করা

  • Circuit Breaker: কোনো সার্ভিস বারবার ব্যর্থ হলে কিছুক্ষণ তাকে ডাকা বন্ধ রাখা, যাতে ব্যর্থতা ছড়িয়ে না পড়ে

  • Bulkhead: সিস্টেমকে আলাদা অংশে ভাগ করা, যাতে এক অংশের সমস্যা অন্য অংশে না ছড়ায়

  • Idempotency: Retry হলেও একই কাজ দুবার না হওয়া (যেমন পেমেন্ট)

Fault Tolerance ত্রুটির ধরন

স্তর

সম্ভাব্য ত্রুটি

সমাধান

Hardware

ডিস্ক, সার্ভার বা পাওয়ার নষ্ট

Redundancy, RAID

Network

সংযোগ বিচ্ছিন্ন, Latency বৃদ্ধি

Retry, Timeout, Multi-path

Software

Bug, Memory Leak, Crash

Health Check, Auto Restart

Data Center

পুরো লোকেশন বিকল

Multi-AZ, Multi-Region

মানবিক ভুল

ভুল Deployment বা কনফিগ

Canary Release, Rollback

Fault Tolerance ডিজাইনে মনে রাখবেন

  • ব্যর্থতাকে ব্যতিক্রম নয়, স্বাভাবিক ঘটনা ধরে ডিজাইন করুন।

  • Single Point of Failure (SPOF) খুঁজে বের করে দূর করুন।

  • Retry-র সাথে Timeout ও Backoff না থাকলে সমস্যা বাড়তে পারে (Retry Storm)।

  • Fault Tolerance-এর মাত্রা ব্যবসার প্রয়োজন অনুযায়ী ঠিক করুন, কারণ যত বেশি সহনশীলতা, তত বেশি খরচ ও জটিলতা।

  • Failover ও Recovery ব্যবস্থা নিয়মিত পরীক্ষা করুন। Chaos Engineering-এর মাধ্যমে ইচ্ছাকৃত Failure ঘটিয়েও পরীক্ষা করা যায়।

Fault Tolerance সিস্টেমের নির্ভরযোগ্যতা বাড়ায় এবং ব্যবহারকারীকে নিরবচ্ছিন্ন, নিরাপদ সেবা দেয়। Redundancy, Replication, Failover, Graceful Degradation এবং Error Detection মিলিয়ে এমন সিস্টেম গড়া যায়, যেখানে কোনো অংশ বিকল হলেও পুরো সিস্টেম টিকে থাকে।