Поздравляем с Новым Годом!
   
Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 5(259)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4

Библиографическое описание:
Николаева А.И. ЭВОЛЮЦИЯ CI/CD: ОСНОВНЫЕ ЭТАПЫ И ИНСТРУМЕНТЫ РАЗРАБОТКИ // Студенческий: электрон. научн. журн. 2024. № 5(259). URL: https://sibac.info/journal/student/259/319036 (дата обращения: 27.12.2024).

ЭВОЛЮЦИЯ CI/CD: ОСНОВНЫЕ ЭТАПЫ И ИНСТРУМЕНТЫ РАЗРАБОТКИ

Николаева Александра Ильинична

студент, магистрант, кафедра «Информационные и вычислительные системы», Петербургский государственный университет путей сообщения императора Александра I,

РФ, Санкт-Петербург

Забродин Андрей Владимирович

научный руководитель,

канд. ист. наук., доц., кафедра «Информационные и вычислительные системы», Петербургский государственный университет путей сообщения императора Александра I,

РФ, Санкт-Петербург

АННОТАЦИЯ

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

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

 

Ключевые слова: программное обеспечение, непрерывная интеграция, непрерывная поставка, цикл, Continuous Integration (CI), Continuous Delivery/Deployment (CD)

 

Введение

Непрерывная интеграция, далее – Continuous Integration (CI) и непрерывная поставка – Continuous Delivery/Deployment (CD) представляют собой основополагающие методологии в сфере разработки программного обеспечения, созданные с целью улучшения и автоматизации процессов снабжения оборудования компьютера.

Непрерывная интеграция (CI) направлена на ее автоматизацию, объединение изменений кода от нескольких участников в единый программный проект. В основе Continuous Integration (непрерывной интеграции) лежит система контроля версий кода (например, git), также дополнительно используются инструменты для проведения тестов, с целью осуществления проверок на качество кода и стиля синтаксиса, а также для сборки проекта и подобных интеграционных действий. Данная методология предполагает автоматическую сборку кода, наличие специальных тестов и синтез изменений в основную кодовую базу при каждом новом вхождении или изменении.

Следует отметить, что термин Continuous Integration (CI) может использоваться в двух основных контекстах: «продолжительная интеграция» и «непрерывная интеграция». В рамках данной статьи оба термина используются взаимозаменяемо для обозначения практики регулярной и автоматизированной интеграции изменений в код программного обеспечения.

Непрерывная поставка (CD) направлена на автоматизацию внедрения проекта в различные среды, такие как сфера разработки (development), обстановка тестирования (test/stage), фон эксплуатации (production) и многие другие. Непрерывная поставка CD продолжает процесс продолжительной интеграции CI и использует дополнительные инструменты для перенаправления проекта в нужную среду.

При этом следует отметить, что сам процесс поставки программного обеспечения (Software Delivery Process) представляет собой последовательность шагов и действий, направленных на разработку, тестирование и развертывание программного продукта. Он охватывает все этапы жизненного цикла программного обеспечения – от написания кода до его предоставления конечным пользователям. Основная цель процесса поставки программного обеспечения – предоставить эффективное, стабильное и безопасное внедрение новых функций или преобразований в программном продукте.

В итоге, методологии CI/CD образуют замкнутый цикл, представленный на рисунке 1.

 

Рисунок 1. CI/CD цикл

 

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

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

Сам процесс, включающий в себя: автоматическую сборку, тестирование и развертывание кода во время разработки программного обеспечения часто называют пайплайном (pipeline) или конвейером [7]. Также в некоторых инструментах продолжительной интеграции и непрерывной поставки CI/CD пайплайном называют сам элемент, в котором описываются все этапы от клонирования кода и сборки до разворачивания проекта.

Итак, CI/CD конвейер обычно состоит из следующих этапов:

  1. Разработчик пишет код и отправляет в репозиторий.
  2. CI-сервер (сервер продолжительной интеграции) автоматически скачивает изменения из репозитария и собирает приложение.
  3. Запускаются автоматические тесты и дополнительные проверки (например, на безопасность и синтаксис).
  4. В случае ошибок, процесс останавливается, и разработчик/разработчики уведомляются о найденных проблемах. При успешном завершении тестов и проверок собранная версия отправляется в хранилище артефактов.
  5. Запускается процесс разворачивания обновленного проекта в нужной среде, которая определяется исходя из характера изменений, вызвавших данный алгоритм.

На рисунке 2 представлены описанные этапы CI/CD конвейера.

 

