Научная статья на тему 'Обзор инструментов для DevOps в разработке программного обеспечения для полевых команд'

Обзор инструментов для DevOps в разработке программного обеспечения для полевых команд Текст научной статьи по специальности «Техника и технологии»

CC BY
0
0
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
DevOp / программное обеспечение / инструменты DevOps / современные технологии / IT. / DevOp / software / DevOps tools / modern technologies / IT.

Аннотация научной статьи по технике и технологии, автор научной работы — Слабаков Денис Евгеньевич

В статье рассматриваются ключевые инструменты DevOps, используемые в разработке программного обеспечения для полевых команд. DevOps, как интеграционная философия, направлена на автоматизацию и синергетическое взаимодействие разработчиков и IT-команд, что существенно повышает эффективность и надежность процессов на всех этапах жизненного цикла приложений. Важнейшие практики DevOps включают непрерывную интеграцию (CI) и непрерывную поставку (CD), обеспечивающие автоматизацию сборок, развертывания и тестирования, что позволяет ускорить выпуск программных продуктов и улучшить их качество. Рассмотрены различные инструменты, такие как Jenkins, Vagrant, Nagios, Sumo Logic, Git, Kubernetes, Docker и другие, каждый из которых вносит свой вклад в автоматизацию, мониторинг, управление и оптимизацию разработки и эксплуатации ПО. Эти инструменты поддерживают создание надежных, масштабируемых и высокопроизводительных систем, необходимых для эффективной работы полевых команд

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Overview of DevOps Tools in Software Development for Field Teams

The review examines the key DevOps tools used in software development for field teams. DevOps, as an integration philosophy, is aimed at automation and synergetic interaction between developers and IT teams, which significantly increases the efficiency and reliability of processes at all stages of the application lifecycle. The most important DevOps practices include continuous integration (CI) and continuous delivery (CD), which provide automation of builds, deployments and testing, which allows you to accelerate the release of software products and improve their quality. Various tools such as Jenkins, Vagrant, Nagios, Sumo Logic, Git, Kubernetes, Docker and others are considered, each of which contributes to automation, monitoring, management and optimization of software development and operation. These tools support the creation of reliable, scalable, and high-performance systems necessary for the effective operation of field teams.

Текст научной работы на тему «Обзор инструментов для DevOps в разработке программного обеспечения для полевых команд»

Обзор инструментов для DevOps в разработке программного обеспечения для полевых команд

es о es

о ш m

X

<

m о х

X

Слабаков Денис Евгеньевич

управляющий партнер, New Mining Company, ds@nmc.email

В статье рассматриваются ключевые инструменты DevOps, используемые в разработке программного обеспечения для полевых команд. DevOps, как интеграционная философия, направлена на автоматизацию и синергетическое взаимодействие разработчиков и IT-команд, что существенно повышает эффективность и надежность процессов на всех этапах жизненного цикла приложений. Важнейшие практики DevOps включают непрерывную интеграцию (CI) и непрерывную поставку (CD), обеспечивающие автоматизацию сборок, развертывания и тестирования, что позволяет ускорить выпуск программных продуктов и улучшить их качество. Рассмотрены различные инструменты, такие как Jenkins, Vagrant, Nagios, Sumo Logic, Git, Kubernetes, Docker и другие, каждый из которых вносит свой вклад в автоматизацию, мониторинг, управление и оптимизацию разработки и эксплуатации ПО. Эти инструменты поддерживают создание надежных, масштабируемых и высокопроизводительных систем, необходимых для эффективной работы полевых команд. Ключевые слова: DevOp, программное обеспечение, инструменты DevOps, современные технологии, IT.

Введение

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

В последние годы важность DevOps возросла из-за необходимости преодолеть разрыв между разработкой программного обеспечения и ИТ-операциями. Эта эволюция отражает более широкую тенденцию к непрерывной интеграции, непрерывной доставке (CI/CD) и инфраструктуре как коду (IaC), которые в совокупности упрощают жизненный цикл разработки. Эти методы не только сокращают время выхода на рынок, но также повышают надежность и масштабируемость программных приложений, что имеет решающее значение для полевых групп, решающих задачи на местах [1].

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

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

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

