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

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

CodeFest
April 06, 2019

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

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

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

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

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

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. Начните делать сами —заведите проект в багтрекере; —украдите у кого-нибудь

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