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

Статья опубликована в рамках: LXXV Международной научно-практической конференции «Вопросы технических и физико-математических наук в свете современных исследований» (Россия, г. Новосибирск, 22 мая 2024 г.)

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

Секция: Автоматизация и управление технологическими процессами и производствами

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Каликин М.А., Зеленко Л.С. РАЗРАБОТКА И ОПТИМИЗАЦИЯ DEVOPS-КОНВЕЙЕРА ДЛЯ АВТОМАТИЗАЦИИ РАЗВЁРТЫВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ JUPYTERHUB // Вопросы технических и физико-математических наук в свете современных исследований: сб. ст. по матер. LXXV междунар. науч.-практ. конф. № 5(66). – Новосибирск: СибАК, 2024. – С. 5-13.
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

РАЗРАБОТКА И ОПТИМИЗАЦИЯ DEVOPS-КОНВЕЙЕРА ДЛЯ АВТОМАТИЗАЦИИ РАЗВЁРТЫВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ JUPYTERHUB

Каликин Михаил Александрович

магистрант, кафедра программных систем, Самарский национальный исследовательский университет имени академика С.П. Королева,

РФ, г. Самара

Зеленко Лариса Сергеевна

канд. техн. наук, доцент кафедры программных систем, Самарский национальный исследовательский университет имени академика С.П. Королева,

РФ, г. Самара

DEVELOPMENT AND OPTIMIZATION OF A DEVOPS CONVEYOR FOR AUTOMATING JUPYTERHUB SOFTWARE DEPLOYMENT

 

Mikhail Kalikin

Master student, Department of Software Systems, Samara National Research University named after Academician S.P. Koroleva,

Russia, Samara

Larisa Zelenko

Candidate of Technical Sciences, associate professor, Samara National Research University named after Academician S.P. Koroleva,

Russia, Samara

 

АННОТАЦИЯ

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

ABSTRACT

The article discusses the issues of automating the deployment of the multi-user JupyterHub platform using DevOps methodology tools such as Ansible and Jenkins. Ansible automates the installation and configuration of JupyterHub on Linux servers, and Jenkins provides capabilities for creating CI/CD pipelines that automate the process of deploying and managing JupyterHub, improving collaboration between teams and increasing the overall efficiency and reliability of systems.

 

Ключевые слова: DevOps-инструменты; управление конфигурацией; инфраструктура как код; автоматизация процессов; оптимизация Devops-конвейера.

Keywords: DevOps tools; configuration management; infrastructure as code; process automation; Devops pipeline optimization.

 

Введение

В современном мире при разработке программного обеспечения (ПО) ключевыми вопросами являются скорость и эффективность, поэтому автоматизация задач непрерывной интеграции и непрерывной доставки ПО становится не просто удобством, а необходимостью. Для решения этих задач необходимо использовать методологию DevOps, которая  представляет собой набор практик и принципов, объединяющих команды разработчиков (Dev) и эксплуатации (Ops), и обеспечивает сокращение цикла разработки и более стабильное и надежное развертывание приложений  [1].

Один из ярких примеров такой автоматизации – развертывание JupyterHub с использованием Ansible и интеграция с Jenkins. Это решение позволяет командам разработчиков и исследователей данных быстро и легко настраивать среды для совместной работы, экономя время на ручной настройке и обеспечивая высокий уровень воспроизводимости сред.

JupyterHub – платформа, позволяющая пользователям работать с Jupyter notebooks в многопользовательской среде, она широко используется в академических кругах, исследованиях, научных и образовательных учреждениях, а также в индустрии для облегчения работы с данными, проведения аналитических исследований и разработки в области машинного обучения и искусственного интеллекта [2]. Однако ее установка и настройка могут быть довольно трудоемкими без автоматизации. Ansible – мощный инструмент для автоматизации задач администрирования, включая развертывание программного обеспечения и его настройку. Использование Ansible-ролей для установки JupyterHub позволяет стандартизировать и автоматизировать этот процесс, делая его повторяемым и масштабируемым.

Дополнительную степень автоматизации вносит Jenkins, позволяющий автоматизировать различные стадии разработки ПО, включая сборку, тестирование и развертывание [3]. Интеграция Jenkins с процессом установки JupyterHub через Ansible позволит автоматически запускать и выполнять мониторинг процесса развертывания, обеспечивая непрерывную интеграцию и доставку (CI/CD) для инфраструктурных проектов.

Целью данной работы является разработка и внедрение процессов автоматизации для эффективного развертывания и управления информационной системы JupyterHub при помощи инструментов Ansible и Jenkins.

Описание JupyterHub и его практическое применение

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

На рисунке 1 показана архитектура JupyterHub для обеспечения доступа к Jupyter-notebooks через веб-интерфейс. Прокси-сервер (configurable http proxy) направляет трафик от браузера к нужным компонентам системы, в частности, к серверам пользователей notebook server и центральному компоненту hub, который координирует аутентификацию (authenticator), создание и управление сессиями пользовательских серверов (spawner).

 

Рисунок 1. Архитектура JupyterHub

 

Вся информации о пользователях, сессиях и т.д. хранится в базе данных database.

Таким образом, JupyterHub отвечает за решение следующих задач:

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

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

Обзор инструментов, необходимых для автоматизации процессов

Для внедрения методологии DevOps необходимо использовать специальные инструменты, которые можно разделить на следующие категории:

  • системы управления версиями;
  • CI/CD (Continuous Integration/Continuous Delivery) – непрерывная интеграция и непрерывная доставка;
  • управление конфигурацией;
  • мониторинг;
  • облачная инфраструктура.

