آموزش زبان انگلیسی (دورهٔ ۹۰ درسی) · درس ۸۲ از ۹۰

مدیریتِ حادثه؛ وقتی prod واقعاً down است

⚡ پاسخ کوتاه

در حادثه، زبان باید «فشرده و بی‌هیجان» باشد: اعلام (P1: checkout down, ~30% of users affected), قالبِ هر آپدیت (impact / cause-so-far / next action / ETA), و تفکیکِ نقش‌ها. جملهٔ طلایی: "Facts first, theories second." و در postmortem: "The system allowed a bad deploy — the fix is systemic, not personal."

درس ۸۲ از ۹۰ — مدیریتِ حادثه؛ وقتی prod واقعاً down است

حادثهٔ production، شبِ امتحانِ همهٔ مهارت‌های این دوره است: فنی، سازمانی و زبانی — هم‌زمان. تیم‌های حرفه‌ای برای همین، «زبانِ حادثه» را از قبل تمرین می‌کنند: جملهایِ کوتاهِ قالب‌دار که در فشارِ آدرنالین هم بی‌ابهام می‌مانند. این درس همان زبان است: از لحظهٔ اولِ پیامِ alert تا جلسهٔ postmortem.

قاعدهٔ فرهنگیِ بنیادین: در حادثه، «آرامشِ صوتی» گمراه‌کننده نیست؛ فرماندهی است. صدای پُرتنش در کانالِ حادثه، همه را کندتر می‌کند؛ جمله‌های کوتاهِ بی‌هیجان، همه را تیزتر.

لحظهٔ صفر؛ اعلام و صف‌بندی

P1 — checkout is returning 5xx for ~30% of users since 14:02 UTC. All hands who know the payments flow, please join #inc-331. I am incident commander until relieved.P1 — تسویه از ۱۴:۰۲ UTC برای ~۳۰٪ کاربرها 5xx می‌دهد. هر کی جریانِ پرداخت رو می‌شناسه بیاد تو #inc-331. من فرماندهِ حادثه‌ام تا جایگزین شم.