1. Общая характеристика DevOps

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

счет чего DevOps оказывает влияние на жизненный цикл приложения на всех его этапах — от планирования и разработки до поставки и эксплуатации. Каждая фаза взаимосвязана и не зависит от конкретной роли. Культура DevOps предполагает включение всех ролей на каждом этапе процесса (рис.1) [2].

Рис.1. Процессы DevOps [1 ].

Практики DevOps представляют собой набор методологий и инструментов, направленных на оптимизацию и автоматизацию процессов разработки и эксплуатации программного обеспечения. Основными аспектами DevOps являются непрерывная интеграция (CI) и непрерывное развертывание (CD), которые обеспечивают частые и надежные выпуски обновлений программного обеспечения. Использование инфраструктуры как кода (IaC) позволяет управлять и конфигурировать инфраструктуру посредством кода, что способствует её воспроизводимости и устойчивости к ошибкам. Существующие основные практики в DevOps (CI/CD) представлены на рисунке 2.

Непрерывное развертывание (Continious Deployment)

......

Непрерывная интеграция (Cl)

сбори. запус« модгльнш тестов

09 Û ß> ПРЛ

мсаульное И«™ mi СИ«

ща№)

%

Рис.2. Практики DevOps [3].

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

Рис.З. Непрерывная интеграция в DevOps [3].

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

Непрерывная поставка (Continuous Delivery, CDL) — это методология разработки программного обеспечения, которая обеспечивает постоянную готовность программного продукта к развертыванию в производственную среду. Эта практика включает автоматизацию развертывания на тестовые среды, автоматизацию тестирования успешности развертывания на уровне администраторов (включая технические и функциональные тесты), а также интеграцию с процессами автоматизированного функционального, нагрузочного тестирования и динамического тестирования на безопасность [3].

2. Категоризация инструментов DevOps

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

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

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

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

Инструменты мониторинга и ведения журнала, включая Prometheus, Grafana и стек ELK (Elasticsearch, Logstash и Kibana), необходимы для обеспечения прозрачности и работоспособности приложений в рабочей среде. Prometheus превосходно справляется со сбором и запросом данных временных рядов, а Grafana расширяет эти данные с помощью богатых визуализаций. Стек ELK обеспечивает комплексное управление журналами, позволяя агрегировать, анализировать и визуализировать данные журналов из нескольких источников.

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

I I

О

ГО

>

JZ

I ГО

m

о

ю

2 О M 4

Таблица 1

CS

0

CS

01

О Ш

m

X

3

<

m О X X

Категория Инструмент Простота использования Интеграционные возможности Масштабируемость Поддержка сообщества

Управление конфигурациями Puppet Умеренная Высокие Высокая Сильная

Chef Сложная Высокие Высокая Сильная

Ansible Легкая Умеренные Умеренная Сильная

Контейнеризация Docker Легкая Высокие Высокая Сильная

Оркестра-ция Kuberne tes Сложная Высокие Высокая Сильная

CI/CD Jenkins Умеренная Очень высокие Высокая Сильная

GitLab CI/CD Легкая Высокие Высокая Растущая

Travis CI Легкая Умеренные Умеренная Сильная

Мониторинг Prometh eus Умеренная Высокие Высокая Растущая

Grafana Умеренная Высокие Высокая Сильная

Логирова-ние ELK Stack Сложная Высокие Высокая Сильная

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

3. Существующие инструменты

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

Nagios стал промышленным стандартом для мониторинга ИТ-инфраструктуры. С помощью Nagios DevOps-команды могут обнаруживать и устранять проблемы подключения к сети, а также контролировать состояние вычислительных узлов и служб, уведомляя администратора о любых сбоях.

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

RabbitMQ — это мультипротокольная платформа с открытым исходным кодом для обмена сообщениями между компонентами