Рисунок 2. CI/CD пайплайн поэтапно

 

Приведенная выше модель CI/CD является некоторым шаблоном или парадигмой. Но в каждом конкретном случае могут наблюдаться определенные особенности. Может быть больше или меньше тестов, возможен этап анализа кода на наличие ошибок либо иных аспектов. Также могут быть дополнительные оповещения и согласования от ответственных лиц, например, в случаях, когда разворачивание происходит в среду эксплуатации (production).

Использование CI/CD конвейеров позволяет добиться следующих преимуществ:

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

Инструменты, используемые для обеспечения процессов CI/CD

В процессе CI/CD широко применяются специализированные инструменты для автоматизации, включая средства описания и настройки пайплайнов и их этапов. К таким инструментам можно отнести Jenkins, GitLab CI/CD, TeamCity, Travis CI, CircleCI.

Помимо инструментов CI/CD в процессе, указанном выше, присутствуют или могут присутствовать другие составляющие, такие как:

  • Хранилище кода / репозитарии (GitLab, GitHub, BitBucket …)
  • Инструменты для учета задач и ведения документации (Jira, Confluence )
  • Инструменты создания и конфигурирования инфраструктуры (Terraform, ansible, puppet )
  • Инструменты для тестирования кода, сборки отчетов о тестировании, проверки качества кода (Junit, SonarQube..)
  • Облачные провайдеры (AWS, Yandex Cloud, …)
  • Инструменты контейнерезации и управления контейнерами (Docker, Kubernetes, Openshift …)

Рассмотрим инструменты CI/CD более подробно.

Jenkins

Jenkins – это один из самых популярных инструментов для реализации CI/CD процессов, который насчитывает огромное сообщество пользователей и множество плагинов для расширения функционала. Jenkins поддерживает большое количество систем контроля версий и сборщиков проектов, а также обладает мощными средствами конфигурации и проверки качества. Однако, у Jenkins есть некоторые недостатки, такие как сложность настройки и управления большим количеством задач [1].

Jenkins – проект с открытым исходным кодом, который написан на Java. Имеет значительное количество плагинов, добавляющих удобства использования и позволяющих интегрироваться с большим числом инструментов. Среди плагинов есть как официально поддерживаемые, так и созданные энтузиастами. Кроме того, существует возможность разработки собственных плагинов [1].

Достоинства данного проекта

  1. Гибкость и расширяемость: Jenkins можно настроить и расширить в соответствии с потребностями разработки.
  2. Большое сообщество и поддержка: Jenkins имеет активную коалицию пользователей и разработчиков. А значит, ответы на большинство вопросов уже есть и их просто нужно найти. Также насчитывается большое количество документации, существуют форумы, где можно задать любые интересующие вопросы, получив соответствующие ответы на них.
  3. Масштабируемость: Jenkins может работать с проектами любого размера, от небольших персональных разработок до корпоративных. В Jenkins можно добавлять произвольное количество "рабочих" узлов, на которых выполняются пайплайны, и легко настраивать параллельные сборки на этих центрах.
  4. Доступность: Jenkins – открытый и бесплатный инструмент, доступный для всех [1].

Недостатки:

  1. Сложность настройки. Настройка Jenkins может быть сложной задачей для новых пользователей. Необходимо уделить время на ее изучение. Однако существует большое количество обучающих материалов в открытом доступе, что упрощает задачу для новичков.
  2. Ограниченные ресурсы. Jenkins может потреблять значительные потенциалы сервера, особенно при работе с большим количеством проектов и сборок, что может потребовать выделения дополнительных резервов для поддержки его работы.
  3. Отсутствие интуитивного интерфейса. Интерфейс Jenkins не всегда является интуитивно понятным и может быть сложным для некоторых пользователей, поэтому его освоение требует времени и усилий [1].

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

Travis CI

Travis CI – это облачный инструмент для реализации CI/CD, который позволяет быстро и легко настроить автоматическую сборку и тестирование проекта. Travis CI интегрируется с GitHub и Bitbucket, что упрощает работу с системами контроля версий и управление задачами. Однако, Travis CI имеет ограниченный функционал и требует подписки для использования всех возможностей [3].

