Понимание основных понятий CI/CD
Сегодняшние предприятия испытывают все большее давление с целью предоставления программного обеспечения быстрее, чем их конкуренты, отличающиеся исключительно качеством своих приложений и разработчиками, которые их создают. В результате все больше и больше организаций обращаются к непрерывной доставке (CD), чтобы улучшить их способность планировать, создавать, тестировать и выпускать приложения на рынок быстро и в необходимом масштабе.
Ваша компания заинтересована в том, чтобы узнать, как использовать непрерывную доставку для более быстрого развертывания программного обеспечения, но не знает, что означают все термины и понятия?
К счастью, эта статья может помочь вам: прочитайте руководство по основным терминам и понятиям, касающимся непрерывной доставки и почему CD сегодня - это необходимость.
В чем разница между CI и CD?
Вы слышали о термине CI/CD и, возможно, просто предположили, что это означает написание сценариев для построения конвейеров для развертывания приложений. Что ж, вы в некотором роде правы. Во-первых, давайте сравним и сопоставим CI и CD.
Непрерывная интеграция (CI) касается принятия кода к артефакту.
Итак, в основном, разработчик:
- Пишет код
- Проверяет его
- Код проходит процесс сборки
- Артефакт создан
- Артефакт хранится в хранилище
Это оно. Вот визуальное отображение вышеописанного:
Непрерывная интеграция - это проблема, которая имеет зрелый набор инструментов, технологий и устоявшихся лучших практик. Существует множество поставщиков, и вы, скорее всего, используете одного из них.
Так что же происходит после того, как артефакт готов? Здесь и появляется CD.
Что такое Артефакт / Сервис
Сервис. Сервис - это автономное программное обеспечение, которое является частью набора сервисов, составляющих приложение. Типичными примерами являются контейнеры Docker, модули Kubernetes или отдельное приложение Node.js.
Артефакт - каждый сервис содержит свои требования к развертыванию. Например, ваше приложение Node.js потребует от вас упаковки вашего сервиса определенным образом, чтобы подготовить его к развертыванию. Это упакованное и готовое состояние является артефактом. Таким образом, артефакт - это просто сервис, который собран, упакован и готов к развертыванию.
Шесть стадий непрерывной доставки
CD состоит из следующих этапов:
Как только артефакт готов к развертыванию, вам нужно пройти его через эти шесть этапов, которые должны поддерживаться вашим конвейером CD.
Что такое конвейер, этап, рабочий процесс
Есть несколько важных терминов, с которыми вы должны ознакомиться, чтобы понять основы CD: конвейер, этап и рабочий процесс. Когда вы запускаете развертывание, ваш артефакт должен пройти различные этапы, чтобы быть развернутым.
Рабочие процессы
Каждый этап требует от вас что-то делать с этим артефактом. То, что вы делаете, называется рабочим процессом.
Рабочие процессы обычно автоматизируют три вещи:
- развертывают службу
- тестируют и проверяют сервис
- а затем откатывают (при необходимости)
Скажем, например, этап 1:
- Подготовка среды QA в AWS
- Развертывание моего артефакта в среде QA
- Запуск кучи тестов
- Разрушение окружающей среды
- Проверка работоспособности приложения
- Откат при необходимости
Это ваш рабочий процесс на первом этапе. Когда этап 1 завершен, вы переходите к этапу 2, этапу 3 и так далее.
Вот изображение:
Стратегии релиза Canary и Blue/Green
Общим атрибутом рабочих процессов является стратегия выпуска. В частности, наиболее популярными методологиями выпуска являются Canary и Blue/Green. По мере продвижения на более поздних этапах и подходе к производству вам понадобится стратегия выпуска, обеспечивающая безопасность и надежность вашего развертывания.
Итак, при развертывании вашего продукта (например, стадии 4) в вашем конвейере потребуется включить стратегию выпуска в свой рабочий процесс.
Среды
Среда, в которой вы развертываете свое приложение; они представляют инфраструктуру, на которой работают службы.
Это может быть, например:
- AWS
- Azure
- Google Cloud
- Ваш собственный дата-центр
Ваши рабочие процессы развертывают ваши приложения в необходимой среде.
Конвейер
Конвейер - это термин, описывающий все этапы (и их соответствующие рабочие процессы), соединенные вместе. Помните, что каждый этап имеет рабочий процесс. Таким образом, конвейер объединяет этапы и соответствующие им рабочие процессы. Конвейер - это общий термин для всех частей, работающих вместе.
Итак, вот как выглядит конвейер CD:
6
Триггеры
Триггер - это событие, которое запускает ваш конвейер. Событие может быть любым из следующих:
- Слияние вашей ветки Git с мастером
- Новый артефакт доступен в вашем хранилище артефактов
- Новый файл артефактов .tar был загружен в папку для развертывания.
- Повторяющееся время
- Вебхук
Резюме
Ну вот и все! Теперь вы понимаете, что конвейер состоит из этапов. Каждый этап соответствует окружающей среде.
На каждом этапе есть рабочий процесс, который выполняет то, что требуется для развертывания / тестирования вашего приложения.