Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CodeFest 2019. Алексей Кирпичников (Контур) — А...

CodeFest 2019. Алексей Кирпичников (Контур) — Аварии помогают учиться

За три последних года в Контуре произошло примерно 1000 факапов разной степени эпичности. Среди них, например, 36% были вызваны выкатыванием некачественного релиза в продакшен, а 14% — работами по обслуживанию железа в дата-центре.

Откуда я все это знаю? Из архива отчетов, которые мы называем постмортемами. Постмортемы пишут дежурные инженеры, которые отреагировали на уведомление об аварии и первыми начали разбираться в её причинах.

Зачем нашей команде этот архив? Зачем мы заставляем инженера, который несколько часов без сна чинил сложную систему, ещё и написать несколько страниц текста об этом? Эти знания помогают нам двигать инфраструктурную разработку в правильном направлении. Чем нужно заняться прямо сейчас — улучшать систему сбора метрик или отбирать у разработчиков админские права на серверах? От чего будет больше пользы— нового инструмента для нагрузочного тестирования или внедрения канареечного деплоя?

В докладе я расскажу о том, как написать полезный постмортем: кто должен его писать, что обязательно нужно упомянуть и как внедрять эту сложную DevOps-практику в большой компании, где еще несколько лет назад никто ни о каких постмортемах даже не слышал. Разберём пару примеров настоящих факапов — признайтесь, вы же любите слушать истории о том, как кто-то облажался :)

Avatar for CodeFest

CodeFest

April 06, 2019
Tweet

More Decks by CodeFest

Other Decks in Technology