Достоинства

  1. Простота использования. У Travis CI простой и интуитивно понятный интерфейс, а значит, новым пользователям будет легче его освоить. Также имеется достаточное количество документации и руководства к применению.
  2. Интеграция с GitHub: Travis CI интегрируется напрямую с репозитариями на платформе GitHub, что может стать важным фактором для команд, использующих рассматриваемое хранилище кода.
  3. Облачная инфраструктура. Travis CI предоставляет облачные ресурсы для выполнения сборок и тестирования. Следовательно, команде не надо самостоятельно следить за инфраструктурой, поддерживать ее и обновлять, что также позволяет масштабировать процессы непрерывной интеграции и доставки в зависимости от потребностей проекта.
  4. Поддержка различных языков и платформ. Travis CI обеспечивает многостороннюю совместимость с разными языками программирования, включая Java, Python, Ruby, JavaScript и другие. Кроме того, он способен взаимодействовать с различными операционными системами, такими как Linux, macOS, и Windows, что делает его подходящим при выборе для разнообразных проектов с учетом используемых технологий и платформ [3].

Недостатки

  1. Ограниченная бесплатная версия. Версия без оплаты Travis CI имеет ограничения по количеству и времени выполнения сборок, что может быть недостаточно для крупных проектов или команд.
  2. Отсутствие локального выполнения. Travis CI работает только в облачной среде, а значит, разработчики не могут осуществлять сборки и тестирование локально на своих компьютерах.
  3. Ограниченные возможности настройки. Travis CI предоставляет недостаточные возможности для регулирования процессов соединения и тестирования. Если команде понадобятся сложные сценарии сборок, то подобное обстоятельство может вызвать сложности или оказаться нереализуемым [3].

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

GitLab CI/CD

GitLab CI/CD – это инструмент для реализации CI/CD, который интегрируется непосредственно с GitLab, что позволяет управлять всем процессом разработки в одном месте. GitLab CI/CD обладает мощными средствами конфигурации и контроля качества, а также поддерживает интеграцию с различными системами проверки версий и сборщиками проектов. Однако, GitLab CI/CD может быть сложен в настройке и управлении для некоторых пользователей [2].

Достоинства

  1. Интеграция с GitLab. GitLab CI/CD объединяется непосредственно с репозитариями на платформе GitLab, что делает его удобным для разработчиков, использующих данную платформу с целью управления своим кодом.
  2. Широкие возможности настройки. GitLab CI/CD предоставляет гибкие возможности для регулирования процессов сборки и тестирования.
  3. Облачная и локальная инфраструктура. GitLab CI/CD поддерживает как облачные ресурсы, так и локальные серверы для выполнения сборок.
  4. Широкая поддержка языков и платформ. GitLab CI/CD сохраняет большое количество языков программирования и платформ [2].

Недостатки

  1. Сложность настройки. Синхронизация GitLab CI/CD может быть сложной для новых пользователей. Однако имеется достаточное количество соответствующей документации и руководства для клиентов.
  2. Ограниченные возможности бесплатной версии. Вариант без оплаты GitLab CI/CD имеет ограничения по количеству и времени выполнения сборок, что может быть недостаточно для крупных проектов или команд.
  3. Требуется наличие серверов. Для выполнения сборок и тестирования в локальной инфраструктуре необходимо иметь собственный сервер, что требует дополнительных средств и усилий [2].

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

CircleCI

CircleCI – это облачный инструмент для реализации CI/CD, который позволяет быстро и легко настроить автоматическую сборку и тестирование проекта. CircleCI интегрируется с GitHub и Bitbucket, что упрощает работу с системами контроля версий и управление задачами. Данный инструмент предоставляет мощные средства конфигурации, гарантирует контроль качества кода и совместим с разнообразными инструментами сборки проектов. Однако важно отметить, что при расширении инициатив использование CircleCI может быть сопряжено с заметными затратами, что прежде всего обусловлено как увеличением объема работы и требованиями к более высоким ресурсам, так и возможностью дополнительной оплаты за расширенный функционал и прикладные сервисы [4].

Достоинства

  1. Простая настройка: CircleCI предлагает простой и интуитивно понятный процесс синхронизации. Для определения шагов сборки, тестирования и развертывания используются конфигурационные файлы в формате YAML, которые достаточно распространены и чаще всего не потребуют дополнительного изучения [4].
  2. Облачная инфраструктура. CircleCI предоставляет облачные ресурсы для выполнения сборок и тестирования. Не нужно содержать собственные сервера и соответствующую базу.
  3. Широкая поддержка языков и платформ. CircleCI поддерживает большое количество языков программирования и программных документов.
  4. Интеграция с другими инструментами заключается в том, что CircleCI легко интегрируется с другими инструментами разработки, такими как GitHub, Bitbucket и Slack (мессенджер). Это позволяет разработчикам получать уведомления о результатах сборок и тестирования, управляя процессами CI/CD находясь в пределах одной локации [4].

