Как устроена стоимость CI/CD пайплайнов и как её оптимизировать
Почему важно считать стоимость CI/CD
Непрерывная интеграция и доставка давно стала стандартом в разработке ПО. Но за удобство автоматических сборок, тестов и деплоя приходится платить — и часто больше, чем кажется на первый взгляд. Без регулярного подсчёта затрат бюджет на CI/CD может незаметно вырасти в 2–3 раза за полгода.
Стоимость складывается из нескольких компонентов: вычислительные ресурсы (минуты работы раннеров или аренда серверов), хранение артефактов, сетевой трафик и трудозатраты на поддержку инфраструктуры. Понимание структуры расходов помогает принимать обоснованные решения — выбрать облако или свой сервер, оптимизировать пайплайны или пересмотреть тариф.
Из чего состоит счёт за CI/CD
Основная статья — вычислительное время. У облачных провайдеров вы платите за каждую минуту работы раннера. Цена зависит от операционной системы (Linux дешевле Windows и macOS в 2–10 раз) и производительности машины. Например, GitHub Actions предлагает Linux-раннеры примерно за 0,008 доллара в минуту (~0,7 ₽), а macOS — за 0,08 доллара (~7 ₽). При 200 сборках в месяц по 10 минут разница между Linux и macOS составит 1 400 ₽ против 14 000 ₽.
Вторая значимая статья — хранение артефактов. Каждая сборка порождает файлы: скомпилированные бинарники, Docker-образы, пакеты, логи. Эти данные хранятся в облаке провайдера, и за каждый гигабайт взимается ежемесячная плата. Даже небольшой проект за месяц может накопить десятки гигабайт, особенно если не настроена автоматическая очистка старых артефактов.
Дополнительные затраты включают сетевой трафик (передача артефактов между сервисами), лицензии для self-hosted инструментов (TeamCity, Octopus Deploy) и, конечно, время DevOps-инженеров, которые настраивают и поддерживают пайплайны.
Облачные платформы: гибкость и скрытые лимиты
Облачные CI/CD-сервисы привлекают простотой: не нужно покупать серверы, настраивать операционную систему, следить за обновлениями. Вы получаете готовые раннеры и платите только за использование. Многие платформы дают щедрые бесплатные лимиты: GitHub Actions предоставляет 2 000 минут в месяц для приватных репозиториев, GitLab CI — 400 минут на бесплатном тарифе.
Однако при активной разработке лимиты заканчиваются быстро. Команда из 5 разработчиков, каждый из которых делает 2 коммита в день, генерирует 10 сборок ежедневно. При средней длительности 8 минут это 80 минут в день или 1 760 минут в месяц — почти весь бесплатный лимит GitHub Actions уходит за месяц. А если добавить ветки, pull request'ы и повторные запуски — расходы удваиваются.
Self-hosted: капитальные затраты и независимость
Собственный CI/CD сервер — это аренда или покупка физического оборудования, установка Jenkins, GitLab Runner или TeamCity. Плюс — фиксированная ежемесячная стоимость и полный контроль над окружением. Минус — необходимость администрирования: обновления, безопасность, бэкапы, мониторинг, масштабирование при росте нагрузки.
Для команд из 15–20 человек собственный сервер за 20 000–30 000 ₽/мес часто выгоднее облака, особенно если сборки длительные и их много. Но если команда маленькая (3–7 человек), облачные платформы почти всегда дешевле — стоимость администрирования своего сервера съедает всю экономию.
Как сократить расходы: практические советы
Первый шаг к экономии — кэширование зависимостей. Вместо того чтобы заново скачивать npm-пакеты, Maven-зависимости или Docker-слои при каждой сборке, сохраняйте их между запусками. Это сокращает время сборки на 30–60% и напрямую уменьшает счёт за минуты.
Второй шаг — распараллеливание и условный запуск. Разбейте пайплайн на независимые стадии, которые выполняются одновременно. Не запускайте полный набор тестов при изменении файла README — используйте фильтры по путям. Эти приёмы снижают общее время занятости раннеров.
Третий шаг — автоматическая очистка артефактов. Настройте политику хранения: удаляйте артефакты старше 7–14 дней, оставляйте только последние 3–5 успешных сборок для каждой ветки. Один разработчик может за месяц накопить 20–30 ГБ ненужных Docker-образов, а команда из десяти человек — все 200–300 ГБ. При цене 4 ₽/ГБ это 800–1 200 ₽ ежемесячно только за хранение мусора.
Когда пора переходить с облака на свой сервер
Универсального ответа нет, но есть ориентир: посчитайте месячную стоимость облачных минут и сравните с арендой сервера аналогичной производительности плюс 20–30% на администрирование. Если облако дороже на 40–50% и эта разница сохраняется несколько месяцев подряд — пора задуматься о своём железе. Для стартапов и небольших команд порог обычно находится на уровне 15 000–25 000 ₽/мес облачных расходов.
Прогнозирование бюджета: закладывайте запас
При планировании бюджета на CI/CD всегда закладывайте запас 25–30% сверх расчётных цифр. Растёт проект — растёт число сборок. Появляются новые разработчики — увеличивается частота коммитов. Внедряются микросервисы — каждый сервис получает собственный пайплайн. Калькулятор помогает получить базовую оценку, но реальная жизнь всегда вносит коррективы.
Используйте этот калькулятор как отправную точку. Подставляйте свои цифры, экспериментируйте с параметрами, сравнивайте сценарии «облако» и «свой сервер». Регулярный пересчёт — раз в месяц или квартал — убережёт от неприятных сюрпризов в счетах и поможет держать IT-бюджет под контролем.