Transcript

  1. Что такое факап? Ваш сервис используют офисные работники. Он упал

    на два часа ночью с субботы на воскресенье. Никто не заметил.
  2. Что такое факап? Вы смотрите метрики с продакшена в Grafana.

    Grafana упала на 15 минут. В продакшене ничего не сломалось, но графики посмотреть вы не могли.
  3. Что такое факап? Инцидент — это любой незапланированный перерыв в

    обслуживании или деградация сервиса, которая отразилась на доступности сервиса для пользователей. — PagerDuty Incident Response
  4. Что такое факап? Инцидент — это любой незапланированный перерыв в

    обслуживании или деградация сервиса, которая отразилась на доступности сервиса для пользователей. Серьезный инцидент — любой инцидент, который требует координированной реакции от нескольких команд. — PagerDuty Incident Response
  5. Что такое факап? — заметная пользователям деградация сервиса; — любая

    потеря данных; — вмешательство дежурного инженера; — Google SRE Book
  6. Что такое факап? — заметная пользователям деградация сервиса; — любая

    потеря данных; — вмешательство дежурного инженера; — решение проблемы заняло слишком много времени; — Google SRE Book
  7. Что такое факап? — заметная пользователям деградация сервиса; — любая

    потеря данных; — вмешательство дежурного инженера; — решение проблемы заняло слишком много времени; — мониторинг не сработал. — Google SRE Book
  8. Что такое факап? — заметная пользователям (внешним или внутренним) деградация

    сервиса; — в этот раз повезло, а в следующий может не повезти; — Контур
  9. Что такое факап? — заметная пользователям (внешним или внутренним) деградация

    сервиса; — в этот раз повезло, а в следующий может не повезти; — произошедшее касается нескольких команд; — Контур
  10. Что такое факап? — заметная пользователям (внешним или внутренним) деградация

    сервиса; — в этот раз повезло, а в следующий может не повезти; — произошедшее касается нескольких команд; — хотя бы один инженер считает, что нужен постмортем. — Контур
  11. В чем польза факапа? Мы можем найти виноватых инженеров и:

    — попросить их в следующий раз быть повнимательнее;
  12. В чем польза факапа? Мы можем найти виноватых инженеров и:

    — попросить их в следующий раз быть повнимательнее; — отправить на курсы переподготовки;
  13. В чем польза факапа? Мы можем найти виноватых инженеров и:

    — попросить их в следующий раз быть повнимательнее; — отправить на курсы переподготовки; — запретить им трогать важные участки системы;
  14. В чем польза факапа? Мы можем найти виноватых инженеров и:

    — попросить их в следующий раз быть повнимательнее; — отправить на курсы переподготовки; — запретить им трогать важные участки системы; — уволить плохих и нанять нормальных.
  15. В чем польза факапа? Мы можем найти виноватых инженеров и:

    — попросить их в следующий раз быть повнимательнее; — отправить на курсы переподготовки; — запретить им трогать важные участки системы; — уволить плохих и нанять нормальных. — традиционный подход
  16. В чем польза факапа? Мы должны спросить у инженеров: —

    когда и какие действия они предпринимали; — John Allspaw, Etsy
  17. В чем польза факапа? Мы должны спросить у инженеров: —

    когда и какие действия они предпринимали; — какие события они наблюдали; — John Allspaw, Etsy
  18. В чем польза факапа? Мы должны спросить у инженеров: —

    когда и какие действия они предпринимали; — какие события они наблюдали; — какого результата своих действий они ожидали; — John Allspaw, Etsy
  19. В чем польза факапа? Мы должны спросить у инженеров: —

    когда и какие действия они предпринимали; — какие события они наблюдали; — какого результата своих действий они ожидали; — из каких предположений они исходили; — John Allspaw, Etsy
  20. В чем польза факапа? Мы должны спросить у инженеров: —

    когда и какие действия они предпринимали; — какие события они наблюдали; — какого результата своих действий они ожидали; — из каких предположений они исходили; — как они понимают последовательность событий. — John Allspaw, Etsy
  21. В чем польза факапа? Мы должны спросить у инженеров: —

    когда и какие действия они предпринимали; — какие события они наблюдали; — какого результата своих действий они ожидали; — из каких предположений они исходили; — как они понимают последовательность событий. …и все это нужно спрашивать без угрозы наказания. — John Allspaw, Etsy
  22. Хронология событий 15.01.18 17:25 YEKT 
 По логам подтверждается гипотеза,

    что запросы отваливаются по троттлингу. Замечаем в логах много PrefixSearch с 50к документами в ответе.
  23. Шаблон — памятка Ущерб Качественная оценка
 Какая функциональность не работала,

    насколько долго, у кого. Была ли потеря или порча данных. Выбери поле справа.
  24. Шаблон — памятка Ущерб Качественная оценка
 Какая функциональность не работала,

    насколько долго, у кого. Была ли потеря или порча данных. Выбери поле справа. Количественная оценка
 По метрикам приложения и приложений-клиентов (сколько запросов отпало, насколько выросла latency)
 По обращениям пользователей (сколько звонков потеряно, размер очереди по проблеме)
  25. Шаблон — глоссарий Релей — сервис carbon-c-relay, который принимает агрегированные

    метрики от приложений и перенаправляет их в стораджи Графита и в Мойру.
  26. №3. А кто его будет читать? —результат постмортема — задачи

    (actions); —создайте задачу в багтрекере команды; — Atlassian Incident Handbook
  27. №3. А кто его будет читать? —результат постмортема — задачи

    (actions); —создайте задачу в багтрекере команды; —поставьте ссылку из постмортема. — Atlassian Incident Handbook
  28. Диванная аналитика — «таблетки» —10% — алерты на количество HTTP-ошибок

    со стороны клиента (500-ки, таймауты); —8% — алерты на появление новых типов ошибок в логах;
  29. Диванная аналитика — «таблетки» —10% — алерты на количество HTTP-ошибок

    со стороны клиента (500-ки, таймауты); —8% — алерты на появление новых типов ошибок в логах; —6% — алерты на системные метрики (CPU, memory, net, disk, threads, GC).
  30. Диванная аналитика — рекомендации —5% — схожесть тестовой и боевой

    площадки; —4% — обратная совместимость в релизах;
  31. Диванная аналитика — рекомендации —5% — схожесть тестовой и боевой

    площадки; —4% — обратная совместимость в релизах; —4% — ночные релизы.
  32. Диванная аналитика — как писать? — собирайте все в одном

    багтрекере; — заведите специальные поля: — начало и конец факапа; — Контур
  33. Диванная аналитика — как писать? — собирайте все в одном

    багтрекере; — заведите специальные поля: — начало и конец факапа; — начало и конец расследования; — Контур
  34. Диванная аналитика — как писать? — собирайте все в одном

    багтрекере; — заведите специальные поля: — начало и конец факапа; — начало и конец расследования; — триггер; — Контур
  35. Диванная аналитика — как писать? — собирайте все в одном

    багтрекере; — заведите специальные поля: — начало и конец факапа; — начало и конец расследования; — триггер; — как заметили; — Контур
  36. Диванная аналитика — как писать? — собирайте все в одном

    багтрекере; — заведите специальные поля: — начало и конец факапа; — начало и конец расследования; — триггер; — как заметили; — качественный и количественный ущерб; — Контур
  37. Диванная аналитика — как писать? — собирайте все в одном

    багтрекере; — заведите специальные поля: — начало и конец факапа; — начало и конец расследования; — триггер; — как заметили; — качественный и количественный ущерб; — затронутые команды и сервисы; — Контур
  38. Диванная аналитика — как писать? — собирайте все в одном

    багтрекере; — заведите специальные поля: — начало и конец факапа; — начало и конец расследования; — триггер; — как заметили; — качественный и количественный ущерб; — затронутые команды и сервисы; — соберите команду инженеров, которых волнует качество. — Контур
  39. Начните делать сами —заведите проект в багтрекере; —украдите у кого-нибудь

    шаблон; —когда в следующий раз что-нибудь взорвется, просто пишите.