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