Недостатки

  1. Ограниченные возможности бесплатной версии. Вариант без оплаты CircleCI имеет ограничения по количеству и времени выполнения сборок, что может быть недостаточно для крупных проектов или команд.
  2. Ограниченная гибкость настройки. CircleCI предлагает не очень гибкие возможности настройки процессов сборки и тестирования. Некоторые сложные сценарии могут потребовать дополнительного регулирования или кастомизации.
  3. Ограниченная интеграция с GitLab. CircleCI не интегрируется напрямую с репозитариями на платформе GitLab [4].

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

TeamCity

TeamCity – это инструмент для реализации CI/CD, который имеет мощные средства управления и конфигурации. TeamCity поддерживает множество систем контроля версий и сборщиков проектов, а также обладает средствами контроля качества и мониторинга проекта. Однако, TeamCity может быть сложным в настройке и управлении для некоторых пользователей [5].

Достоинства

  1. Удобный интерфейс и настройка. TeamCity предлагает интуитивно понятный интерфейс и простой процесс синхронизации. Разработчики могут легко определить шаги сборки, тестирования и развертывания, используя визуальный конфигуратор.
  2. Поддержка различных языков и площадок. TeamCity поддерживает большое количество языков программирования и платформ, включая Java, .NET, Ruby, Python и другие.
  3. Масштабируемость и гибкость. TeamCity обладает высокой изменяемостью и пластичностью настройки, что позволяет интегрироваться с различными инструментами разработки и создавать сложные сценарии.
  4. Синтез с другими инструментами. TeamCity легко интегрируется с другими инструментами разработки [5].

Недостатки

  1. Платная лицензия. TeamCity является коммерческим инструментом и требует приобретения разрешения для использования.
  2. Необходимость установки и настройки собственного сервера. TeamCity требует инсталляцию и синхронизацию собственного сервера для выполнения сборок и тестирования.
  3. Ограниченная интеграция с GitLab. TeamCity не интегрируется напрямую с репозитариями на платформе GitLab [5].

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

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

При принятии решения следует учитывать несколько важных факторов [6]:

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

Зная, что такое CI/CD конвейеры и какие инструменты применяются, рассмотрим практические советы, которые помогут внедрить CI/CD процессы в проект.

Практические советы

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

  1. Определите цели внедрения CI/CD. Чтобы определить, чего вы хотите достичь с помощью CI/CD следует посмотреть на наиболее актуальные проблемы или недостатки в текущем процессе взаимодействия разработчиков, тестировании и разворачивании кода. Исходя из самых больших проблем, целью может быть простая автоматизация процесса (уменьшение рутинных задач), улучшение качества кода или иное.
  2. Выберите подходящий инструмент. Рассмотрите проект и инфраструктуру. Ответьте для себя на следующие вопросы. Используете вы облачные технологии или нет? Какое хранилище кода используется? Интеграция с какими инструментами крайне важна? Готовы ли вы выделить средства на инструмент или рассматриваете исключительно бесплатные варианты? Исходя из инструмента, можно начинать процесс, ознакомиться с ним, почитать документацию и поискать примеры.
  3. Настройте автоматизацию. Ключевой аспект CI/CD – автоматизация процессов. Если сборку проекта или запуск тестов невозможно выполнить без участия человека – CI/CD процесс не получится. Если до этого приложение разворачивалась путем копирования файлов и запуском сервиса, возможно полезно рассмотреть вероятность контейнеризации приложения. Контейнеризация позволяет создавать изолированные среды для приложения, облегчает его разворачивание.
  4. Обучайте команду. Важно чтобы все члены команды хотя бы на базовом уровне понимали, как работает процесс и как они могут его использовать для улучшения своей работы. Также коллеги могут предложить интересные идеи, чего, по их мнению, не хватает или, что неудобно.
  5. Подумайте над безопасностью. Автоматизация – это хорошо, но, если кто-то без санкционированного доступа может добраться до вашего CI/CD конвейера и внести в него правки, или запустить разворачивание приложения в промышленную среду – возникает серьезная проблема.
  6. Улучшайте CI/CD процесс. Полезно оптимизировать и анализировать процессы. Можно добавлять новые этапы, улучшать скорость различных ступеней и удобство использования конвейером.
  7. Используйте метрики. Анализ статистики по времени сборки, количеству ошибок, покрытию кода тестами позволит оценить эффективность CI/CD процесса и понять, что можно улучшить.

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