программной системы, обеспечивающая надежную передачу и хранение сообщений.

Apache ActiveMQ — открытый проект, применяемый разработчиками в качестве сервера очередей сообщений, обеспечивающий быстрый обмен сообщениями и поддержку различных протоколов и языков программирования.

OverOps применяется для обнаружения ошибок в приложениях на Java, Scala, Clojure и Groovy, позволяя выявлять ошибки в реальном времени, возникающие из-за пользовательской активности.

Squid — это кэширующий прокси-сервер для HTTP, HTTPS и FTP, который поддерживает множество кэширующих протоколов и улучшает время отклика веб-серверов, обеспечивая балансировку нагрузки и отказоустойчивость.

MySQL — это самая популярная открытая СУБД, поддерживающая множество типов таблиц и обычно используемая в качестве сервера для локальных или удалённых клиентов. Включает библиотеку внутреннего сервера для автономных программ [4].

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

Jira. Решения компании Atlassian, включая Jira, стали де-факто стандартом в индустрии. При работе с крупными заказчиками, скорее всего, придётся использовать Jira для создания тикетов, отслеживания времени выполнения задач, состояния спринтов, создания ре-лизных заметок и решения других задач. Преимуществом Jira является её интеграция с другими продуктами Atlassian, такими как Confluence.

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

Lens — графический интерфейс для управления и мониторинга Kubernetes кластеров, также известный как GUI для Kubernetes. Он предоставляет возможность видеть все сущности, включая пользовательские ресурсы, и обладает множеством полезных функций, таких как доступ к приватным кластерам через собственный прокси. Хотя этот инструмент не является обязательным для DevOps-инженеров, его использование может значительно упростить управление кластерами.

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

Terraform — инструмент для управления инфраструктурой через API и облачных провайдеров. Он позволяет работать с различными облачными платформами и описывать окружение в коде, автоматизируя создание необходимых сетей, кластеров и других ресурсов без необходимости использования консольных интерфейсов [5].

Prometheus, Grafana и Zabbix. Prometheus использует pull-модель сбора метрик через HTTP, но также имеет компонент push-gateway для мониторинга короткоживущих сервисов. Использование нескольких серверов Prometheus для мониторинга позволяет предотвратить потерю данных.

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

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

Использование контейнеризации в Docker значительно снижает ресурсные затраты на виртуализацию операционной системы, поскольку задействуются только необходимые ресурсы для компиляции и выполнения кода. Это особенно полезно для разработки и развертывания многочисленных микросервисов, так как позволяет обеспечить стабильную и предсказуемую работу программных продуктов в разных средах [6].

ServiceNow представляет собой важную платформу для организаций, стремящихся оптимизировать управление ИТ-услугами и не только. Его значимость заключается в способности предоставлять унифицированное облачное решение для автоматизации и оптимизации различных бизнес-процессов, включая управление ИТ-услугами (ITSM), ИТ-операциями (ITOM), кадровые ресурсы (HR), обслуживание клиентов и многие другие. В условиях стремительной цифровизации сервисов, удаленной работы и растущей сложности технологических инфраструктур ServiceNow предлагает комплексный подход к управлению рабочими процессами, решению проблем и эффективному предоставлению услуг. Интеллектуальные возможности автоматизации, аналитика и данные, основанные на искусственном интеллекте, позволяют организациям повышать производительность, гибкость и удовлетворенность клиентов, одновременно снижая операционные затраты. Роль ServiceNow в интеграции различных систем и процессов делает его незаменимым инструментом для стимулирования цифровой трансформации и обеспечения бесперебойной работы в постоянно меняющемся бизнес-ландшафте 2024 года.

Ansible представляет собой мощный инструмент с открытым исходным кодом для автоматизации управления конфигурацией и развертывания приложений. Он позволяет определять инфраструктуру в виде кода, что упрощает предоставление серверов и услуг, а также управление ими. Простота использования и безагентная архитектура Ansible делают его популярным среди специалистов DevOps, стремящихся к автоматизации повторяющихся задач и повышению эффективности процессов управления инфраструктурой [7].

