Что такое CI/CD и когда небольшой команде нужен DevOps
Если разработчики выкладывают сайт, копируя файлы по SFTP, или релизы случаются, «когда у Саши будет время в пятницу вечером», вы не одиноки. Многие небольшие команды работают так, пока неудачный релиз не уронит продукт. CI/CD это практика, которая делает релизы скучными, а скучные релизы именно то, что вам нужно.
CI: непрерывная интеграция
Каждый раз, когда разработчик отправляет код, автоматическая система собирает приложение и запускает тесты. Если что-то сломалось, команда узнаёт об этом через несколько минут, а не после релиза. Типичные шаги:
- Установка зависимостей и сборка приложения.
- Автотесты и проверка качества кода.
- Проверка зависимостей на известные уязвимости.
- Сборка Docker-образа или пакета для релиза.
CD: непрерывная доставка и развёртывание
Когда сборка прошла, тот же пайплайн её разворачивает: сначала на тестовое окружение (staging), потом в продакшен, автоматически или одной кнопкой. Развёртывание каждый раз одинаковое, никто не забудет шаг, а откат это просто развёртывание предыдущей версии.
Простой пример
Небольшая компания с веб-приложением на GitHub может начать с пайплайна в GitHub Actions (в GitLab всё то же самое делает GitLab CI):
- На каждый pull request: сборка, тесты и комментарий с результатом.
- При слиянии в основную ветку: сборка Docker-образа и отправка в реестр.
- Автоматическое развёртывание образа на staging.
- Развёртывание в продакшен после ручного подтверждения.
Сам пайплайн это короткий конфигурационный файл в репозитории, поэтому у него есть история и ревью, как у любого другого кода.
Сколько это стоит
Для небольшой команды инструменты часто бесплатны или дёшевы: в GitHub Actions и GitLab CI есть бесплатные минуты, реестры контейнеров стоят недорого. Основная стоимость это время инженера на настройку, обычно 10-30 часов на первый проект, плюс поддержка. Поэтому мы предлагаем DevOps как ежемесячные часы, а не как большой проект.
Признаки, что пора
- Релизы проходят нервно и поэтому случаются редко.
- Выкладывать умеет только один человек.
- До клиентов доходят ошибки, которые поймал бы простой тест.
- Staging и продакшен ведут себя по-разному.
- Непонятно, какая версия сейчас работает в продакшене.
Что дальше после CI/CD
Когда релизы автоматизированы, следующие шаги обычно такие: мониторинг и оповещения (чтобы узнавать о проблемах раньше пользователей), инфраструктура как код (чтобы серверы можно было пересобрать с нуля) и контейнеры для одинаковых окружений. О втором мы пишем в статье про Terraform и Ansible.
Наш тариф DevOps Starter включает CI/CD-пайплайн для одного проекта и 10 инженерных часов в месяц.