Тенденции

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

Среди направлений развития можно выделить следующие пути:

  1. Облачные технологии;
  2. Интеграция с инструментами управления проектами;
  3. Особое внимание к безопасности;
  4. Искусственный интеллект и нейронные сети.

Рассмотрим данные пункты более подробно, проанализировав их потенциальную применимость при построении CI/CD процесса.

Облачные технологии

Облачные технологии (англ. Cloud Computing) – это подход к хранению и обработке данных, при котором используются ресурсы удаленных серверов. Пользователь выделяет себе ресурсы и создает виртуальные машины, сети, и другие инструменты, при этом никак не заботясь о физической составляющей инфраструктуры.

Преимущества облачных технологий:

  1. Экономия: использование облачных технологий позволяет сократить расходы на оборудование и его обслуживание. Пользователь платит только за потребляемые ресурсы, не заботясь о его техническом обслуживании, плате за размещение и содержание, оплате работникам, которые за ним следят.
  2. Гибкость: облачные технологии позволяют плавно использовать ресурсы в зависимости от потребностей. Можно сократить или увеличить размер потребляемых источников очень быстро.
  3. Геораспределенность: у большинства облачных провайдеров можно выделить себе ресурсы в разных виртуальных центрах обработки данных (вЦОД), тем самым обеспечив большую надежность инфраструктуры.

Недостатки облачных технологий

  1. Зависимость от интернета: для работы с сервером необходимо стабильное интернет соединение. Если прямого доступа к серверу нет, то связь отсутствует.
  2. Безопасность: важно учитывать, что пользователь не имеет полный контроль над физическими серверами и теми, кто имеет к ним доступ. То, что данные компании хранятся на удаленных серверах необходимо учитывать и применять дополнительные меры безопасности.

Облачные технологии могут быть использованы для хранения кода, тестирования и развертывания приложений в рамках CI/CD. Также некоторые облачные провайдеры имеют инструменты, которые способны облегчить построение CI/CD конвейера. Пример можно посмотреть в источнике [7].

Интеграция с инструментами управления проектами

Под инструментами управления проектами имеются в виду устройства для контроля над задачами и приспособления для ведения документации по проекту, например, Jira и Confluence.

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

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

Безопасность

Безопасность – важный аспект в любых проектах. При этом защищенность приложения включает в себя разные аспекты:

  • Аутентификация и авторизация в приложении;
  • Защита данных в приложении (БД, хранилища секретов и т.п.) ;
  • Защита от утечки данных;
  • Использование безопасных библиотек в проекте;
  • И другое.

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

Искусственный интеллект и нейронные сети

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

Заключение

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

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

Чтобы выстроить процессы в проекте необходимо:

  • Определить первоочередные цели;
  • Выбрать инструменты, которые подходит для проекта и стремлений;
  •  Определить набор практик, которым необходимо следовать при разработке.

 

Список литературы:

  1. Документация Jenkins [Электронный ресурс]. – Режим доступа: https://www.jenkins.io/doc/ (дата обращения: 21.10.2023)
  2. Документация GitLab CI/CD [Электронный ресурс]. – Режим доступа: https://docs.gitlab.com/ee/ci/ (дата обращения: 21.10.2023)
  3. Документация Travis CI [Электронный ресурс]. – Режим доступа: https://www.travis-ci.com/ (дата обращения: 21.10.2023)
  4. Документация Circle CI [Электронный ресурс]. – Режим доступа: https://circleci.com/docs/ (дата обращения: 21.10.2023)
  5. Документация TeamCity [Электронный ресурс]. – Режим доступа: https://www.jetbrains.com/help/teamcity/teamcity-documentation.html (дата обращения: 21.10.2023)
  6. Инструменты непрерывной интеграции [Электронный ресурс]. – Режим доступа: https://www.atlassian.com/ru/continuous-delivery/continuous-integration/tools (дата обращения: 06.02.2024)
  7. Get started with CI/CD: Automating application delivery with CI/CD pipelines [Электронный ресурс]. – Режим доступа: https://www.infoworld.com/article/3269078/get-started-with-cicd-automating-application-delivery-with-cicd-pipelines.html (дата обращения: 06.02.2024)
  8. YandexCloud CI/CD в облаке [Электронный ресурс]. – Режим доступа: https://cloud.yandex.ru/ru/solutions/ci-cd (дата обращения: 03.02.2024)
Удалить статью(вывести сообщение вместо статьи): 

Оставить комментарий