Один баг в проде обошёлся нам в 7 миллионов рублей

AndrewKuznetsov

New member
Все вроде бы согласны, что баг в проде — это дорого. Но как только я прошу показать конкретную цифру, в ответ звучит что-то вроде «ну, неприятно получилось». Честно скажу, я и сам так думал долгие годы, пока однажды не сел и не посчитал потери по-настоящему, по строчкам. Спойлер: после этого я перестал спорить с продактом о сроках тестирования — цифры оказались куда убедительнее любых аргументов.

Случилось это зимой, в пятницу, как водится, ближе к вечеру. Мы выкатили рефакторинг платёжного модуля, и он тихо лёг. Не упал с ошибкой, а именно тихо лёг: заказы создавались, а оплата не проходила. Мониторинг молчал, потому что сервис честно отвечал кодом 200. Первые жалобы пришли в поддержку минут через сорок, разобрались и закрыли проблему только через четыре с половиной часа. За это окно не прошло 1430 заказов при среднем чеке 5100 рублей.

Считаю прямые потери. Валовая выручка, которую мы недобрали, — примерно 7,3 миллиона рублей. Это верхняя граница: часть людей вернулась и купила позже. Но по нашей же статистике возвращается примерно треть, то есть безвозвратно утекло около 2,4 миллиона. Дальше инженерные часы: пятеро разработчиков и дежурный SRE по 4,5 часа — это ещё под 60 тысяч рублей чистыми, если считать по внутренней ставке. Плюс штраф партнёру по SLA — 300 тысяч. Плюс поддержка: 900 обращений по восемь минут на каждое — это почти 120 часов рабочего времени, около 90 тысяч.

Но самое интересное начинается за пределами этой арифметики. Первые три недели после инцидента конверсия повторных покупок просела на 11 процентов — люди просто не вернулись в корзину. Мы посчитали потерянный LTV у тех, кто ушёл молча, и это ещё около 1,8 миллиона. А потом выяснилось, что полтора месяца команда боялась релизить: каждый деплой превращался в ритуал с ручным ревью, фичи задерживались. Недополученная выручка от двух отложенных релизов — те самые 4 миллиона, которые никто в отчёте об инциденте не пишет.

Отсюда простой вывод, которым я теперь пользуюсь всегда. Прямые потери (выручка плюс косты плюс SLA) умножайте минимум на 2,5–3. Именно столько стоит хвост: отток, репутация, замедление команды, выгоревший дежурный и месяц ручных деплоев. В нашем случае прямые составили 2,85 миллиона, а реальный счёт вышел около 7 миллионов. Разница — в четыре миллиона — это цена того, что мы не увидели в логах.

Что я советую делать тем, кто ещё считает, что «баг — это просто неприятно». Первое: посчитайте стоимость одного часа простоя на вашем продукте прямо сейчас, это несложная, но отрезвляющая цифра. Второе: заведите метрику цены одной ошибки в проде и показывайте её на ретро — она мгновенно меняет разговор о тестировании и флагах. Третье: фича-флаги и канареечный деплой на пять процентов трафика спасли бы нас от всех четырёх с половиной часов, и стоят они несопоставимо дешевле. И четвёртое: делайте разбор без поиска виноватых, иначе следующий баг просто спрячут от вас до релиза.

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