«پرود را انداختن» — عبارتی عامیانه به معنای اعمال تغییراتی که باعث خرابی در سرور پروداکشن میشود و برنامه را برای کاربران غیرقابل دسترس میکند. طبق گزارش AWS DevOps 2024، حدود ۶۵٪ تیمها حداقل یک بار با حادثهای در پروداکشن مواجه شدهاند که توسط عامل انسانی ایجاد شده است. از کار افتادن پروداکشن مستقیماً بر معیارهای کسبوکار تأثیر میگذارد و نیاز به واکنش فوری تیم دارد.
خلاصه
پرود را انداختن یک نام غیررسمی برای وضعیتی است که برنامه در محیط پروداکشن از کار میافتد. برخلاف محیط تست یا staging، پروداکشن به کاربران واقعی خدمات میدهد، بنابراین هر خرابی برای کسبوکار اهمیت حیاتی دارد.
عبارت «پرود را انداختن» میتواند درجات مختلفی از شدت را نشان دهد: از کاهش جزئی عملکرد تا عدم دسترسی کامل به سرویس. در اصطلاحات ITIL این به عنوان حادثه (incident) طبقهبندی میشود — قطعی برنامهریزی نشده یا کاهش کیفیت سرویس. هرچه حیاتیتر بودن سرویس بیشتر باشد، تیم باید سریعتر واکنش نشان دهد.
رویکردهای مدرن DevOps به سمت کاهش پیامدهای خرابی پروداکشن جهتگیری شدهاند. ابزارهایی مانند Datadog، New Relic و Sentry امکان نظارت بر وضعیت پروداکشن را در زمان واقعی و اطلاع خودکار تیم از ناهنجاریها فراهم میکنند.
# بازگردانی سریع به نسخه قبلی
kubectl rollout undo deployment/api-server
# بررسی وضعیت دیپلوی
kubectl rollout status deployment/api-server
# مشاهده آخرین لاگها برای تحلیل خطا
kubectl logs deployment/api-server --tail=100 --since=10m
این مثال دستورات معمول برای بازگردانی دیپلوی در Kubernetes را نشان میدهد. بازگردانی سریع اولین گام هنگام کشف مشکل در پروداکشن است و امکان بازگرداندن عملکرد سرویس را در عرض چند دقیقه فراهم میکند.
تحلیل بیش از ۵۰۰ حادثه در پروداکشن که توسط Stripe در سال ۲۰۲۳ انجام شد، دستهبندیهای کلیدی علل را مشخص کرد. توزیع حوادث نشاندهنده نقاط ضعف معمول در فرآیندهای توسعه و دیپلوی است.
| علت | توضیحات | سهم |
|---|---|---|
| خطاهای دیپلوی | نسخه نادرست، متغیرهای محیطی اشتباه | ۳۲٪ |
| مشکلات دیتابیس | مهاجرت خراب، قفل شدن جداول | ۲۵٪ |
| بار ترافیک | افزایش ناگهانی ترافیک، نشت حافظه | ۱۸٪ |
| تنظیمات | پرچمهای اشتباه، رمزهای حذف شده | ۱۵٪ |
| سرویسهای خارجی | خرابی API، مشکلات DNS یا CDN | ۱۰٪ |
خطاهای دیپلوی تقریباً یک سوم کل حوادث را تشکیل میدهند. اغلب این اتفاق زمانی میافتد که تغییرات به صورت دستی و بدون بررسی مناسب دیپلوی میشوند. خودکارسازی دیپلوی از طریق خطوط لوله CI/CD با بررسی چندمرحلهای خطر از کار افتادن پروداکشن را به میزان قابل توجهی کاهش میدهد.
مشکلات مربوط به مهاجرت دیتابیس نیاز به توجه ویژه دارند. یک مهاجرت نادرست نه تنها میتواند پرود را از کار بیندازد، بلکه منجر به از دست دادن غیرقابل بازگشت دادهها شود. به همین دلیل مهاجرتها در یک مرحله جداگانه از خط لوله با پشتیبانگیری اجباری قبل از اجرا انجام میشوند.
خرابی پروداکشن نه تنها یک مشکل فنی، بلکه یک حادثه کسبوکار است. هر دقیقه از کار افتادن برای شرکت هزینه مشخصی دارد که به ماهیت سرویس بستگی دارد. برای پلتفرمهای تجارت الکترونیک، هزینه یک ساعت قطعی میتواند به صدها هزار دلار برسد.
تحقیق Gartner 2024 نشان میدهد که میانگین هزینه یک دقیقه قطعی برای برنامههای enterprise ۵۶۰۰ دلار است. میانگین زمان بازیابی پس از حادثه در پروداکشن حدود ۹۰ دقیقه است. یک قطعی ۹۰ دقیقهای بیش از نیم میلیون دلار برای کسبوکار هزینه دارد.
علاوه بر ضررهای مالی، خرابی پروداکشن به اعتبار شرکت آسیب میزند. کاربرانی که با عدم دسترسی به سرویس مواجه شدهاند ممکن است به رقبا مراجعه کنند. حوادث برای برنامههای بانکی و پزشکی که قابلیت اطمینان یک نیاز کلیدی است، به ویژه بحرانی هستند.
برای تیم نیز پیامدها قابل توجه است. پس از حادثه در پروداکشن، postmortem — تحلیل علل ریشهای و تدوین اقدامات پیشگیرانه انجام میشود. این کار بار اضافی بر توسعهدهندگان، به ویژه مهندسان شیفت (on-call) تحمیل میکند.
جلوگیری از خرابی پروداکشن بر چندین سطح حفاظتی استوار است. هر سطح دسته خاصی از خطاها را رهگیری کرده و از رسیدن آنها به کاربران نهایی جلوگیری میکند.
Feature flags یکی از مؤثرترین ابزارها برای جلوگیری از خرابی است. امکان دیپلوی کد به پروداکشن در حالت غیرفعال، فعالسازی برای گروه محدودی از کاربران و غیرفعالسازی سریع در صورت کشف مشکل را فراهم میکند. پلتفرمهایی مانند LaunchDarkly و Split.io راهحلهای آماده برای مدیریت پرچمها ارائه میدهند.
نظارت و اعلان (alerting) — آخرین سطح حفاظتی. ابزارهایی مانند Prometheus + Grafana یا Datadog معیارهایی را از پروداکشن جمعآوری میکنند: تأخیر، نرخ خطا، توان عملیاتی. هنگام تجاوز از آستانهها، یک اعلان فعال میشود و مهندس شیفت اعلان دریافت میکند. هرچه تیم زودتر از مشکل مطلع شود، خسارت ناشی از حادثه کمتر است.
هنگامی که خرابی پروداکشن رخ داده است، اولویت اصلی بازگرداندن عملکرد سرویس است. تحلیل علل پس از تثبیت وضعیت انجام میشود. فرآیند واکنش معمول شامل مراحل زیر است.
گام اول — تعیین مقیاس حادثه. آیا سرویس کاملاً غیرقابل دسترس است یا فقط بخشی از عملکرد کاهش یافته؟ چه تعداد کاربر تحت تأثیر قرار گرفتهاند؟ پاسخ به این سؤالات سطح بحرانی و اقدامات لازم را تعیین میکند.
گام دوم — بازگردانی تغییرات. اگر حادثه مربوط به دیپلوی اخیر است، سریعترین راه بازیابی بازگشت به نسخه پایدار قبلی است. برای این کار از دستور git revert و دیپلوی مجدد artefact قبلی استفاده میشود. بازگردانی نباید بیش از ۱۰-۱۵ دقیقه طول بکشد.
گام سوم — ارتباط. اطلاعرسانی به تیم، مدیریت و در صورت لزوم، کاربران درباره مشکل و زمان بازیابی. برای این کار از سرویسهای status page مانند Atlassian Statuspage و کانالهای Slack یا Telegram استفاده میشود.
گام چهارم — postmortem. پس از بازیابی، تحلیل علل ریشهای (RCA) انجام میشود و اقدامات پیشگیرانه برای جلوگیری از تکرار حادثه تدوین میشود. نتایج postmortem مستند شده و بخشی از پایگاه دانش تیم میشود.
پرسشهای متداول
این یک عبارت عامیانه به معنای اعمال تغییراتی است که باعث خرابی در سرور پروداکشن شده است. در نتیجه سرویس برای کاربران غیرقابل دسترس میشود یا به درستی کار نمیکند. این اصطلاح در فرهنگ DevOps برای اشاره به یک حادثه بحرانی استفاده میشود.
شایعترین علت خطاهای دیپلوی است: متغیرهای محیطی نادرست، نسخه اشتباه artefact یا وابستگیهای缺失. در رتبه دوم مشکلات مربوط به مهاجرت دیتابیس قرار دارد. سومین از نظر فراوانی — خرابیهای بار، زمانی که برنامه نمیتواند ترافیک اوج را تحمل کند.
برای سرویسهای حیاتی، زمان واکنش نباید بیش از ۵ دقیقه و زمان بازیابی نباید بیش از ۶۰ دقیقه (SLA) باشد. برای سیستمهای کمتر حیاتی تا ۴ ساعت مجاز است. معیارهای خاص در Service Level Agreement (SLA) و Service Level Objectives (SLO) تعیین میشوند.
Crash — عدم دسترسی کامل به سرویس، کاربران خطاهای ۵۰۰ دریافت میکنند یا اتصال برقرار نمیشود. رفتار اشتباه — سرویس کار میکند اما دادهها نادرست هستند یا عملکرد مختل شده است. Crash نیاز به بازگردانی فوری دارد، رفتار اشتباه ممکن است با یک hotfix اصلاح شود.
Postmortem شامل: گاهشمار رویدادها، علت ریشهای (RCA)، مقیاس حادثه، اقدامات بازیابی و طرح پیشگیری است. مهم است که حقایق را بدون سرزنش توصیف کرد — در چارچوب فرهنگ بدون سرزنش. نتایج برای کل تیم منتشر میشود.
نتیجهگیری
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.