مدل پنیر سوئیسی و ۴۶۰ میلیون دلار
خلاصهٔ کاملتر
مدل پنیر سوئیسی میگه هر لایهٔ ایمنی سوراخهایی داره، ولی معمولاً سوراخ هر لایه با بخش سالم لایهٔ قبلی یا بعدی پوشونده میشه؛ فاجعه وقتی اتفاق میافته که سوراخها دقیقاً روی هم بیفتن. نویسنده میگه این مدل معمولاً تو تحلیل حادثههای بزرگ به کار میره، ولی به نظر اون برای طراحی رابط کاربری هم صدق میکنه و کمک میکنه ببینی جزئیات کوچیک چطور جمع میشن.
مثالی که برای شروع انتخاب کرده Knight Capital Groupه. صبح اول اوت ۲۰۱۲ این شرکت شروع کرد به فرستادن سیل سفارشهای ناخواسته به بازار سهام آمریکا — خرید گرون و فروش ارزون، تو الگویی که هیچ منطق اقتصادی نداشت و با کنترلهای معمول هم متوقف نمیشد. تا وقتی حدود ۴۵ دقیقه بعد سیستم خاموش شد، بیش از ۴ میلیون اجرا روی ۱۵۴ سهم و حدود ۳۹۷ میلیون سهم ثبت شده و ضرر از ۴۶۰ میلیون دلار گذشته بود.
ریشهش یه تابع قدیمی به اسم Power Peg بود که سال ۲۰۰۳ منسوخ شد ولی کدش هیچوقت حذف نشد. بعدها محدودکنندهٔ مشترک سیستم آپدیت شد و همهٔ کدهای فعال با نسخهٔ جدید بازنویسی شدن — بهجز همون کد منسوخ. سال ۲۰۱۲ تیم برای برنامهٔ جدید همون فلگ قدیمی رو دوباره استفاده کرد، با این حساب که کد قدیمی روی سرورها بازنویسی میشه.
استقرار قرار بود روی هشت سرور انجام بشه ولی فقط به هفتتا رسید و کسی هم متوجه نشد. اول اوت که فلگ روشن شد، روی سرور هشتم کد خوابیده بیدار شد و چون با محدودکنندهٔ جدید سازگار نبود، هیچوقت متوقف نشد. این ماجرا عملاً شرکت رو کشت و به یه ادغام ختم شد.
به گفتهٔ نویسنده این پنج سوراخ بود: حذف نکردن کد قدیمی، استفادهٔ دوباره از همون فلگ، استقرار ناقص، نبود رویه برای بازبینی استقرار، و نبود سازوکار تشخیص و توقف خودکار فرایند از کنترل خارجشده. هر کدوم بهتنهایی اشتباه کوچیکی بود و حتی چهارتاشون هم فاجعه نمیساخت.
نکتهٔ پایانیش اینه که تحلیلها معمولاً یه حلقه از زنجیره — اینجا همون ادمینی که کد رو کامل مستقر نکرد — رو مقصر میکنن، چون ما داستان عاملیت فردی رو دوست داریم و برای فهمیدن داستان سیستمها مجهز نیستیم.
نکات کلیدی:
- سوراخ یک لایه معمولاً بیخطره؛ همراستا شدنشون فاجعه میسازه
- کد منسوخِ حذفنشده، بمب ساعتیه
- استفادهٔ دوباره از فلگ قدیمی برای کد جدید ریسک بزرگیه
- نبود بازبینی استقرار و کیلسوییچ، دو لایهٔ گمشده بود
- مقصر دونستن یه نفر، تحلیل سیستمی رو جایگزین نمیکنه




