خرابی در تمامی اجزای یک سیستم پیچیده اجتناب ناپذیر است؛ از سختافزار و نرمافزار گرفته تا خطاهای انسانی و محدودیتهای شبکه. تاکید اصلی بر مهندسی تابآوری است؛ یعنی طراحی و پذیرش فعالانه سیستمهایی که توانایی واکنش مناسب در برابر خرابیها را دارند.
سختافزار قابل اعتماد نیست، بنابراین ما از افزونگی (Redundancy) استفاده میکنیم تا در برابر خرابیهای سختافزاری بقا داشته باشیم، اما این کار احتمال وجود حداقل یک خرابی در هر زمان را افزایش میدهد. نرمافزار نیز خطاپذیر است، و از آنجا که برنامههای ما از نرمافزار تشکیل شدهاند، مستعد خطا هستند. برای نظارت بر خرابیها، نرمافزارهای نظارتی را اضافه میکنیم، اما این نظارت هم از جنس نرمافزار است و خود میتواند دچار خرابی شود.
انسانها هم مرتکب اشتباه میشوند، بنابراین برای کاهش خطاها از اتوماسیون استفاده میکنیم؛ اما اتوماسیون احتمال خطای انجام ندادن کاری را افزایش میدهد. هیچ سیستم اتوماتیکی نمیتواند به همان گسترهای که انسانها قادرند واکنش نشان دهند.
شبکهها از سختافزار، نرمافزار و کابلهای طولانی تشکیل شدهاند، بنابراین آنها نیز دچار خطا میشوند. هر مکانیسم ایمنی که برای کاهش یک نوع خطا استفاده میکنیم، نوع جدیدی از خطا را اضافه میکند.
پس، با پذیرش این که سیستمها قطعاً دچار خرابی میشوند، میتوانیم واکنش سیستمها به این خرابیها را طراحی کنیم؛ همانطور که مهندسان خودرو مناطق شکست (Crumple Zones) را برای محافظت از سرنشینان طراحی میکنند، میتوانیم حالتهای شکست ایمنی را ایجاد کنیم که خسارت را محدود کرده و از بقیه سیستم محافظت کنند.
#TIP-08
〰️〰️〰️〰️〰️〰️© @microfrontend_ir