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

16b6c87229eaf58768d25ed7b2bbbf52?s=47 CodeFest
April 06, 2019

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

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

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

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

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

16b6c87229eaf58768d25ed7b2bbbf52?s=128

CodeFest

April 06, 2019
Tweet

Transcript

  1. Аварии помогают учиться Алексей Кирпичников Контур

  2. None
  3. None
  4. None
  5. None
  6. Что такое факап?

  7. Что такое факап? У вашей блог-платформы миллион пользователей. Вы потеряли

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

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

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

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

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

    SRE Book
  13. Что такое факап? — заметная пользователям деградация сервиса; — любая

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

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

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

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

    сервиса; — Контур
  18. Что такое факап? — заметная пользователям (внешним или внутренним) деградация

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

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

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

  22. В чем польза факапа? Мы можем найти виноватых инженеров и:

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

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

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

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

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

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

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

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

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

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

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

  34. В чем польза факапа? разработал выкатил постмортем

  35. №1. Некогда писать, война нынче

  36. None
  37. None
  38. None
  39. None
  40. None
  41. Хронология событий 15.01.18 17:25 YEKT 
 По логам подтверждается гипотеза,

    что запросы отваливаются по троттлингу. Замечаем в логах много PrefixSearch с 50к документами в ответе.
  42. Скриншоты

  43. №2. Лень

  44. Шаблон —…почитайте гуру…

  45. Шаблон —…почитайте гуру… —добавьте памятку с примерами; — Контур

  46. Шаблон — памятка Ущерб Качественная оценка
 Какая функциональность не работала,

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

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

    Контур
  49. Шаблон — глоссарий Релей — сервис carbon-c-relay, который принимает агрегированные

    метрики от приложений и перенаправляет их в стораджи Графита и в Мойру.
  50. Шаблон —…почитайте гуру… —добавьте памятку с примерами; —добавьте глоссарий; —делайте

    копии всего: —снапшоты Grafana; —истории чатов. — Контур
  51. №3. А кто его будет читать?

  52. №3. А кто его будет читать? разработал выкатил постмортем

  53. №3. А кто его будет читать? —результат постмортема — задачи

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

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

    (actions); —создайте задачу в багтрекере команды; —поставьте ссылку из постмортема. — Atlassian Incident Handbook
  56. Диванная аналитика

  57. Диванная аналитика —длительность; — Контур

  58. Диванная аналитика — длительность

  59. Диванная аналитика —длительность; —качественные виды ущерба; — Контур

  60. Диванная аналитика — ущерб

  61. Диванная аналитика —длительность; —качественные виды ущерба; —триггеры; — Контур

  62. Диванная аналитика — триггер

  63. Диванная аналитика —длительность; —качественные виды ущерба; —триггеры; —«таблетки»; — Контур

  64. Диванная аналитика — «таблетки» —10% — алерты на количество HTTP-ошибок

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

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

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

    Контур
  68. Диванная аналитика — рекомендации —5% — схожесть тестовой и боевой

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

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

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

    багтрекере; — Контур
  72. Диванная аналитика — как писать? — собирайте все в одном

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

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

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

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

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

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

    багтрекере; — заведите специальные поля: — начало и конец факапа; — начало и конец расследования; — триггер; — как заметили; — качественный и количественный ущерб; — затронутые команды и сервисы; — соберите команду инженеров, которых волнует качество. — Контур
  79. Почитайте гуру — kitchensoap.com/2013/09/30/learning-from-failure-at-etsy/ — atlassian.com/software/jira/ops/handbook/incident-postmortems — response.pagerduty.com/after/post_mortem_process/ — landing.google.com/sre/sre-book/chapters/postmortem-culture/

  80. Начните делать сами —заведите проект в багтрекере;

  81. Начните делать сами —заведите проект в багтрекере; —украдите у кого-нибудь

    шаблон;
  82. Начните делать сами —заведите проект в багтрекере; —украдите у кого-нибудь

    шаблон; —когда в следующий раз что-нибудь взорвется, просто пишите.
  83. Алексей Кирпичников Контур Вопросы? tech.kontur.ru alexkir@kontur.ru