Як писати чіткий інцидент Post-Mortem
Практичний посібник з написання ефективних пост-мортемів інциденту англійською мовою — структура, мова, бездоганне оформлення і фрази, які чітко комунікують.
Пост-морт (також називається звітом про інцидент або ретроспективою) є одним з найважливіших документів, які виробляє інженерна команда. Хорошо сделано, оно фиксирует, что произошло, почему это произошло, и что поможет предотвратить повторение. Погано зроблене, це приписує провину, закриває справжні причини і нічого не вчить.
Цей посібник охоплює структуру, мову і конкретні фрази, які роблять пост-мортем ясним, чесним і корисним.
Невідомий англійською мовою
Перед тим, як написати слово, зрозумійте це: хороший пост-морт фокусується на системах і процесах, а не на особистісях. Це називається безвинною пост-мёртвой культурою.
По-англійськи це означає:
| Blame language (avoid) | Blameless language (use) |
|---|---|
| “The engineer accidentally deleted the database." | "The production database was deleted during a manual migration step." |
| "DevOps failed to set up monitoring." | "Monitoring was not configured for this service at the time of the incident." |
| "The developer didn’t test this properly." | "The change was merged without integration tests covering this code path.” |
Пассивний голос - твій друг в пост-мортальних розслідуваннях. Вона описує що сталося без вказівки на хто це зробив.
Стандартна пост-мортальна структура
1. Резюме інциденту
Обзор в 2-4 предложениях того, что произошло, когда и насколько это было серьезно:
“11 червня 2026 року служба автентифікації користувача була недоступна приблизно 47 хвилин, що вплинуло на всіх користувачів, які намагалися увійти. Інцидент розпочався о 14:23 UTC і був вирішений о 15:10 UTC. Було вражено близько 12 000 користувачів. ”
Не перебільшуй. Тут немає інтерпретації — лише факти заголовків.
2. Графік
Хронологічний журнал подій. Використовувати простий і неперервний минулий час:
“14: 23 — Автоматичне попередження про підвищений рівень помилок у службі автентифікації.” “14:31 — Дежурний інженер підтвердив попередження і почав розслідування.”
- “14: 45 — Виявлено кореневу причину: неправильно налаштована змінна середовища в останньому розгортанні.” * “15:07 — Виправлення впроваджено в виробництво.”
- “15: 10 — Частота помилок повернута до нормального значення. Інциденту покінчено
3-й. Аналіз причинного зв’язку
Це найважливіший розділ. Поясніть * чому * інцидент стався, а не тільки * що * сталося:
- “Головною причиною було відсутність змінної середовища у виробничих налаштуваннях. Ця змінна була додана до стадіонарного середовища, але не була включена в контрольний список виробничого розгортання.”*
- “Причиною цього стала відсутність інтеграційних тестів, що охоплюють взаємодію між шаром кешу і базою даних. Вада була присутня в коді, але не виявлена лише за допомогою тестів одиниць. ”*
Використовуйте фразу ** « основна причина » ** для позначення головної технічної причини, і ** « фактори, що спричинили » ** для позначення другорядних проблем:
“Фактори, що сприяли цьому: відсутність функціональних прапорців для цього випуску, недостатній моніторинг нової служби, і тиск часу від квартального терміну.”
Оцінка впливу
“Вплив на користувачів: входження було недоступним протягом 47 хвилин, що вплинуло на приблизно 12 000 користувачів в регіоні ЄС. Дані не втрачено. Не було вплине на обробку платежу.”
Будьте точні щодо обсягу: скільки користувачів, які регіони, які функції і які дані (якщо такі є) було вплине.
5-й. Все йшло добре
Бездоганний огляд тіла також показує, що працювало:
“Подразнені ротації відповіли протягом 8 хвилин з моменту початкової попередження. Інциденти були чітко і своєчасно повідомлені - сторінку статусу було оновлено протягом 12 хвилин. Процедура відновлення працювала як очікувалося.”
6. Елементи дій
Для кожного елемента дії потрібні власник і термін виконання:
- “Дія: Додати перевірку змінних виробничого середовища до списку перевірки розгортання. Власник: [Команда розробників платформи]. Дата виходу: 20 червня 2016 року
- “Дія: Створити інтеграційні тести для взаємодії кешу з базою даних. Власник: [команда сервера]. Дата виходу: 30 червня 2016 року
- “Дія: Додати попередження щодо порогу частоти помилок у службі автентифікації. Власник: [команда SRE]. Дата виходу: 18 червня 2017 року
Поширені фрагменти для пост-модернізму
Опис хронології:
“Приблизно…” “Незабаром після…” “В течение нескольких минут…” “Ситуація погіршилася, коли…”
Опис причини:
“Інцидент був викликаний…” “Кореневой причиной было определено…” “Це було ускладнено…” “Внесок у це був…”
** Опис роздільної здатності: **
- “Проблему було вирішено поверненням розгортання.” * “Нормальний сервіс відновлено о… ” “Мониторинг подтвердил выздоровление на… ”
Опис майбутньої профілактики:
“Щоб уникнути повторення, ми будемо…” “Вперед, команда буде…” “Ми виявили наступні прогалини в нашому процесі…”
Тон і довжина
Хорошее вскрытие:
- ** Факти, а не емоції. ** Притримуйтесь того, що сталося і що зміниться.
- Стислий, але повний. Охоплюйте кожен розділ, але не заповнюйте його. 600-1000 слів - типово.
- ** Можливість виконання дії. ** Кожна визначена проблема має мати відповідний елемент дії.
- ** Вчасно. ** Записати його протягом 48-72 годин, поки пам’ ять свіжа.
Уникайте таких фраз при пост-мортемі:
- «На жаль» (занадто неформально)
- «На щастя» (зменшує тяжкість)
- «Людська помилка» (надто нечітка і часто перекидання вини в замаскованому вигляді)
- «Ніколи більше» (надмірне зобов’язання без плану)
Написання чітких описів смерті - це ознака інженерної зрілості. Вони показують, що ваша команда сприймає невдачі як можливість навчитися — і що ви спілкуєтеся про проблеми з такою ж суворістю, якою ви спілкуєтеся про написання коду.
Національні мови: мова рідного народу, мова ненаціональних меншин
Написання чіткого пост-морта є ключовим для вивчення інцидентів, але нюанси професійної англійської мови можуть бути особливо викликом для розробників, чия перша мова не є англійською. Це не просто передавання інформації; це про те, щоб зробити це таким чином, що сприяє співпраці і уникнення непорозумінь. Давайте розглянемо деякі поширені пастки і представимо фрази, спеціально розроблені, щоб допомогти не-рідним носіїв ефективно сформулювати свої думки під час цього критичного процесу.
Однією з найчастіших проблем є тенденція перекладати безпосередньо з рідної мови, що призводить до незграбного фразування або надмірно буквальних інтерпретацій технічних термінів. Наприклад, розробник може інстинктивно сказати «Я * спричинив * відключення» при описі ситуації, коли вони зневаджували несправну службу. Хоча намір ясний, ця фраза негайно вводить потенційно негативну конотацію - що означає звинувачення. Замість цього, розгляньте альтернативи, такі як «Я досліджував кореневу причину» або «Я визначив фактор, що сприяв». Сфокусування на діях і спостереженнях, а не на приписуванні відповідальності, значно поліпшить ясність і сприяє культурі безвинності. Аналогічно, використання фраз на кшталт «визначено потенційну проблему» часто краще, ніж «створено помилку», що означає помилку.
Іншою областю, що потребує ретельної уваги, є використання умовної мови. Розробники, природно, схильні описувати події з точним деталюванням, але надмірна покладання на абсолютні висновки може створити тривогу і оборону. Замість того, щоб сказати « Сервер зламався * через * зміну коду, » більш конструктивно сказати « Ми спостерігали нестабільність в сервері після розгортання версії 2.3.1. » Цей підхід підтверджує спостереження без негайного призначення причинності. Крім того, при обговоренні потенційних рішень, такі фрази, як «ми повинні розглянути» або «може бути вигідно дослідити» є кращими за декларативні висловлювання, такі як «ми * повинні * реалізувати»
Нарешті, зверніть увагу на мову, яку використовують у каналах Slack і описах запитів на витягування. У короткому повідомленні може бути написано: « Виправлено помилку у службі X ». Хоча це технічно правильно, у повідомленні не вистачає контексту. Більш гладка фраза буде: «Розв’язана проблема одночасності в службі X, яка періодично викликала періодичні перерви - що вплинуло приблизно на 10% користувачів. Досліджено за допомогою інструментів відстеження і виявлено умову переслідування у модулі розпізнавання». Цей рівень деталізації показує ретельність і бажання зрозуміти вплив проблеми. Пам’ ятайте, чітке спілкування створює довіру і сприяє ефективному вирішенню проблем, незалежно від рівня вашого володіння рідною мовою. Сфокусуйтесь на тому, щоб показати, що ви розумієте що сталося і чому, а не просто стверджуйте, що це сталося.