Как мы сократили время деплоя в 5 раз с помощью параллельных сборок
Полтора года назад типичный деплой у одного из наших клиентов занимал около 40 минут: сборка фронтенда, бэкенда и миграций шла последовательно в одном пайплайне, а любая ошибка на последнем шаге откатывала всё с нуля.
Первым делом мы разбили пайплайн на независимые джобы, которые не имеют общих зависимостей по данным — сборка фронтенда, бэкенда и статических ассетов теперь идут параллельно, а не друг за другом.
Вторым шагом стало кэширование артефактов сборки между запусками: зависимости, которые не менялись, больше не пересобираются каждый раз, а подтягиваются из хранилища.
Третий шаг — вынесение миграций БД в отдельный, обратимый шаг с проверкой перед применением, чтобы неудачная миграция не блокировала выкладку остального кода.
В результате среднее время деплоя упало с 40 до 8 минут, а число откатов из-за таймаутов CI сократилось практически до нуля.