CodeGuru (AWS). Интересной функцией данного инструмента является функция виртуального редактора кода, которая основывается на искусственном интеллекте, которая проверяет код на наличие следующих ошибок:

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

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

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

CodeGuru отмечает чрезмерное использование памяти в определенных частях кода, чтобы разработчики могли оптимизировать программы для повышения эффективности использования памяти.

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

Решения Snyk включают в себя инструменты управления состоянием облачной безопасности. С помощью этой функции можно

определить и устранить любые ошибки в настройке или сбои в системе безопасности в облачной инфраструктуре пользователя [8].

3. Анализ эффективности инструментов

В данном разделе интересным представляется рассмотрение отчета 2019 Accelerate State of DevOps Report, составленного экспертами DevOps Research & Assessment (DORA). В проведенном исследовании принимали участие около 31 000 специалистов со всего мира.

Исследования показывают, что успешные DevOps-команды активно вкладываются в развитие широкого спектра вспомогательных процессов, практик и инструментов:

92% используют автоматизированные инструменты для сборки;

87% внедряют автоматизированные юнит-тесты;

57% применяют автоматизацию для приемочных испытаний;

72% автоматизируют развертывания в тестовых средах, при этом 69% делают то же самое для продакшн-развертываний;

69% интегрируют чат-ботов в процесс развертывания;

57% интегрируются с инструментами мониторинга.

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

Таблица 2

Технологии Команды Команды Команды Команды

с низ- со сред- с хоро- с высо-

кими по- ними по- шими по- кими по-

казате- казате- казате- казате-

лями лями лями лями

Сочетание про- 30% 34% 32% 33%

приетарных, open

source и коммерческих коробоч-

ных продуктов

В основном open 17% 8% 7% 10%

source и сильно

кастомизирован-ные коробочные

решения

В основном open 14% 21% 18% 20%

source и коробоч-

ные решения с небольшой

настройкой

В первую оче- 8% 12% 8% 4%

редь коробочные

коммерческие ре-

шения

Внутренние разработки и пропри- 20% 6% 5% 6%

етарные решения

под компанию

В первую оче- 6% 7% 5% 12%

редь open source

с сильной касто-

мизацией

В первую оче- 5% 12% 24% 15%

редь open source с небольшой

настройкой

X X О го А С.

X

го m

о

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

ю

2 О

M ■р»

CS

о

CS

о ш m

X

3

<

m О X X

велик порог входа, если инструмент новый); финансовой составляющей, если таковая присутствует [9].

4. Примеры использования командами на местах вышеназванных инструментов

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

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

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

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

То есть можно сказать, что использование DevOps инструментов на различных этапах разработки ПО помогает командам повысить продуктивность, уменьшить количество ошибок и улучшить качество конечного продукта за счет автоматизации и улучшенной координации между командами разработки и операций [10-12].

Можно привести следующий реальный пример, когда полевая группа успешно использовала DevOps инструменты.

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

Решение: внедрение инфраструктуры как кода (IaC).

Чтобы решить эти проблемы, банк приступил к реализации практики Infrastructure as Code (IaC). IaC подразумевает определение и управление конфигурациями инфраструктуры с помощью кода, что позволяет автоматизировать предоставление, настройку и масштабирование инфраструктурных ресурсов. Ключевые компоненты решения IaC включали в себя:

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

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

Конвейеры автоматизации: команда интегрировала чертежи IaC в существующие конвейеры CI/CD. Теперь при каждом изменении кода в репозитории IaC конвейеры автоматически применяли изменения к инфраструктуре.

Контроль версий: как и код приложений, код IaC был помещён под контроль версий с помощью Git. Это позволило команде отслеживать изменения, эффективно сотрудничать и при необходимости откатывать изменения.

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

Также можно привести некоторые конкретные цифры и статистические данные, свидетельствующие об эффективности инструментов DevOps.