На рисунке 2 показана обобщенная схема процесса автоматизации развертывания JupyterHub на целевой сервер.

 

Рисунок 2. Обобщенная схема процесса автоматизации развертывания JupyterHub на целевой сервер

 

В качестве системы управления версиями при разработке конвейера Jenkins и Ansible-роли для автоматизированной установки JupyterHub будет использоваться Git. Git выделяется среди систем управления версиями благодаря своей распределённой архитектуре, обеспечивая разработчикам возможность работать локально и эффективно даже без доступа к сети. Его высокая производительность, гибкая система ветвления и слияния, а также мощные инструменты для анализа и управления изменениями делают его идеальным выбором для современной разработки. Git гарантирует надёжность и безопасность данных через криптографическое хеширование, предлагает продвинутые возможности для управления конфликтами, а также позволяет автоматизировать рабочие процессы с помощью хук-скриптов [4].

С точки зрения управления задачами в проект Git поможет измерять и отслеживать полный жизненный цикл разработки – от планирования до развертывания. Наиболее важными являются такие средства, как Time Tracking, Burndown Charts, функция перемещения задачи в другой проект.

Для реализации непрерывной  интеграции и развертывания (CI/CD) был выбран подход «Инфраструктура как код» (Infrastructure as Code). Ansible отвечает за управление конфигурациями и оркестрирование сложных изменений инфраструктуры, в данном случае используется для написания ролей, которые описывают желаемое состояние инфраструктуры, Jenkins автоматизирует процесс развертывания, запуская Ansible на агенте для выполнения инструкций по настройке и развертыванию на целевых хостах.

Jenkins просто настроить, он поддерживает декларативное написание кода конвейера через встроенный веб-интерфейс, поддерживает работу с плагинами и аутентификацию по SSO.

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

Для внедрения мониторинга системы были выбраны два инструмента Grafana и Prometheus. Одной из ключевых возможностей Grafana является настройка оповещений об изменениях в данных или метриках, которые могут храниться как в традиционных серверных средах, так и в облачных сервисах. Prometheus отличается от других подобных систем тем, что для сбора метрик использует HTTP вместо протоколов, таких как SNMP.

В качестве целевого облачного провайдера был выбран Selectel – российский облачный провайдер, который обеспечивает высокие стандарты безопасности и соответствия, что может быть критически важно для некоторых проектов. Одним из ключевых преимуществ Selectel является доступность с территории России без ограничений. Важно отметить, что разработанный авторами процесс развертывания с использованием Jenkins и Ansible не ограничивается только облачными решениями. Данный подход дает возможность работы на внутренних вычислительных ресурсах, например, в вузах или научно-исследовательских институтах.

Реализация процессов интеграции, доставки и мониторинга

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

 

Рисунок 3. Диаграмма развертывания системы для непрерывной доставки приложений JupyterHub

 

Со стороны клиента необходимо иметь установленный клиент Git для внесения и отправки изменений в исходный код. Клиент должен иметь доступ к репозиторию исходного кода, который содержит необходимые файлы конфигурации для проекта.

На стороне сервера Git хранится исходный код проекта вместе с файлами конфигурации и Ansible-плейбуки. Сервер или сервис служит центральным хранилищем кода и конфигураций, доступным для команд разработки и инструментов CI/CD.

На CI/CD сервере Jenkins настроены процессы непрерывной интеграции и доставки. Сервер автоматически реагирует на изменения в репозитории, запуская сборку, тестирование и развертывание проекта. Для автоматизации развертывания используются Ansible-плейбуки, которые в свою очередь запускают Ansible-роли, они применяются к целевым серверам.

Результаты работы

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

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

Особое внимание было уделено сравнению времени на подготовку и развертывание системы. В ручном режиме этот процесс занимал примерно 2 часа, что связано с необходимостью последовательного выполнения многочисленных операций: подключения к серверам, загрузки компонентов, настройки окружения и запуска системы. После внедрения автоматизации с помощью DevOps-инструментов, таких как контейнеры Jenkins для развертывания JupyterHub на целевом сервере, время подготовки и развертывания сократилось до 7 минут. Такое существенное уменьшение времени демонстрирует эффективность автоматизированных процессов. В таблице 1 приведены данные для ручного и автоматизированного режима.

Таблица 1.

Сравнение времени установки и настройки JupyterHub

Операции

Время в ручном режиме

Время с использованием Jenkins

Установка JupyterHub

~40 минут

7 минут

(включает все шаги)

Установка дополнительных библиотек

~20 минут

Применение конфигураций и перезапуск.

~60 минут

 

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

Таким образом, сочетание JupyterHub, Ansible и Jenkins открывает новые возможности для команд, занимающихся разработкой и исследованиями в области данных. Эта интеграция не только упрощает начальную настройку и управление рабочими средами, но и способствует более эффективной и скоординированной работе команды.

 

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

  1. Непрерывное развертывание ПО: автоматизация процессов сборки, тестирования и внедрения новых версий программ / Джез Хамбл, Дэвид Фарли. Вильямс, 2011. – 433 с.
  2. JupyterHub, или как управлять сотнями пользователей [электронный ресурс]. – URL: https://habr.com/ru/companies/yandex/articles/353546/ (дата обращения: 15.04.2024).
  3. Основы CI/CD. Знакомство с Jenkins [электронный ресурс]. – URL: https://habr.com/ru/companies/slurm/articles/691876/ (дата обращения: 15.04.2024).
  4. GitLab CI: Feature Overview, Tutorial and Best Practices [Электронный ресурс]. URL: https://codefresh.io/learn/gitlab-ci/ (дата обращения: 15.04.2024).
Удалить статью(вывести сообщение вместо статьи): 
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

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

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.