Найти в Дзене

CI/CD в два клика и без простоев

Оглавление

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

Скорость и качество создания продукта – ключевые элементы успеха в разработке программного обеспечения, что делает их основными факторами конкуренции. В связи с этим устаревшие модели разработки, такие как императивные, структурные и модульные, заменены более новой моделью CI/CD.

CI/CD – это процесс непрерывной интеграции и непрерывной доставки продукта.

Концепция CI/CD относится к гибким методологиям разработки ПО и ориентирована на внимание к бизнес-требованиям и безопасности, а также на обеспечение высокого качества конечного продукта. Этот подход включает в себя:

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

Приведем пример: для того чтобы выполнить расчеты в EXCEL, удобнее воспользоваться формулой и получить результат за секунду, чем высчитывать каждую строку вручную на калькуляторе.

Основными принципами CI/CD являются:

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

Преимущества CI/CD

  • Повышение скорости разработки: разработчики могут быстрее тестировать и вводить изменения в продукт.
  • Качество тестирования: возможность выявлять ошибки на ранней стадии разработки.
  • Выбор оптимального варианта: разработчики могут протестировать различные варианты кода быстро и внедрить наиболее подходящий.

Под непрерывной интеграцией, мы понимаем развертывание кода в тестовых системах, а под непрерывной доставкой – доставку приложения до продукта (максимально упрощая: написал – отправил в репозиторий, всё само собралось, автоматически протестировалось, установилось).

Из чего состоит CI/CD?

  • Git (инструмент для автоматизации рутинных задач, возникающих в процессе разработки программного обеспечения).
  • Автоматизированные инструменты развертывания
  • GitLab (инструмент для автоматизации процессов тестирования, развертывания и мониторинга проектов).

Для того чтобы работала CI/CD, нужно настроить гид, развернуть тестовое окружение с необходимым перечнем: фронт, тест, в зависимости от того, какие уровни у заказчика, и конечный сервер, на котором всё должно появиться после одобрения.

-2

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

Как проходит процесс CI/CD

  • Необходимо забрать из репозитория код и переместить на тестовый сервер.
  • Выполнить сборку приложения
  • Запустить автоматизированное тестирование, если приложение собралось без ошибок.

Если все три процесса прошли успешно, тогда первые два разворачиваем для продуктовой среды.

Процесс CI/CD

Однако не всё так просто, дьявол кроется в деталях.

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

Проблема № 1

При развертывании произошел сбой сервера – сервис недоступен или работает с ошибкой. В таком случае необходимо ввести дополнительную стадию тестирования после развертывания в продуктовое окружение. В классическом случае – откат из резервной копии, здесь мы получаем неправильно выстроенный процесс CI/CD.

Решение: обращаемся к дополнительным технологиям, например контейнеризации. В этом случае разворачиваем приложение на новой среде – не на физическом сервере, а на еще одной копии, чаще всего для этого используются контейнеры. После того как...

Подробнее на it-world.ru