Налаштування Post-Mortem процесу для аналізу інцидентів

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування Post-Mortem процесу для аналізу інцидентів
Середня
~2-3 робочих дні
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування Post-Mortem процесу для аналізу інцидентів

Post-mortem — це структурований аналіз інциденту після його усунення. Мета — зрозуміти, чому це сталось, та запобігти повторенню. Без post-mortem одинакові інциденти повторюються знову і знову, тому що ніхто не займався усуненням корінних причин.

Принципи blameless post-mortem

Blameless — не про пошук винних. Якщо інженер допустив помилку, причина — в системі, яка дозволила цю помилку совершити без захисних механізмів. Правильне питання: «Чому система дозволила це?», а не «Хто натиснув не ту кнопку?».

Культура blame призводить до того, що люди приховують інциденти та не признають помилок. Це гірше, ніж сам інцидент.

Коли проводити post-mortem

  • SEV1 інциденти — завжди, протягом 48 годин
  • SEV2 інциденти — завжди, протягом 72 годин
  • SEV3 — за рішенням команди, якщо інцидент виявив системну проблему
  • Повторюючиеся SEV4 — варто провести, якщо один і той же симптом в третій раз

Структура post-mortem документа

# Post-Mortem: [Коротке описання інциденту]

**Дата:** 2025-11-15
**Severity:** SEV1
**Тривалість:** 47 хвилин (14:23 - 15:10 UTC)
**Impact:** ~12,000 користувачів не могли завершити оплату

## Хронологія

| Час | Подія |
|---|---|
| 14:23 | PagerDuty алерт: error rate > 5% на payment service |
| 14:28 | Інженер прийняв алерт, почав розслідування |
| 14:35 | Знайдено: БД не приймає нові підключення |
| 14:42 | Визначена причина: connection pool вичерпаний |
| 14:55 | Застосовано тимчасове рішення: перезапуск connection pool manager |
| 15:10 | Сервіс відновлений, помилки зникли |

## Корінна причина

Connection pool (pgBouncer) був налаштований на max_client_conn=100.
Після деплою нової версії програми кількість воркерів збільшилось з 4 до 8,
кожен відкриває до 15 з'єднань. При пиковому навантаженню: 8 * 15 = 120 > 100.

## Що пішло не так

- pgBouncer max_client_conn не перевирявся при зміні числа воркерів
- Немає алерту на приближення до ліміту connection pool (було б видно заздалегідь)
- У deployment checklist немає пункту про перевірку DB connection settings

## Що сработало добре

- Алерт обнаружив проблему через 2 хвилини після початку
- Runbook для DB connection issues допоміг швидко локалізувати причину
- Команда відреагувала в межах SLA

## Action Items

| Задача | Відповідальний | Термін |
|---|---|---|
| Збільшити max_client_conn до 300, пересчитати під поточну архітектуру | @db-team | 2 дня |
| Додати метрику pgbouncer_clients_active та алерт при > 80% | @ops-team | 3 дня |
| Оновити deployment checklist: розділ DB connections | @team-lead | 1 тиждень |
| Документувати формулу розрахунку connection pool | @db-team | 1 тиждень |

Проведення post-mortem зустрічі

Учасники: всі, хто приймав участь у відповіді на інцидент + технічний лід + при необхідності product owner.

Тривалість: 60-90 хвилин. Якщо потрібно більше — проблема в підготовці документа.

Структура зустрічі:

  1. Огляд хронологіі (10 хв) — всі повинні мати одинакове розуміння фактів
  2. Аналіз корінних причин (20-30 хв) — техніка 5 Why
  3. Що можна було зробити краще (15 хв)
  4. Що сработало добре (5 хв) — важливо для морального духу
  5. Формування action items (15 хв) — з відповідальними та термінами

Техніка 5 Why для пошуку корінної причини

Чому сервіс упав?
→ Connection pool вичерпаний

Чому connection pool вичерпаний?
→ Число з'єднань перевищило max_client_conn

Чому число з'єднань перевищило ліміт?
→ Число воркерів збільшилось при деплої

Чому збільшення воркерів не було враховано в конфігу pgBouncer?
→ Немає процесу перевірки DB-конфига при зміні масштабу

Чому немає такого процесу?
→ Deployment checklist не охоплює залежності конфігів

Корінна причина: відсутність процесу перевірки конфігураційних залежностей при деплої. Action item спрямований саме сюда.

Зберігання та аналітика post-mortem

Документи зберігаються в Confluence/Notion з тегами: severity, service, cause-category. Категорії причин:

  • Configuration (неправильний конфіг)
  • Deployment (проблема при деплої)
  • Dependency failure (сторонній сервіс)
  • Capacity (нехватка ресурсів)
  • Human error (ошибочное дію)

Щоквартальний огляд: які категорії переважають → куди спрямувати інвестиції в надійність.

Action Items: як уникнути кладовища задач

Post-mortem марний, якщо action items ніхто не виконує. Обов'язкові умови:

  • Конкретний відповідальний (не «команда», а ім'я)
  • Чіткий термін
  • Тикет у Jira/Linear створюється відразу на зустрічі
  • Огляд виконання на наступній post-mortem зустрічі

Терміни впровадження процесу

  • Шаблон документа + сховище — 1 день
  • Навчання команди + перший тестовий post-mortem — 1-2 дня
  • Інтеграція з incident tracker — 1 день