About CI/CD
CI / CD (Continuous Integration / Continuous Delivery or Deployment) — это практика DevOps, которая автоматизирует процессы разработки, тестирования и развертывания приложений.
CI (Continuous Integration или Непрерывная интеграция) — разработчики часто вносят изменения в код, и эти изменения автоматически тестируются и объединяются в общий репозиторий.
- Разработчик добавил изменения и залил отдельную ветку на удаленный репозиторий.
- В этот момент начинается CI: код проверяется на синтаксические ошибки, производится тестовая сборка, запускаются юнит тесты.
- Если CI пройден успешно, разработчик далее открывает Merge Request в ветку dev.
CD (Continuous Delivery или Непрерывная доставка) — код после успешного тестирования автоматически подготавливается к деплою в продакшн среду.
CD расширяет концепцию CI, но добавляет этап готовности к деплою. Здесь деплой автоматизирован, но обычно требует вмешательства человека для последнего шага, чтобы обеспечить контроль качества перед продакшн.
- Ветка с изменениями сливается в dev ветку.
- Снова проводятся необходимые тесты.
- Если не возникает конфликтов, происходит деплой в Staging среду.
- Это может быть реализовано через Docker или напрямую через git.
CD (Continuous Deployment или Непрерывное развертывание) — следующий шаг после Continuous Delivery: код автоматически деплоится на продакшен без ручного вмешательства.
- Команда тестирования проверяет приложение в staging среде.
- Если не обнаружено ошибок, приложение деплоится в продакшн среду.
- В продакшн среде приложение будет доступно для конечных пользователей без необходимости вмешательства команды разработчиков.
Стейджинг (Staging)
Стейджинг — это этап развертывания приложения перед отправкой в продакшн среду, предназначенная для тестирования и проверки приложения в условиях, максимально приближенных к реальным.
Цель стейджинга — убедиться, что приложение функционирует корректно в окружении, которое идентично продакшн среде.
- Это включает в себя проверку конфигураций, базы данных, взаимодействие с внешними сервисами и проверку производительности.
Стейдж среда — это инфраструктура или сервер, где размещается приложение, которое прошло все предыдущие стадии тестирования (CI).
На стейдж-среде приложение развертывается с настройками, максимально похожими на продакшн-среду.
Авто деплой в продакшн
CD (Continuous Deployment) подходит, если:
- Приложение микросервисное и легко откатывать изменения.
- Релиз происходит часто (несколько раз в день).
- Есть сильные автоматические тесты, гарантирующие, что код не сломает продакшн.
- Компания уже настроила CI/CD и доверяет процессу.
- Пример: Facebook.