Автоматизация релизов

9 ноября 2024 г.

Когда в одном релизе слишком много обновлений, я начинаю нервничать.

Чем больше изменений, тем...

  • Больше потенциальных проблем. Часть изменений будет недотестирована. 100% будут баги.

  • Больше вероятность, что какие-то из изменений непредсказуемо взаимосвязаны. Баги найдем не мы, а пользователи, когда фича, которую мы даже не трогали начнёт работать не так, как надо.

  • Больнее диагностировать неочевидные проблемы (например, crashes — когда приложение "вылетает"). Хз какое из 10 обновлений это вызвало...

Мы стараемся релизить раз в неделю-две, как только в приложении добавляется какая-то ценность, о которой можно написать release notes.

Поэтому важно иметь CI/CD, чтобы всё сияло и не сидело бестолку, а сразу шло в продакшен.

Мы используем Tramline для оркестрации автоматических деплоев в App Store и Google Play. Использование трамлайна было одним из лучших ранних решений.

У нас практически нулевые затраты на выпуск новой версии приложения в бету, а затем в прод. Нужно только кликнуть пару кнопок в админке и всё происходит само собой.

Но самая крутая польза от CI/CD в том, что мы можем за день сделать несколько непубличных бета релизов всего лишь тремя командами в командной строке. Выполняем команду и через 20 минут у нас на телефонах обновленный билд.

git checkout RELEASE_BRANCH
git merge main
git push

Без CI/CD возникает проблема "бэби-ситтинга", когда каждый релиз нужно готовить, загружать файлы, а затем следить, чтобы всё прошло гладко.

Это жутко неэффективный расход времени разработчиков. Няньчанье с релизами не только отвлекает от разработки фич и ставит людей в режим ожидания, но ещё и бесит. Бесит == выдирает из потока и делает менее эффективным.

Никто не хочет делать тупую работу руками. Поэтому её начинают избегать, релизы становятся больше, требуют больше тестирования, а также времени "замачивания" (soak time) или "выпекания" (bake time).

Автоматизация релизов ускоряет разработку. Отсутствие автоматизации — замедляет, когда растёт команда и кодовая база. Другими словами, если вы не автоматизируете свои процессы, вы активно их замедляете.