История одного факапа
Мы шипнули жутчайший баг в продакшн. Metacast не работает для всех, у кого есть скаченные эпизоды. Причём, не просто не работает проигрывание скаченных файлов, а UI на половине экранов не функционален.
Причина этому — гугл с его любовью к удалению функционала в гремучей смеси с отсутствием тестов в нашем приложении. В последней версии фреймворка Flutter (v3.27) они решили убрать функцию, которая делает элементы прозрачными и заменили её другой, лучшей функцией.
Ну ок. Это хорошо для производительности, всё клёво. Более того, функция пока ещё не была удалена и она продолжает работать. В смысле, пока продолжает работать, но в будущем будет удалена.
Чтобы избежать сюрпризов, мы заранее мигрировали на новую функцию, но, как оказалось, был нюанс. В итоге долгожданный релиз, где мы шипнули фичу, над которой работали последние 1.5 месяца, для большинства пользователей не работает от слова совсем.
Пока Арнаб спит, я сам пофиксил баг в коде (хорошо не быть на 100% зависимым от СТО!), всё потестил и подготовил PR. Через пару часов начнём выкат новой версии в прод. Заодно проверим насколько работает механизм ускоренного ревью — вроде у Apple можно попросить ревьювнуть побыстрее, если это багфикс и изменение простое.
Вынесенные уроки:
- Не надо в последний день перед важным релизом обновлять зависимости.
- При большом обновлении зависимостей надо дать им хотя бы неделю посидеть во внутренней бете, раз уж у нас нет тестов.
- Нужны базовые тесты, проверяющие что скрины функциональны хотя бы на самом базовом уровне (нет ошибок рендеринга)
Заключение: мобильное приложение — это вам не веб, шипать баги в прод очень с.ка больно.
Спустя 5 часов...
🤡 Оказалось, это был билд в бете. Я с утра с недосыпу проапгрейдился до самого свежего билда для внутреннего использования и забыл об этом в суматохе.
Начал писать пост про новые фичи и, когда делал скриншоты, наткнулся на баг. Как полагается клиентоориентированному продакту, начал паниковать что есть мочи 🙈
Отменяю все выводы. Тесты можно пока не писать 👌 (шутка)
Если бы после этого Арнаб назвал меня долбо.бом, я бы не обиделся.
Вместо этого он описал на полстраницы root cause analysis и процесс, которому нужно было следовать в этой ситуации.
-
Проверить версию приложения и убедиться, что она в проде (или нет).
-
Проверить последний PR.
-
Не паниковать, если прод в порядке. Если не в порядке, тогда только по-быстрому патчить.
Но он меня похвалил за bias for action и сказал, что я всё сделал правильно, учитывая обстоятельства. Вот что значит принципал инженер из бигтеха. Он подошёл к ситуации по Амазоновскому процессу CoE.
Моя рана всё ещё побаливает от втёртой в неё соли, но он прав во всём, кроме похвалы.