Читаем Rewired онлайн бесплатно

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

 

Непрерывная интеграция (CI) решает проблему координации и проверки изменений программного обеспечения в процессе разработки автоматизированным способом для обеспечения высокого качества. Для реализации CI существует множество инструментов.

 

В одной глобальной фармацевтической компании agile-подразделение, разрабатывающее новую функциональность API, выбрало CircleCI в качестве инструмента CI. Жизненный цикл кода описан ниже:

 

Инженеры, работающие по принципу agile pod, вносили изменения в код, которые затем сохранялись в GitHub (система контроля версий).

CircleCI обнаруживает изменения кода, внесенные в систему контроля версий.

CircleCI проверяет соответствие кода стандартам, запуская Pylint (инструмент для линтинга).

CircleCI проверяет правильность поведения кода, запуская связанные с ним тесты - в данном случае с помощью Pytest.

CircleCI проверяет соответствие кода стандартам качества, выполняя метрики кода - в данном случае с помощью SonarQube.

Документация к коду генерируется автоматически с помощью инструмента - в данном случае с помощью Sphinx (инструмент с открытым исходным кодом, который извлекает документацию из кода и генерирует человекочитаемую документацию для веба).

CircleCI упаковывает пройденный код в модульный строительный блок, который хранится в репозитории пакетов - в данном случае пакет хранится в контейнере (Docker) и хранится в Amazon ECR (хранилище образов Docker, управляемое Amazon). Контейнеры позволяют запускать приложения в любой среде, однако использовать их следует с умом.

 

Конвейер кода Python - непрерывная интеграция и развертывание - пример

 

 

КОД

Python

 

 

 

GitHub

1

2      CircleCI      Обнаружение изменений в коде

 

 

3 Pylint      Проверка соответствия кода стандартам

 

4 Pytest      Проверьте поведение кода, запустив тест

 

5 SonarQube      Проверка качества кода

 

6 Sphinx      Автогенерация документации

7 Docker      Код упаковывается и хранится в репозитории

Amazon ECR

8 Selenium      Запуск интеграционных тестов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Инженеры вносят изменения в код

 

 

 

Контроль исходных текстов/сохранение кода

 

 

 

НЕПРЕРЫВНАЯ ИНТЕГРАЦИЯ

      

 

 

 

НЕПРЕРЫВНОЕ РАЗВЁРТЫВАНИЕ

 

 

 

ПРИЛОЖЕНИЕ 19.4

3      Argo      Обнаружение изменений в коде

 

 

4 Checkmarx      Проверка на наличие уязвимостей

5 Argo      Скопируйте образ Docker на производственную платформу Kubernetes

6 Kurbenetes      Представьте в виде API для тестирования поведения кода

 

7 Selenium      Убедитесь, что API работает

8 Kurbenetes        Активируйте API для пользователей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Затем CircleCI проводит интеграционные тесты, проверяя, работает ли новый модульный блок при интеграции со всем остальным программным обеспечением и любыми другими изменениями, внесенными другими членами команды - в данном случае с помощью Selenium (инструмента автоматизации веб-программ с открытым исходным кодом для автоматического написания тестов).

 

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

 

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

 

Фармацевтическая компания, о которой шла речь выше, выбрала инструмент Argo CD для развертывания в производстве (кластер Kubernetes). Процесс компании включал в себя следующие шаги (см. рисунок 19.4. Обратите внимание, что следующее перечисление отличается от приведенного на рисунке для наглядности).

 

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

Argo CD проверяет пакет на наличие уязвимостей с помощью Checkmarx, который используется для обнаружения векторов атак безопасности в пакете или написанном коде. Это дополнительный шаг, гарантирующий, что то, что ставится в производство, безопасно для работы в производстве.

Затем Argo CD копирует с Amazon ECR образ Docker на производственную платформу Kubernetes. Платформа Kubernetes упрощает управление контейнерами и делает приложения более переносимыми.

Затем Argo CD гарантирует, что у этого нового контейнера есть частный API, который можно использовать для проверки правильности поведения пакета.

Argo CD запрашивает Selenium (инструмент тестирования) для проверки правильности поведения API.

Похожие книги