صارفین کے لیے ‘فالٹ ٹالرنس’ کا اظہار نظام کے مکمل طور پر فعال یا بند ہونے (binary state) کے بجائے، اس کے رویے میں عدمِ تسلسل کی صورت میں ہوتا ہے۔ جزوی تعطل (partial outage) کے دوران بھی 200 کا رسپانس موصول ہو سکتا ہے حالانکہ فیچرز کی کارکردگی خاموشی سے متاثر ہو رہی ہوتی ہے؛ یا پھر بنیادی فیچرز تو کام کرتے رہتے ہیں لیکن نظام سست محسوس ہوتا ہے کیونکہ کسی انحصار (dependency) کی وجہ سے درخواستیں (requests) پیچھے جمع ہو رہی ہوتی ہیں۔
نظام کی قابلِ اعتماد ہونے کا تاثر اس بات پر منحصر ہوتا ہے کہ خراب تجربہ کتنی دیر تک جاری رہتا ہے۔ جب بحالی میں سیکنڈوں کے بجائے منٹوں کا وقت لگتا ہے تو صارفین بار بار کوشش (retry) کرتے ہیں، کلائنٹس بوجھ میں اضافہ کر دیتے ہیں، کیشے (caches) کا عمل متاثر ہوتا ہے، قطاریں (queues) طویل ہو جاتی ہیں، اور اکثر اوقات اصل خرابی ختم ہونے کے بعد بھی نظام کی بحالی مشکل ہو جاتی ہے۔
صارفین کو نظر آنے والے ان نتائج کو عملی طور پر سمجھنے کے لیے، ذیل میں دیے گئے منظرناموں (scenarios) کا جائزہ لیں اور مشاہدہ کریں کہ کس طرح مختلف علامات صارف کی دوبارہ کوشش کرنے کی آمادگی پر اثر انداز ہوتی ہیں۔
ایک ہی بنیادی خرابی بہت مختلف تجربات کا باعث بن سکتی ہے، جس کا انحصار اس بات پر ہوتا ہے کہ کون سا جزو (component) ناکام ہوا اور سسٹم نے اس پر کیا ردعمل ظاہر کیا۔ ‘ایرر اسپائکس’ (اچانک خرابیوں کی کثرت) تو واضح ہوتی ہیں، لیکن ‘ٹائم آؤٹس’ (time-outs) اکثر زیادہ تکلیف دہ محسوس ہوتے ہیں کیونکہ یہ سرور کی صلاحیت استعمال کرنے کے ساتھ ساتھ صارف کے کام کے بہاؤ (workflow) کو بھی روک دیتے ہیں؛ اسی طرح، ‘اسٹیل ریڈز’ (stale reads - یعنی پرانا ڈیٹا پڑھنا) کسی فیچر کے لحاظ سے قابلِ قبول بھی ہو سکتے ہیں اور تباہ کن بھی۔
‘فالٹ ٹالرنس’ (خرابی برداشت کرنے کی صلاحیت) کے بارے میں زیادہ تر مباحث اس وقت واضح ہو جاتے ہیں جب آپ خرابیوں کا تعلق اجزاء کے ایک چھوٹے سے مجموعے اور ان کے درمیان موجود حدود سے جوڑتے ہیں۔ پروڈکشن کے ایک مختصر ترین سیٹ اپ میں، ایک کلائنٹ ‘اسٹیٹ لیس’ (stateless) سروس کو کال کرتا ہے، سروس ڈیٹا اسٹور سے ڈیٹا پڑھتی اور لکھتی ہے، اور کارکردگی کا انحصار اس بات پر ہوتا ہے کہ آیا درخواست کا راستہ (request path) کیشے (cache) تک پہنچتا ہے یا کسی سست رفتار انحصار (dependency) کا انتظار کرتا ہے۔
خاکہ نما ڈھانچے (diagrammed skeleton) کا استعمال کرتے ہوئے یہ نشاندہی کریں کہ درخواستیں کہاں رک سکتی ہیں، ‘اسٹیٹ’ (state) کہاں ضائع ہو سکتی ہے، اور ‘بیک پریشر’ (backpressure) کو کہاں بوجھ کو پھیلنے سے پہلے کم کر دینا چاہیے۔