Понимание основных понятий CI/CD

Tags: CI, CD, continuous integration, continuous delivery

Сегодняшние предприятия испытывают все большее давление с целью предоставления программного обеспечения быстрее, чем их конкуренты, отличающиеся исключительно качеством своих приложений и разработчиками, которые их создают. В результате все больше и больше организаций обращаются к непрерывной доставке (CD), чтобы улучшить их способность планировать, создавать, тестировать и выпускать приложения на рынок быстро и в необходимом масштабе.

Ваша компания заинтересована в том, чтобы узнать, как использовать непрерывную доставку для более быстрого развертывания программного обеспечения, но не знает, что означают все термины и понятия?

К счастью, эта статья может помочь вам: прочитайте руководство по основным терминам и понятиям, касающимся непрерывной доставки и почему CD сегодня - это необходимость.

В чем разница между CI и CD?

Вы слышали о термине CI/CD и, возможно, просто предположили, что это означает написание сценариев для построения конвейеров для развертывания приложений. Что ж, вы в некотором роде правы. Во-первых, давайте сравним и сопоставим CI и CD.

Непрерывная интеграция (CI) касается принятия кода к артефакту.

Итак, в основном, разработчик:

  1. Пишет код
  2. Проверяет его
  3. Код проходит процесс сборки
  4. Артефакт создан
  5. Артефакт хранится в хранилище

Это оно. Вот визуальное отображение вышеописанного:

 

Непрерывная интеграция - это проблема, которая имеет зрелый набор инструментов, технологий и устоявшихся лучших практик. Существует множество поставщиков, и вы, скорее всего, используете одного из них.

Так что же происходит после того, как артефакт готов? Здесь и появляется CD.

Что такое Артефакт / Сервис

Сервис. Сервис - это автономное программное обеспечение, которое является частью набора сервисов, составляющих приложение. Типичными примерами являются контейнеры Docker, модули Kubernetes или отдельное приложение Node.js.

Артефакт - каждый сервис содержит свои требования к развертыванию. Например, ваше приложение Node.js потребует от вас упаковки вашего сервиса определенным образом, чтобы подготовить его к развертыванию. Это упакованное и готовое состояние является артефактом. Таким образом, артефакт - это просто сервис, который собран, упакован и готов к развертыванию.

Шесть стадий непрерывной доставки

CD состоит из следующих этапов:

 

Как только артефакт готов к развертыванию, вам нужно пройти его через эти шесть этапов, которые должны поддерживаться вашим конвейером CD.

Что такое конвейер, этап, рабочий процесс

Есть несколько важных терминов, с которыми вы должны ознакомиться, чтобы понять основы CD: конвейер, этап и рабочий процесс. Когда вы запускаете развертывание, ваш артефакт должен пройти различные этапы, чтобы быть развернутым.

 

Рабочие процессы

Каждый этап требует от вас что-то делать с этим артефактом. То, что вы делаете, называется рабочим процессом.

Рабочие процессы обычно автоматизируют три вещи:

  • развертывают службу
  • тестируют и проверяют сервис
  • а затем откатывают (при необходимости)

Скажем, например, этап 1:

  1. Подготовка среды QA в AWS
  2. Развертывание моего артефакта в среде QA
  3. Запуск кучи тестов
  4. Разрушение окружающей среды
  5. Проверка работоспособности приложения
  6. Откат при необходимости

Это ваш рабочий процесс на первом этапе. Когда этап 1 завершен, вы переходите к этапу 2, этапу 3 и так далее.

Вот изображение:

 

Стратегии релиза Canary и Blue/Green

Общим атрибутом рабочих процессов является стратегия выпуска. В частности, наиболее популярными методологиями выпуска являются Canary и Blue/Green. По мере продвижения на более поздних этапах и подходе к производству вам понадобится стратегия выпуска, обеспечивающая безопасность и надежность вашего развертывания.

Итак, при развертывании вашего продукта (например, стадии 4) в вашем конвейере потребуется включить стратегию выпуска в свой рабочий процесс.

Среды

Среда, в которой вы развертываете свое приложение; они представляют инфраструктуру, на которой работают службы.

Это может быть, например:

  • AWS
  • Azure
  • Google Cloud
  • Ваш собственный дата-центр

 

Ваши рабочие процессы развертывают ваши приложения в необходимой среде.

Конвейер

Конвейер - это термин, описывающий все этапы (и их соответствующие рабочие процессы), соединенные вместе. Помните, что каждый этап имеет рабочий процесс. Таким образом, конвейер объединяет этапы и соответствующие им рабочие процессы. Конвейер - это общий термин для всех частей, работающих вместе.

Итак, вот как выглядит конвейер CD:

6

Триггеры

Триггер - это событие, которое запускает ваш конвейер. Событие может быть любым из следующих:

  • Слияние вашей ветки Git с мастером
  • Новый артефакт доступен в вашем хранилище артефактов
  • Новый файл артефактов .tar был загружен в папку для развертывания.
  • Повторяющееся время
  • Вебхук

Резюме

Ну вот и все! Теперь вы понимаете, что конвейер состоит из этапов. Каждый этап соответствует окружающей среде.

На каждом этапе есть рабочий процесс, который выполняет то, что требуется для развертывания / тестирования вашего приложения.

No Comments

Add a Comment