مهندسی آشوب؛ روشی برای پیشبینی اتفاقات غیرمنتظره
بهنظرتان میتوان آشوب را سازماندهی کرد؟ خب مقصد مهندسی آشوب دقیقا همین است. امروزه با ظهور میکروسرویسها و فضاهای ابری توزیعشده دنیای وب زیاد پیچیدهتر از قبل شده است. همه ما بیشتر از قبل به این سیستمها وابستهایم و هر خطایی در این سیستمها امکان پذیر مشکلات بسیاری تشکیل کند. مهندسی آشوب روشی برای پیشبینی اتفاقات غیرمنتظره و خرابیهای سیستم است که در این مقاله آن را بازدید کردهایم. با ما همراه باشید.
مهندسی آشوب چیست؟
مهندسی آشوب رویکردی قاعدهمند برای شناسایی خرابیها قبل از وقوع آنهاست. در این روش با اجرای آزمایشهای پیشگیرانه نحوه عکس العمل سیستم در شرایط بحرانی را شناسایی و مشکلات آن را از بین بردن میکنیم. مهندسی آشوب به ما این امکان را میدهد که تصورمان از حرکت سیستم را با آنچه واقعا اتفاق میافتد قیاس کنیم و بفهمیم چه مشکلاتی در سیستم ما وجود دارد.
کارشناسان میگویند مهندسی آشوب در واقع فرایند آزمایش یک سیستم محاسباتی است تا یقین شویم که سیستم میتواند در برابر اختلالات غیرمنتظره مقاومت کند. مهندسی آشوب را بر مبنای مفاهیم زیربنایی نظریه آشوب طراحی کردهاند. این نظریه بر حرکت اتفاقی و اتفاقات غیرقابلپیشبینی تمرکز دارد. مقصد مهندسی آشوب شناسایی نقاط ضعف سیستم از طریق آزمایشهای کنترلشده است؛ یعنی با این کار میتوانیم نقاط صدمهپذیر سیستم را اشکار و مشکلاتشان را از بین بردن کنیم.
سیستمها به دلایل گوناگون دچار مشکل خواهد شد. هرچه سیستم بزرگتر و پیچیدهتر باشد، رفتارهای آن پیشبینینشدنیتر و آشفتهتر خواهد شد. مفهوم مهم نظریه آشوب خرابکردن به عمد یک سیستم برای جمعآوری اطلاعاتی است که بهپشتیبانی آنها میتوانیم سیستم را مقاوم و انعطافپذیر کنیم. یکی از با اهمیت ترین کاربردهای مهندسی آشوب یافتن نقاط ضعف امنیتی در فضای دیجیتال است؛ برای مثال مهندسان IT با انجام چندین آزمایش مشکلات نهان، نقاط کور و گلوگاههای عملکردی سیستم را اشکار میکنند تا قبل از حملات هکری آنها را از بین ببرند.
چرا مهندسی آشوب مهم است؟
امروزه زندگی و کسبوکار ما وابسته به سیستمهای کامپیوتری است. با پیشرفت تکنولوژی این سیستمهای پیچیدهتر شدهاند و پیشبینی خطاهای احتمالی آنها دشوار است. مشکلات سیستمهای کامپیوتری تأثیر درخور توجهی بر زندگی ما دارند و امکان پذیر یک خطای کوچک هزینه سنگینی برای شرکتها داشته باشد. برای مثال بهحرف های مدیرعامل هواپیمایی بریتانیا، یک خطای سیستمی در سال ۲۰۱۷ علتشد دهها هزار مسافر این شرکت هواپیمایی در فرودگاه سرگردان شوند و این مشکل ۸۰میلیون پوند به این شرکت زیان زد. به این علت شرکتها نیاز دارند مشکلات احتمالی را پیشبینی کنند تا در شرایط بحرانی دچار نشوند.
نقش مهندسی آشوب در سیستمهای توزیعشده
سیستمهای توزیعشده پیچیدهتر از سیستمهای یکپارچهاند. این سیستمها متشکل از چندین کامپیوترند که بهواسطه یک شبکه به هم متصلاند. این کامپیوترها با هم تعامل دارند و اجزای خود را با هم به اشتراک میگذارند. مقصد سیستمهای توزیعشده همگامسازی و تکمیل ماموریت های گوناگون است، به این علت دشوار است که همه خطاهای احتمالی آنها را پیشبینی کنیم. ۸ نادرست در سیستمهای توزیعشده وجود دارد که امکان پذیر برنامهنویسان تازهکار آنها را در نظر نگیرند. این خطاها عبارتاند از:
- شبکه قابلمطمعن است؛
- تأخیر در شبکه صفر است؛
- پهنای باند بینهایت است؛
- شبکه امن است؛
- توپولوژی تحول نمیکند؛
- یک مدیر وجود دارد؛
- هزینه حملونقل صفر است؛
- شبکه همگن است.
تعداد بسیاری از این خطاها به ما پشتیبانی میکنند آزمایشهای مهندسی آشوب را طراحی کنیم؛ برای مثال قطعشدن شبکه میتواند طیف وسیعی از خرابیها را تشکیل کند که بر مشتریان تاثییر میگذارند یا برنامهها امکان پذیر دائما حافظه را دچار کنند. هریک از این مثالها نیاز به آزمایش و آمادهسازی دارند؛ به همین علت مهندسی آشوب به ما پشتیبانی میکند مشکلات یک سیستم توزیعشده را بشناسیم و برای آنها آماده باشیم.
نحوه کارکرد مهندسی آشوب
مهندسی آشوب همانند تست استرس است و مقصد آن شناسایی و اصلاح مشکلات سیستم یا شبکه. تست استرس یک جزء را در یک زمان آزمایش و تصحیح میکند، اما مهندسی آشوب همه مشکلاتی را بازدید میکند که بینهایت علت احتمالی دارند؛ یعنی به مسائل دید کلگرا دارد و کارکرد سیستم در برابر مجموعه مشکلاتی را میسنجد که گمان وقوع کمتری دارند. فرایند مهندسی آشوب شامل چند مرحله است که در ادامه آنها را بازدید میکنیم.
۱. برنامهریزی فرایند در حالت ثابت
یکی از با اهمیت ترین سؤالات در مهندسی آشوب این است که چه چیزی امکان پذیر اشتباه تشکیل کند؟ با پرسیدن این سوال درمورد خدمات و سیستمی که داریم، میتوانیم نقاط ضعف بالقوه را برسی و درمورد نتایج احتمالی آن او گفت و گو کنیم. در این مرحله نحوه کارکرد صحیح سیستم در حالت عادی را شناسایی میکنیم. سپس الویتهایمان را بازدید میکنیم تا خطاهایی را اشکار کنیم که محتملترند یا صدمه بیشتری میزنند.
۲. تشکیل فرضیه
در این مرحله، میخواهیم بدانیم اشتباه در این نقاط ضعف چه اثری بر کارکرد سیستم، مشتریان و خدمات سازمان میگذارد. به این علت یک یا چند مورد از نقاط ضعف سیستم را در نظر میگیریم و فرضیهای درمورد آنها میسازیم. سناریوهای احتمالی را بهشکل فرضیه تدوین میکنیم تا بدانیم چطور باید در سیستم آشوب تشکیل کنیم؛ برای مثال آزمایشکنندگان نرمافزار امکان پذیر بخواهند کارکرد سیستم را بازدید کنند تا بفهمند در صورت افزایش ترافیک، چه اتفاقی در سیستم میافتد. در این حالت افزایش ترافیک یک نقطه آشوب در سیستم خواهد می بود.
۳. انجام آزمایش
در مرحله سوم، آزمایشهایی را برای سنجش عواقب انجام میدهیم. آزمایشها امکان پذیر خطای یک فرایند در شرایط بحرانی را نشان دهند یا یک رابطه علت و معلولی غیرمنتظره را شناسایی کنند. این آزمایشهای کنترلشده خطاهای سیستم در شرایط خاص را اشکار میکنند و به ما زمان اصلاح آنها را خواهند داد. برای مثال امکان پذیر همانندسازی افزایش ترافیک سیستم به ما بگوید که کارکرد ذخیرهسازی اطلاعات دچار مشکل خواهد شد.
۴. برسی
برای فهمیدن این که سیستم در شرایط بحرانی چطور عمل میکند، باید در دسترس بودن و پایداری سیستم را اندازهگیری کنیم، بعد نتایج آزمایش را بازدید و نقاط ناکامی را اشکار میکنیم تا تیم حمایتبتواند آنها را رفع کند. با این کار یقین میشویم سیستم ما در اوقات بحرانی هم کارکرد پایدار و صحیح دارد.
۵. از بین بردن مشکل
بعد از اجرای آزمایشهای مهندسی آشوب ۲ نتیجه احتمالی وجود دارد؛ در حالت اول آزمایش قبول میکند که سیستم شما در برابر ناکامی مقاوم است و در حالت دوم مشکلی را به شما مشخص می کند که علتخرابی سیستم شده است. کارشناسان میگویند هر دو حالت برای شما مطلوباند. در حالت اول شما مطمعن بیشتری به سیستم خود و حرکت آن خواهید داشت و در حالت دوم قبل از این که مشکل جدی تشکیل بشود، مشکل را شناسایی کردهاید و در این مرحله میتوانید آن را از بین بردن کنید.
بهترین شیوه برای مهندسی آشوب
مهندسی آشوب فرایندی پیچیده است. برای جلوگیری از تشکیل مشکل بهتر است از روشهای یقین منفعت گیری کنید. ابتدا حرکت معمول سیستم را فهمیدن کنید. فهمیدن کامل سیستم در شرایط سالم و پایدار به شما پشتیبانی میکند مشکلات را بهتر تشخیص دهید. سپس سناریوهای احتمالی را همانندسازی کنید؛ روی تزریق ناکامیها و اشکالات احتمالی تمرکز کنید. آشوبی در نقطه ضعف سیستم تشکیل کنید و کارکرد سیستم را بازدید کنید تا مشکلات را اشکار کنید.
مهندسی آشوب امکان پذیر زیاد مخرب باشد، به این علت آزمایش خود را کنترلشده و دقیق طراحی کنید. با تیمهای فناوری اطلاعات، گسترشدهندگان و واحدهای دیگر سازمان هماهنگ باشید و مشکلات سیستم را با حداقل صدمه شناسایی کنید.
سخن آخر
امروزه سیستمهای توزیعشده و ریزسرویسها گسترش یافتهاند و سیستمهای وب را پیچیدهتر کردهاند. به همین علت پیشبینی خرابیهای سیستم دشوارتر از قبل است. ما برای جلوگیری از تشکیل اشتباه در سیستم باید راه حلهای جدیدی داشته باشیم. مهندسی آشوب یکی از این راه حلها است. در مهندسی آشوب، با تشکیل خطاهایی کنترلشده نقاط ضعف و اشکالات سیستم را شناسایی و مشکلات احتمالی را قبل از رخدادن حل میکنیم.
اگر این مقاله برای شما سودمند بوده است، آن را با دوستان خود به اشتراک بگذارید و نظرتان را برایمان بنویسید.