آیا فکر میکنید که میتوانید آشوب را به یک نظم سازمانیافته تبدیل کنید؟ خب، دقیقاً این هدفی است که مهندسان آشوب دنبال میکنند. در حال حاضر، با پیدایش میکروسرویسها و محیطهای ابری توزیعشده، دنیای وب به شکل چشمگیری پیچیدهتر از گذشته شده است. تمامی ما اکنون بیش از همیشه به این سیستمها وابستهایم، و هر گونه خطا یا نقص در آنها ممکن است باعث ایجاد مشکلات جدی شود.
مهندسی آشوب یک روش است که برای پیشبینی رخدادهای غیرمنتظره و خرابیهای سیستم طراحی شده است، و در این مقاله ما این موضوع را به طور دقیق بررسی خواهیم کرد. در ادامه با برنا اندیشان همراه باشید تا به تفسیر جزئیات بیشتری از این موضوع بپردازیم.
مهندسی آشوب چیست؟
مهندسی آشوب، یک رویکرد قاعدهمند است که به شناسایی خرابیها قبل از وقوع آنها میپردازد. در این روش، با انجام آزمایشهای پیشگیرانه، نحوه واکنش سیستم در شرایط بحرانی شناسایی و مشکلات آن رفع میشود. به کمک مهندسی آشوب، امکان مقایسه تصور ما از رفتار سیستم با واقعیت اتفاق میافتد، و این به ما کمک میکند تا مشکلات موجود در سیستم را شناسایی و رفع کنیم. این روش از طریق ارزیابی عملکرد سیستم در شرایط مختلف، اطلاعات مفیدی را فراهم میکند که به بهبود کارایی و پایداری سیستم کمک میکند.
کارشناسان اظهار میکنند که مهندسی آشوب در واقع به معنای آزمایش یک سیستم محاسباتی است تا اطمینان حاصل شود که سیستم قادر است در مقابل اختلالات غیرمنتظره مقاومت نماید. این رویکرد بر مبنای مفاهیم زیربنایی نظریه آشوب طراحی شده است که به بررسی رفتار تصادفی و رویدادهای غیرقابلپیشبینی متمرکز است.
هدف اصلی مهندسی آشوب، شناسایی نقاط ضعف سیستم از طریق انجام آزمایشهای کنترلشده است. به عبارت دیگر، با این کار میتوانیم نقاط آسیبپذیری سیستم را شناسایی کرده و مشکلات آنها را رفع نماییم. این فرایند اساساً از تست و ارزیابی عملکرد سیستم در شرایط مختلف برای بهبود عملکرد و پایداری آن استفاده میکند. پیشنهاد میشود به کارگاه آموزش ریاضیات مهندسی مراجعه فرمایید.
سیستمها به دلایل مختلف ممکن است با مشکلاتی مواجه شوند. هر چه یک سیستم بزرگتر و پیچیدهتر باشد، رفتارهای آن پیشبینینشدهتر و پریشانتر خواهد بود. مفهوم اصلی نظریه آشوب، ایجاد مشکلات عمدی در یک سیستم به منظور جمعآوری اطلاعات است که با استفاده از آنها میتوان سیستم را مقاوم و انعطافپذیر کرد.
یکی از کاربردهای اساسی مهندسی آشوب، شناسایی نقاط ضعف امنیتی در فضای دیجیتال است؛ به عنوان مثال، توسط انجام چندین آزمایش، مهندسان IT میتوانند مشکلات پنهان، نقاط کور و گلوگاههای عملکردی سیستم را شناسایی کنند. این اقدامات این امکان را به آنها میدهد که قبل از هرگونه حملهی هکری، مشکلات را شناسایی کرده و آنها را رفع نمایند.
چرا مهندسی آشوب اهمیت دارد؟
در اواخر دهههای اخیر، زندگی و کسبوکار ما به طور چشمگیری به سیستمهای کامپیوتری وابسته شدهاند. با پیشرفت تکنولوژی، این سیستمها به پیچیدگی بیشتری دست یافتهاند که باعث میشود پیشبینی خطاهای احتمالی آنها دشوارتر از گذشته باشد. مشکلاتی که در سیستمهای کامپیوتری به وجود میآید، تأثیرات جدی بر زندگی ما دارد و ممکن است یک خطای کوچک هزینههای سنگینی را برای شرکتها به همراه داشته باشد.
بهعنوان یک نمونه، در سال ۲۰۱۷، مدیرعامل هواپیمایی بریتانیا گزارش داد که یک خطای سیستمی باعث شد که دهها هزار مسافر این شرکت هواپیمایی در فرودگاه محبوب گاتویک سرگردان شوند. این مشکل نهتنها به شرکت هواپیمایی آسیب جدی زد، بلکه محتمله که حدود ۸۰ میلیون پوند ضرر برای آن به همراه داشته باشد.
بنابراین، شرکتها نیاز دارند تا مشکلات احتمالی در سیستمهای خود را پیشبینی کرده و برنامههای مدیریت بحران مناسبی را برای رفع این مشکلات در شرایط بحرانی اجرا نمایند.
مهندسی آشوب چه نقشی در سیستمهای توزیعشده دارد؟
سیستمهای توزیعشده نسبت به سیستمهای یکپارچه، به دلیل وجود چندین کامپیوتر که از طریق یک شبکه به هم متصل هستند، پیچیدهتر هستند. این سیستمها متشکل از چندین عنصر است که با هم تعامل دارند و اجزای خود را با هم به اشتراک میگذارند. هدف اصلی این سیستمها همگامسازی و انجام وظایف مختلف است. به همین دلیل، پیشبینی تمامی خطاهای احتمالی در این سیستمها بسیار دشوار است.
در سیستمهای توزیعشده، معمولاً ۸ اشتباه کلیدی وجود دارد که برنامهنویسان مبتدی ممکن است آنها را در نظر نگیرند. این اشتباهات عبارتند از:
1. تصور اینکه شبکه همیشه قابلاعتماد است؛ در واقعیت، حتی در شبکههای پیچیدهتر نیز احتمال وقوع خطا وجود دارد.
2. تصور اینکه تأخیر در شبکه همیشه صفر است؛ در عمل، تأخیرها معمولاً وجود دارند و میتوانند تأثیر بزرگی بر عملکرد سیستم داشته باشند.
3. فرض اینکه پهنای باند بینهایت است؛ در واقعیت، همیشه منابع محدودی وجود دارند و ممکن است منابع شبکه در حال بهرهبرداری حداکثری نباشند.
4. اعتقاد به اینکه شبکه همواره امن است؛ در عمل، شبکهها تحت تهدیدهای امنیتی قرار دارند و نیاز به تدابیر امنیتی دارند.
5. فرض اینکه توپولوژی شبکه هرگز تغییر نمیکند؛ در عمل، شبکهها ممکن است تغییرات و تحولات مختلفی را تجربه کنند که نیاز به تغییر در توپولوژی دارند.
6. تصور اینکه یک مدیریت مرکزی برای شبکه وجود دارد؛ در بسیاری از موارد، شبکهها به صورت متمرکز مدیریت نمیشوند و نیاز به مدیریت توزیعشده دارند.
7. فرض اینکه هزینه حملونقل دادهها صفر است؛ در واقعیت، هزینههایی مانند پهنای باند، مصرف انرژی و غیره وجود دارند که باید مدیریت شوند.
8. اعتقاد به اینکه شبکه همگن است؛ در واقعیت، شبکهها ممکن است شامل اجزای مختلفی باشند که نیاز به مدیریت متناسب با هر قسمت دارند.
این خطاها به ما کمک میکنند تا آزمایشهای مهندسی آشوب را به خوبی طراحی کنیم؛ بهعنوان مثال، قطع شدن شبکه میتواند منجر به وقوع گسترهای از خرابیها شود که تأثیراتی را بر روی مشتریان یا برنامهها دارد؛ ممکن است این خرابیها باعث شود مشتریان از دسترسی به سرویسها محروم شوند یا برنامهها به دلیل از دست رفتن اطلاعات مورد نیاز دچار مشکل شوند. هر یک از این موارد نیازمند آزمایش و آمادهسازی است؛ بنابراین، مهندسی آشوب به ما کمک میکند تا مشکلات موجود در یک سیستم توزیعشده را شناسایی کرده و برای آنها آماده باشیم.
عملکرد مهندسی آشوب چگونه است؟
مهندسی آشوب، شباهتی با تست استرس دارد، اما هدف آن بهبود عملکرد و شناسایی مشکلات سیستم یا شبکه است. در حالی که تست استرس تنها یک جزء از سیستم را در یک زمان مشخص آزمایش میکند و آن را تصحیح میکند، مهندسی آشوب به بررسی تمام مشکلاتی که بینهایت علل احتمالی دارند میپردازد. به عبارت دیگر، این روش به مسائل به صورت دید کلگرا نگاه میکند و عملکرد سیستم را در برابر مجموعهای از مشکلاتی که احتمال وقوع کمتری دارند، سنجیده میکند.
فرایند مهندسی آشوب شامل چند مرحله است که در هر یک از آنها به جزئیات بیشتری پرداخته میشود و شامل مراحل زیر است:
برنامهریزی فرایند در حالت ثابت
یکی از سوالات اساسی در مهندسی آشوب این است که چه عواملی ممکن است باعث ایجاد خطا شوند؟ با ارائه این سؤال در مورد خدمات و سیستمهایی که در دست داریم، ما قادر خواهیم بود نقاط ضعف پتانسیل را ارزیابی کرده و درباره احتمالات نتایج آنها بحث کنیم.
در این مرحله، ما به دنبال شناسایی نحوه عملکرد صحیح سیستم در وضعیت عادی هستیم. سپس، ما الویتهایمان را بررسی میکنیم تا خطاهایی که احتمال بروز آنها بیشتر است یا ممکن است به سیستم آسیب بیشتری وارد کنند، را شناسایی کنیم.
ایجاد فرضیه
در این مرحله، ما تمایل داریم بفهمیم که خطاهای موجود در این نقاط ضعف چه تأثیری بر عملکرد سیستم، مشتریان و خدمات سازمان میگذارند. بنابراین، ما یک یا چند مورد از نقاط ضعف سیستم را در نظر میگیریم و فرضیههایی درباره آنها ارائه میدهیم.
سناریوهای احتمالی را بهشکل فرضیهها تدوین میکنیم تا بفهمیم چگونه میتوانیم این موارد را در سیستم آشوب تحریک کنیم؛ به عنوان مثال، آزمایشکنندگان نرمافزار ممکن است بخواهند عملکرد سیستم را بررسی کنند تا بفهمند که در صورت افزایش ترافیک، چه اتفاقی در سیستم رخ میدهد. در این حالت، افزایش ترافیک یک نقطه آشوب در سیستم خواهد بود که میتواند تأثیرات گستردهای بر عملکرد سیستم و خدمات آن داشته باشد.
انجام آزمایش
در مرحله سوم، به انجام آزمایشهایی برای ارزیابی عواقب میپردازیم. این آزمایشها ممکن است با نشان دادن خطاهای یک فرایند در شرایط بحرانی یا شناسایی روابط علت و معلولی غیرمنتظره، به ما کمک کنند. آزمایشهای کنترلشده ما را قادر میسازند تا خطاهای سیستم در شرایط خاص را مشخص کنیم و اقدامات لازم برای اصلاح آنها را انجام دهیم. به عنوان مثال، ممکن است با انجام شبیهسازی برای افزایش ترافیک سیستم، متوجه شویم که عملکرد ذخیرهسازی اطلاعات در معرض خطر قرار خواهد گرفت.
ارزیابی
پیشنهاد میشود به مقاله اثر دانینگ کروگر مراجعه فرمایید. برای درک عملکرد سیستم در شرایط بحرانی، اندازهگیری دو عامل اساسی، یعنی دسترسپذیری و پایداری سیستم، ضروری است. از طریق بررسی و تحلیل نتایج آزمایشها، ما نقاط ضعف و شکستهای ممکن در سیستم را شناسایی میکنیم تا تیم پشتیبانی بتواند برای رفع آنها اقدام کند. این اقدامات ما را قادر میسازد تا اطمینان حاصل کنیم که سیستم ما در شرایط بحرانی نیز عملکرد پایدار و صحیحی دارد.
رفع مشکل
پس از اجرای آزمایشهای مهندسی آشوب، دو نتیجه احتمالی ممکن است به دست آید؛ در حالت اول، آزمایش نشان میدهد که سیستم شما در برابر شکست مقاوم است و در حالت دوم، مشکلی به شما نشان داده میشود که باعث خرابی سیستم شده است. کارشناسان اعلام میکنند که هر دو حالت برای شما مفید هستند.
در حالت اول، اعتماد بیشتری به سیستم و عملکرد آن خواهید داشت زیرا از مقاومت آن در برابر مشکلات مطلع شدهاید. و در حالت دوم، قبل از اینکه مشکل جدی ایجاد شود، موفق به شناسایی مشکلات و اقدامات اصلاحی میشوید که از این راه میتوانید مشکلات را بهبود بخشید و خسارات جدیتری را پیشگیری کنید.
بهترین روش برای مهندسی آشوب
مهندسی آشوب یک فرآیند پیچیده است که برای جلوگیری از ایجاد مشکلات، استفاده از روشهای قاطع و مطمئن ضروری است. ابتدا، شما باید رفتار معمول سیستم را درک کنید. داشتن یک درک کامل از عملکرد سیستم در شرایط عادی و پایدار به شما کمک میکند تا مشکلات را بهتر تشخیص دهید.
سپس، باید سناریوهای احتمالی را شبیهسازی کنید؛ بر روی تزریق شکستها و مشکلات احتمالی تمرکز کنید. با ایجاد آشوب در نقاط ضعف سیستم و بررسی عملکرد آن، میتوانید مشکلات را شناسایی کنید و اقدامات لازم را برای رفع آنها انجام دهید.
مهندسی آشوب، اگر به درستی انجام نشود، ممکن است عواقب مخربی داشته باشد. بنابراین، برای جلوگیری از این اتفاق، آزمایشات خود را به دقت و با کنترلهای لازم طراحی کنید. باید توانایی هماهنگی با تیمهای مختلف از جمله تیمهای فناوری اطلاعات، توسعهدهندگان و بخشهای دیگر سازمان را داشته باشید. با این هماهنگی، میتوانید مشکلات سیستم را با حداقل آسیب و زحمت شناسایی کرده و راهحلهای مناسب را پیادهسازی کنید.
نتیجه گیری
در دنیای امروزی، با گسترش سیستمهای توزیعشده و ریزسرویسها، پیچیدگی سیستمهای وب به شدت افزایش یافته است. این تغییرات باعث شده است که پیشبینی و پیشگیری از خطاها در سیستمها دشوارتر از گذشته باشد.
به همین دلیل، نیاز به روشهای نوینی برای مدیریت و ارتقاء سیستمها پدید آمده است. مهندسی آشوب یکی از این روشهای نوین است. در این روش، با ایجاد خطاهای کنترلشده، نقاط ضعف و مشکلات سیستم شناسایی و پیش از وقوع، مسائل احتمالی را حل میکنیم. این اقدامات به ما این امکان را میدهد که با اطمینان بیشتری به سیستمهایمان نگاه کنیم و از عملکرد بهتری برخوردار باشیم.