1. Применение DevOps в компании онлайн-финансовой торговли. В финансовой торговой компании была автоматизирована методология тестирования, создания и разработки. С помощью DevOps развертывание стало осуществляться в течение 45 секунд. Раньше на эти действия у сотрудников уходили долгие ночи и выходные.

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

3. Применение в автомобилестроении. Используя DevOps, сотрудники помогли автопроизводителям выявлять ошибки при масштабировании производства, что раньше было невозможно.

4. Преимущества для авиационной промышленности. Благодаря использованию DevOps компания United Airlines сэкономила 500 ООО долларов, перейдя на стандарты непрерывного тестирования. Она также увеличила покрытие кода на 85%.

5. Преимущество DevOps в снижении количества ошибок. DevOps позволил сократить количество ошибок на 35%, а во многих случаях ошибок в предпроизводстве - до 4О%. Используя DevOps, финансовая компания смогла предоставлять клиентам приложения лучшего качества за меньшее время, поскольку значительно сократила время, необходимое для регрессионного тестирования.

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

1. Расширения GitHub Copilot: Расширение возможностей разработчиков с помощью Azur. Например, расширение позволяет говорить и задавать вопросы на естественном языке, ссылаясь на @Azur, например:

«@ Azur, как мне развернуть веб-приложение в Азуре?», и GitHub Copilot предоставит фрагменты кода и инструкции по развертыванию веб-приложения в Azur.

«@ Azur, сколько у меня учетных записей хранения?», и GitHub Copilot предоставит подробную информацию об учетных записях хранения.

2. Расширение возможностей разработки искусственного интеллекта (ИИ) с помощью Visual Studio Code.

Инструментарий AI Toolkit для Visual Studio Code, который сейчас находится в предварительной версии, объединяет инструменты и модели для разработки ИИ, чтобы упростить разработку и развертывание интеллектуальных приложений. Этот инструментарий позволяет инженерам по ИИ эффективно развертывать свои модели в Microsoft Azure AI Studio, а также на других платформах, используя образы контейнеров.

Заключение

Таким образом, инструменты DevOps играют решающую роль в повышении эффективности и надежности разработки программного обеспечения для полевых команд. Практики непрерывной интеграции и непрерывной поставки (CI/CD) автоматизируют ключевые этапы разработки, снижая количество ошибок и ускоряя выпуск продуктов. Инструменты, такие как Jenkins, Vagrant, Nagios, и Docker, обеспечивают автоматизацию процессов, мониторинг, управление

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

Литература

1. What is DevOps? [Электронный ресурс] Режим доступа: https://devopstales.github.io/devops/what-is-devops/ (дата обращения 16.05.2024).

2. DevOps общая характеристика. [Электронный ресурс] Режим доступа: https://learn.microsoft.com/ru-ru/devops/what-is-devops (дата обращения 16.05.2024).

3. Практики и инструменты DevOps. [Электронный ресурс] Режим доступа: https://fish-train.github.io/DevOps_Docs/DevOps/tools (дата обращения 16.05.2024).

4. 10 полезных приложений, которые пригодятся DevOps-ин-женерам. [Электронный ресурс] Режим доступа: https://www.itweek.ru/management/article/detail.php?ID=195874 (дата обращения 16.05.2024).

5. Инструменты в повседневной работе DevOps-инженера. [Электронный ресурс] Режим доступа: https://tproger.ru/articles/instrumenty-v-povsednevnoj-rabote-devops-inzhenera (дата обращения 16.05.2024).

6. Обзор инструментов DevOps. [Электронный ресурс] Режим доступа: https://efsol.ru/promo/devops-tools/ (дата обращения 16.05.2024).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

7. 32 Best DevOps Tools Every Tech Pro Needs in 2024. [Электронный ресурс] Режим доступа: https://www.simplilearn.com/tutorials/devops-tutorial/devops-tools (дата обращения 16.05.2024).