سه جزءِ اعلام: شدت و مختصات (P1/P2 + چه سیستمی + از چه ساعتی + چند درصدِ کاربر), کانالِ جنگ (#inc-XXX — کانالِ تازه، نه کانالِ تیم), نقش‌ها — incident commander (فرمانده: تصمیم و پروسه), comms lead (ارتباط: آپدیت‌های بیرونی), ops (دستِ اجرا). اگر فرمانده ندارید، خودت باش و بگو — جمله‌اش همان امضاست. سوالِ اولِ جذب‌شدن‌ها: "Who's on it and what do you need from me?" (کی روشه و از من چی لازمه؟)

ریتمِ حادثه؛ بریفِ هر ده‌دقیقه

قالبِ آپدیتِ دوره‌ای (فرمانده می‌نویسد، در کانال + برای ذی‌نفع‌ها): "14:20 STATUS: 5xx at ~30%, EU-heavy. CAUSE (working theory): last deploy's DB pool change; not confirmed. ACTION: rolling back deploy now, ETA 10 min. NEXT UPDATE: 14:30." — چهار خط: وضعیت/تئوری/اقدام/زمانِ آپدیتِ بعدی. قاعدهٔ فکری: Facts first, theories second — نظریه را حتماً به‌عنوان «working theory» برچسب بزن تا تصمیم‌ها با حدس‌ها قاطی نشوند. و جمله‌های کانالِ جنگ: "Rollback is running, 3 of 12 pods done." · "I need someone on the DB metrics — can you take it, Sara?" · "Heads-up: I'm about to failover — confirm you're ready." — هر پیام، یک فعلِ در حالِ انجام یا یک درخواستِ نام‌دار.

14:30 STATUS: rollback complete, 5xx back to baseline (<0.1%). Monitoring for 30 min before all-clear. NEXT: postmortem tomorrow 10am.۱۴:۳۰ وضعیت: رول‌بک کامل، خطا به حالتِ عادی برگشت (زیرِ ۰/۱٪). ۳۰ دقیقه پایش قبل از اعلامِ امنیت. بعدی: پست‌مورتم فردا ۱۰ صبح.

Postmortem؛ دادگاهِ سیستم، نه آدم

سندِ postmortem (درس ۵۹ را کامل می‌کند): What happened / Impact / Timeline / Root cause / What went well / Action items. قواعدِ زبانیِ بی‌اتهام: عاملیت را به سیستم بده — "The deploy pipeline allowed an incompatible migration to ship" نهِ «Jack shipped…»؛ نکتهٔ جالبش این است که هم چابک‌تر است هم دقیق‌تر. در جلسه: "The goal is blameless analysis — we assume everyone acted reasonably with the information they had." (هدف، تحلیلِ بی‌اتهامه — فرض می‌کنیم همه با اطلاعِ خودشون معقول رفتار کردن.) و بندِ جمع‌بندیِ معجزه‌گر: "If a perfectly reasonable person could have made this same mistake, the fix belongs in the system." — Action items با مالک و تاریخ، وگرنه پست‌مورتم، ادبیات است نه مهندسی.

گرامرِ عمیق‌تر: زبانِ فشردهٔ حادثه

حادثه، سه قالبِ چهارخطی دارد: اعلام: «P1 — [system] is down/degraded for [X%] of users since [time]. Channel: #inc-NNN.» بریف: «STATUS / CAUSE (working theory) / ACTION / NEXT UPDATE at [time].» پایان: «All-clear: metrics back to baseline. Postmortem [day] at [time].» — و زمانِ فعل‌ها: ادامهٔ حادثه با استمرار (users are seeing 5xx), اقدام با استمرار (we're rolling back), نتیجه با ساده (errors dropped). و پرچم‌های فکری: working theory (هنوز حدس), confirmed (تأیید شد), ruled out (حذف شد) — سه برچسبِ جلوگیری از قاطی‌شدنِ حدس و واقعیت.

14:20 STATUS: 5xx at ~30% of EU users, started 14:02. CAUSE (working theory): last deploy's DB pool change. ACTION: rollback running, 3/12 pods done. NEXT UPDATE: 14:30.۱۴:۲۰ وضعیت: خطای 5xx برای ~۳۰٪ کاربرهای اروپا، از ۱۴:۰۲. علت (فرضیهٔ در حالِ کار): تغییرِ پولِ دیتابیس در آخرین دپلوی. اقدام: رول‌بک در جریانه، ۳ از ۱۲ پاد تمام. آپدیتِ بعدی: ۱۴:۳۰.

گفتگو: در کانالِ جنگ — ده دقیقهٔ خاموش‌گیر

IC (you): Facts first: 5xx at 30%, EU-heavy, started 14:02. Dara on metrics, Sara on customer comms, I run the bridge. Theories to the thread, actions to me.فرمانده (تو): اول واقعیت‌ها: ۵xx در ۳۰٪، اروپا-محور، از ۱۴:۰۲. دارا روی متریک‌ها، سارا روی ارتباطِ مشتری، من پل رو می‌رانم. فرضیه‌ها تو thread، اقدام‌ها پیشِ من.
Dara: Working theory — the pool change didn't account for EU failover. — You: Noted as theory. Rollback's running; if errors drop when it lands, we upgrade it to confirmed.دارا: فرضیه — تغییرِ پول، فِیل‌اوورِ اروپا رو حساب نکرده بود. — تو: به‌عنوانِ فرضیه ثبت شد. رول‌بک روونه؛ اگه با فرودش خطاها افت کرد، به «تأییدشده» ارتقاش می‌دیم.
You: 14:30 — rollback complete, errors at baseline, p99 normal. Monitoring 30 min, then all-clear. Postmortem Friday 10:00 — blameless, bring timelines.تو: ۱۴:۳۰ — رول‌بک کامل، خطاها عادی، p99 نرمال. ۳۰ دقیقه پایش، بعد اعلامِ امنیت. پست‌مورتم جمعه ۱۰ — بی‌اتهام، تایم‌لاین‌هاتون رو بیارید.

اشتباه‌های رایجِ فارسی‌زبان‌ها در همین درس

این بخش را با یک قرارداد بخوان: هر ❌ یعنی «مغزِ فارسی‌زبانت این را می‌سازد و طبیعی است»، و هر ✅ یعنی «این همان چیزی است که گیرندهٔ انگلیسی‌زبان می‌شنود». خطاها اثرِ مستقیمِ ترجمهٔ ذهنیِ فارسی به انگلیسی‌اند؛ با هر جفت بلند تکرار کن تا شکلِ درست در گوشت نشست کند.

❌ Dara's deploy broke the production — I will tell him to be careful.❌ روایتِ فارسیِ حادثه با فاعلِ آدمی شروع می‌شود («فلانی خرابش کرد»)، اما انگلیسیِ حادثه فرایند را نشانه می‌گیرد، نه شخص را. جملهٔ با نامِ همکار، تیم را ساکت و دفاعی می‌کند و قاعدهٔ بی‌اتهامی را همان‌جا می‌شکند.
✅ Working theory: a DB pool change in the last deploy likely triggered this — rollback is running.✅ شکل درست را دو بار بلند بگو؛ حالا یک بار در یک جملهٔ خودت.
❌ The problem solved and everything returned normal.❌ «مسئله حل شد» با فعلِ کاملاً فعال فرستاده می‌شود: The problem solved یعنی «مسئله حل کرد»! حل‌شدن صرفِ مجهول می‌خواهد: is resolved. و «به حالتِ عادی برگشت» هم return نمی‌گیرد — زبانِ حادثه برایِ برگشتنِ متریک‌ها back to baseline می‌گوید.
✅ The issue is resolved — error rates are back to baseline.✅ شکل درست را دو بار بلند بگو؛ حالا یک بار در یک جملهٔ خودت.
❌ We are working on it and will inform you when it finished.❌ «تا حل شود خبر می‌کنیم» ترجمهٔ مستقیمِ فارسی است و وعدهٔ بی‌زمان می‌سازد؛ زبانِ حادثه همان‌جا زمانِ آپدیتِ بعدی را قول می‌دهد. سکوتِ بی‌برنامه در کانال وحشت می‌سازد؛ وعدهٔ آپدیتِ بعدی، همان سکوت را بی‌خطر می‌کند.
✅ Rollback is at 3/12 pods — next update at 14:30, sooner if anything changes.✅ شکل درست را دو بار بلند بگو؛ حالا یک بار در یک جملهٔ خودت.

تمرین‌های این درس — چهار قدم، بی‌عجله

حادثه، تمرینِ نوشتنِ زیرِ فشار است؛ هر چهار را با تایمرِ پنج‌دقیقه‌ای اول خودت بلند بگو، بعد پاسخ را باز کن.

  1. اولین خطِ اعلامِ حادثه را بنویس: قطعیِ checkout از ساعت ۱۴:۰۲ برایِ حدود ۳۰٪ کاربرها؛ کانالِ جنگ: #inc-042. (قالبِ درس: سطح + سیستم + دامنه + زمان + کانال)
  2. جملهٔ اتهام‌دار را بازنویسی کن: «Sara's config change broke the cache.» — فرایند را نشانه بگیر، نه آدم را.
  3. دارا در پلِ جنگ می‌گوید: «I think it's the DNS.» — حرفش را با برچسبِ درست در بریفِ وضعیت ثبت کن.
  4. بریفِ پایانِ حادثه را بنویس: خطاها ۳۰ دقیقه در سطحِ پایه مانده، پایش برداشته می‌شود، پست‌مورتم جمعه ساعت ۱۰.

پاسخ تمرین‌ها — اول خودت جواب بده، بعد باز کن

پاسخ تمرین ۱
P1 — checkout is degraded for ~30% of users since 14:02. Channel: #inc-042. چهار قطعهٔ اعلام همین‌قدر فشرده است: سطح، سیستم، دامنه و زمان، و در آخر آدرسِ کانال. خطِ اولِ تمیز، تمامِ وحشتِ کانال را می‌خواباند.
پاسخ تمرین ۲
A cache config change in the last deploy is the likely trigger — we're rolling it back now. اسمِ فرایند جایِ اسمِ آدم می‌نشیند؛ در پست‌مورتمِ بی‌اتهام سؤال «چه چیزی اشتباه شد» است، نه «چه کسی».
پاسخ تمرین ۳
CAUSE (working theory): DNS propagation — not yet confirmed. برچسبِ working theory حدس را از واقعیت جدا می‌کند؛ تا متریک تأیید نکند هیچ چیزی confirmed نمی‌شود — همین مرز، قلبِ بی‌اتهامی است.
پاسخ تمرین ۴
All-clear: error rates have been at baseline for 30 minutes. Monitoring is standing down. Postmortem Friday at 10:00 — blameless; bring your timelines. جملهٔ پایانی دو کار می‌کند: قفلِ امنیت + قرارِ یادگیری؛ بدونِ این دو، حادثه «بسته» نمی‌شود، فقط «تمام» می‌شود.

چالشِ امروز

🎯 برایِ آخرین قطعی یا باگِ جدیِ تیم‌تان یک بریفِ چهارخطیِ STATUS / CAUSE / ACTION / NEXT UPDATE بنویس — حتی اگر هفته‌ها پیش بوده؛ عضلهٔ حادثه با بازنویسی ساخته می‌شود.

نکات مکالمهٔ واقعی که کتاب‌ها کم می‌گویند

  • فرضیه را برچسب بزن — «working theory» و «confirmed» را قاطی نکن — اعلامِ حدس به‌عنوانِ واقعیت در حادثه، خطای هفت‌ساله می‌سازد.
  • هر بریف با زمانِ آپدیتِ بعدی — «NEXT UPDATE 14:30» — وعدهٔ آپدیت، وحشتِ سکوت را می‌کُشد؛ حتی خبرِ «تغییری نیست» را بده.
  • نقش‌ها را با اسم اعلام کن — «Dara on metrics, Sara on comms» — حادثهٔ بی‌نقش، حادثهٔ بی‌مسئولیت است؛ اولین جملهٔ فرمانده همین است.
🔑 جمع‌بندی این درس

زبانِ حادثه: اعلامِ چهارجزئی (شدت/سیستم/زمان/درصد + کانال + فرمانده), آپدیتِ ده‌دقیقه‌ایِ چهارخطی (STATUS/working theory/ACTION/NEXT), جمله‌های «فعل یا درخواستِ نام‌دار», و postmortemِ blameless که عاملیتش با سیستم است. آرامشِ صوتی، فرماندهی است — و قاعدهٔ طلاییِ فکر: facts first, theories second.

پرسش‌های رایج

من on-call تازه‌شده‌ام و از alert می‌ترسم!
ترسِ اول، امضای مسئولیتِ گرفته‌شده است — اما سه ضامنِ عملی: ۱) **runbook از قبل بخوان:** برای هر alert یک داک هست؛ در آرامشِ روز یک‌بار بخوانش تا شبِ سخت فقط «اجرا» باشد. 2) **قانونِ دو-نفره:** اولین حادثه‌هایت را با همکارتِ باتجربه شیفت بگیر: "Can I shadow your next page?" (میشه سایهٔ پیجِ بعدیت باشم؟) ۳) جملهٔ نجاتِ بریفِ اولیه: **"Paged on high CPU. Investigating — will post a status in 10 minutes."** (پیجِ CPU بالا. دارم بررسی می‌کنم — تا ۱۰ دقیقه وضعیت می‌نویسم.) همین یک جمله، آدرنالینِ تو و تیم را نصف می‌کند چون «کسی داره کار می‌کنه» را اعلام می‌کند.
مشتری/مدیرِ عجولانه وسطِ حادثه پیام می‌دهد!
نقشِ comms lead همین را حذف می‌کند؛ اگر ندارید، خودت این سه‌جمله‌ای را هر ۳۰ دقیقه بیرون بده: **"We know, we're on it. Current impact: X. Next update in 30 minutes."** (می‌دونیم، روشیم. تأثیرِ فعلی: X. آپدیتِ بعدی ۳۰ دقیقهٔ دیگه.) قولِ «آپدیتِ بعدی» را همیشه بده و همیشه نگه‌دار — حتی اگر خبر، «هنوز چیزی عوض نشده» باشد؛ سکوت، وحشت می‌سازد و آپدیتِ منظم، اعتماد. و به هیچ‌وقت در میانهٔ حادثه، تخمینِ «دقیق» نده: **"Likely minutes, not hours — but I'll confirm in the next update."**

انگلیسی را همین امروز در گوشی‌ات تمرین کن

واژه‌های این درس را هر جا که دیدی با منوی «ذخیره در آپ‌ورد» به فلش‌کارت‌هایت اضافه کن؛ الگوریتم مرور فاصله‌دار سرِ موعد یادآوری‌شان می‌کند، تلفظ‌شان را می‌شنوی و در مکالمهٔ هوش مصنوعی همان‌جا که لازم است استفاده‌شان می‌کنی.