من المستحيل بناء نظام برمجي محصّن تماماً ضد الأعطال. قد يمرّ النظام بدورة حياته كاملة دون أن يتعطل، لكن لا أحد يستطيع أن يضمن ألا يتعطل أبداً. كتابة شيفرة مثالية لا تحل المشكلة، لأن حتى البرمجيات الخالية من الأخطاء تعتمد على حاسوب مادي، وعلى الطاقة، وعلى وحدات تخزين تعمل، وعلى مكونات أخرى. فإذا فقدت الآلة الطاقة، فسيتعطل البرنامج مهما كانت جودته. ولهذا السبب يجب على المهندسين التصميم للأعطال، أي تحديد سلوك النظام مسبقاً عندما يتوقف بعض أجزائه عن العمل بشكل صحيح.
يتناول هذا المقال الاستراتيجيات التي تساعد المطورين على التعامل مع الأعطال في أنظمتهم. يبدأ بالمنطق الكامن وراء عقلية "افترض أن كل شيء قد يتعطل"، وهي عقلية تُعد الفرق لتوقع الأخطاء بدلاً من اعتبارها استثناءات نادرة. ثم يقارن بين تجنب الأعطال وتحمّلها، وهما نهجان يخدمان أغراضاً مختلفة في تصميم الأنظمة.
ومن هنا ينتقل النقاش إلى التقنيات العملية. يحتاج المطورون إلى تحديد نطاق العطل ليعرفوا أي أجزاء النظام تتأثر وأيها يبقى سليماً. كما يحتاجون إلى طرق تقلل من تأثير العطل، حتى لا تمتد مشكلة في مكون واحد إلى المنصة بأكملها.
وأخيراً، يتناول المقال كيفية التعامل مع الأعطال أثناء استمرار عمل النظام بشكل صحيح، وكيفية قياس التعافي من الأعطال. فتتبع سرعة النظام واكتمال تعافيه يمنح الفرق تغذية راجعة ملموسة حول ما إذا كانت استراتيجيات معالجة الأعطال تعمل فعلياً.
المصدر: ByteByteGo · لخّصه HeadlinesBriefing