8. Top DevOps AI Tools in 2024. [Электронный ресурс] Режим доступа: https://www.geeksforgeeks.org/devops-ai-tools/ (дата обращения 16.05.2024).

9. Отчет DORA за 2019 год: как повысить эффективность DevOps. [Электронный ресурс] Режим доступа: https://habr.com/ru/companies/vk/articles/483444/ (дата обращения 16.05.2024).

10. DevOps Tools. [Электронный ресурс] Режим доступа: https://www.atlassian.com/devops/devops-tools (дата обращения 16.05.2024).

11. 17 DevOps Tools to Know. [Электронный ресурс] Режим доступа: https://builtin.com/software-engineering-perspectives/devops-tools (дата обращения 16.05.2024).

12. Top 10 DevOps Projects with Source Code. [Электронный ресурс] Режим доступа: https://www.geeksforgeeks.org/devops-projects/ (дата обращения 16.05.2024).

Overview of DevOps Tools in Software Development for Field Teams

Slabakov D.E.

New Mining Company

JEL classification: C10, C50, C60, C61, C80, C87, C90

The review examines the key DevOps tools used in software development for field teams. DevOps, as an integration philosophy, is aimed at automation and synergetic interaction between developers and IT teams, which significantly increases the efficiency and reliability of processes at all stages of the application lifecycle. The most important DevOps practices include continuous integration (CI) and continuous delivery (CD), which provide automation of builds, deployments and testing, which allows you to accelerate the release of software products and improve their quality. Various tools such as Jenkins, Vagrant, Nagios, Sumo Logic, Git, Kubernetes, Docker and others are considered, each of which contributes to automation, monitoring, management and optimization of software development and operation. These tools support the creation of reliable, scalable, and high-performance systems necessary for the effective operation of field teams.

Keywords: DevOp, software, DevOps tools, modern technologies, IT.

References

1. What is DevOps? [Electronic resource] Access mode:https://devopstales.github.io/devops/what-is-devops / (accessed 05/16/2024).

2. DevOps general characteristics. [Electronic resource] Access mode: https://learn.microsoft.com/ru-ru/devops/what-is-devops (accessed 05/16/2024).

3. DevOps practices and tools. [Electronic resource] Access mode: https://fish-train.github.io/DevOps_Docs/DevOps/tools (accessed 05/16/2024).

4. 10 useful applications that will be useful for DevOps engineers. [Electronic resource] Access mode: https://www.itweek.ru/management/article/detail.php?ID=195874 (accessed 05/16/2024).

5. Tools in the daily work of a DevOps engineer. [Electronic resource] Access mode: https://tproger.ru/articles/instrumenty-v-povsednevnoj-rabote-devops-inzhenera (accessed 05/16/2024).

6. Overview of DevOps tools. [Electronic resource] Access mode: https://efsol.ru/promo/devops-tools / (accessed 05/16/2024).

7. The 32 best DevOps tools that every tech professional will need in 2024. [Electronic resource] Access mode: https://www.simplilearn.com/tutorials/devops-tutorial/devops-tools (accessed 05/16/2024).

8. The best DevOps artificial intelligence tools in 2024. [Electronic resource] Access mode: https://www.geeksforgeeks.org/devops-ai-tools / (accessed 05/16/2024).

9. Happy New Year 2019: how to improve the efficiency of DevOps. [Electronic resource] Access mode: https://habr.com/ru/companies/vk/articles/483444 / (accessed 05/16/2024).

10. DevOps tools. [Electronic resource] Access mode: https://www.atlassian.com/devops/devops-tools (accessed 05/16/2024).

11. 17 DevOps tools you need to know. [Electronic resource] Access mode: https://builtin.com/software-engineering-perspectives/devops-tools (accessed 05/16/2024).

12. Top 10 DevOps projects with source code. [Electronic resource] Access mode: https://www.geeksforgeeks.org/devops-projects / (accessed 05/16/2024).

X X

о го А с.

X

го m

о

to о

to ■р»

i Надоели баннеры? Вы всегда можете отключить рекламу.