ویرگول
ورودثبت نام
Mohsen Farokhi - محسن فرخی
Mohsen Farokhi - محسن فرخیSenior .NET Developer
Mohsen Farokhi - محسن فرخی
Mohsen Farokhi - محسن فرخی
خواندن ۲ دقیقه·۲ روز پیش

رفتار سیستم در شرایط فشار، خطا و محدودیت

سیستم‌های نرم‌افزاری در دنیای واقعی همیشه در شرایط عادی و ایده‌آل کار نمی‌کنند.
قطع سرویس‌ها، فشار زیاد، خطاهای پیش‌بینی‌نشده و از کار افتادن بخش‌هایی از سیستم، اتفاقاتی طبیعی هستند و باید از ابتدا در طراحی دیده شوند.

1.      رفتار سیستم در شرایط غیرعادی

وقتی سیستم با مشکل مواجه می‌شود، دو حالت کلی وجود دارد:

  • یا سیستم به‌طور کامل از کار می‌افتد

  • یا سیستم با قابلیت و کیفیت کمتر، اما همچنان قابل استفاده باقی می‌ماند

تمرکز روی حالت دوم است؛ حالتی که سیستم «سقوط نمی‌کند»، بلکه رفتارش تغییر می‌کند.

2.      کاهش سطح سرویس به‌صورت آگاهانه

کاهش کیفیت یا حذف برخی قابلیت‌ها نباید اتفاقی باشد.
از قبل باید مشخص شده باشد که کدام قابلیت‌ها در شرایط بحرانی حذف می‌شوند. این یعنی رفتار سیستم در شرایط فشار، طراحی‌شده و از پیش فکر شده است.

3.       تفاوت از کار افتادن تصادفی و رفتار طراحی‌شده

  • حالتی که بخشی از سیستم بدون برنامه از کار می‌افتد

  • حالتی که سیستم طبق تصمیم قبلی، بخشی از توان خود را کنار می‌گذارد تا کل سیستم فعال بماند

حالت دوم نتیجهٔ تصمیم آگاهانه در طراحی است، نه یک خرابی ناخواسته.

4.       ارتباط با در دسترس بودن سیستم

«در دسترس بودن» همیشه به معنای کار کردن کامل همهٔ بخش‌ها نیست.
در بسیاری از سناریوها، کار کردن ناقص سیستم بهتر از کار نکردن کامل آن است. پس در دسترس بودن می‌تواند در سطوح مختلف معنا داشته باشد.

5.      تصمیم‌گیری و بده‌بستان

این نوع طراحی همیشه با بده‌بستان همراه است. یعنی برای حفظ کلیت سیستم، باید بخشی از کیفیت یا بخشی از امکانات فدا شود. این تصمیم بدون شناخت business قابل‌گرفتن نیست.

6.       نقش business در این تصمیم‌ها

تصمیم‌ها نباید فقط فنی باشندbusiness . باید مشخص کند:

  • چه چیزی حیاتی است

  • چه چیزی قابل حذف یا کاهش است

پس این نوع طراحی، نتیجهٔ همکاری فنی و بیزنسی است.

7.      فرض‌ها و شرایط بحرانی

بسیاری از طراحی‌ها بر اساس فرض‌هایی انجام می‌شوند که ممکن است روزی نقض شوند.
به همین دلیل باید:

  • شرایط بحرانی شناسایی شوند

  • حالت‌های خاص در نظر گرفته شوند

  • و رفتار سیستم در این شرایط از قبل مشخص باشد

8.      طراحی به‌عنوان یک فرآیند مداوم

این تصمیم‌ها یک‌بار برای همیشه گرفته نمی‌شوند.
بلکه:

  • طراحی می‌شوند

  • آزمایش می‌شوند

  • بازبینی می‌شوند

  • و در طول زمان اصلاح می‌شوند

 

جمع‌بندی

  • شرایط غیرعادی بخشی از واقعیت سیستم هستند

  • طراحی خوب، این شرایط را انکار نمی‌کند

  • بلکه رفتار سیستم را برای این موقعیت‌ها از قبل مشخص می‌کند

software designsoftware architecture
۰
۰
Mohsen Farokhi - محسن فرخی
Mohsen Farokhi - محسن فرخی
Senior .NET Developer
شاید از این پست‌ها خوشتان بیاید