Что пишут в блогах

Подписаться

Что пишут в блогах (EN)

Разделы портала

Онлайн-тренинги

.
Улучшение инфраструктуры автоматизации при помощи навыков DevOps
06.05.2025 00:00

Автор: Сарит Вакрат (Sarit Vakrat)
Оригинал статьи
Перевод: Ольга Алифанова

В динамическом мире разработки ПО очень важна способность эффективно масштабировать и оптимизировать процессы. Работая над улучшением инфраструктуры нашей автоматизации в Glassbox, мы пришли к применению возможностей DevOps, Groovy, скриптов DSL и AWS EC2 Jenkins-агентов. Эта комбинация позволила создать масштабируемую и устойчивую систему, способную на запуск более чем 1000 задач в день, что дает нам высокую производительность и надежность.


Проблема

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

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

Применение навыков DevOps

Первым шагом трансформации инфраструктуры автоматизации стало внедрение принципов DevOps. Ключевые практики DevOps, сыгравшие критически важную роль:

  1. Инфраструктура как код (IaC). Обращаясь с конфигурацией инфраструктуры, как с кодом, мы автоматизировали резервирование ресурсов и управление ими. Этот подход помог нам создавать воспроизводимые и единообразные окружения, снизить количество ручных ошибок и повысить надежность. Для этого мы перенесли запуск всех задач в Groovy, снижая необходимую задачам поддержку. Для создания задач мы использовали скрипт DSL, динамически генерирующий задачи.
  2. Интеграция CI/CD. Эти изменения позволили интегрировать автоматизацию в пайплайны CI/CD, повысить качество и сдвинуться влево, чтобы раньше отлавливать проблемы.
  3. Комплексный мониторинг. Внедрение устойчивых систем мониторинга и логирование дало нам возможность в реальном времени оценивать производительность системы, позволяя проактивно решать проблемы и оптимизировать работу. Мы создали сложный дашборд в Grafana, демонстрирующий нам производительность Jenkins, здоровье и ресурсы в любой момент времени.

 

  1. Система предупреждения. Добавление уведомлений Slack для проблем снизило риск их позднего обнаружения и оптимизировало процессы и дебаг.

Groovy и DSL-скрипты: совершенствование автоматизации

Скрипты Groovy и Jenkins DSL (доменно-специфичный язык) очень помогли в автоматизации и масштабировании задач Jenkins.

Используя скрипты Jenkins DSL, мы программно задавали настройки задач. Этот подход помог управлять определениями задач с контролем версий, что упростило дублирование и изменение задач в разных окружениях. Так как у нас много различных потребностей, это сберегло много времени и стало хорошей устойчивой практикой.

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

AWS EC2 Jenkins-агенты: добиваемся масштабируемости

Для решения вопроса масштабируемости мы использовали копии AWS EC2 как агенты (слейвы) Jenkins. У этого подхода был ряд преимуществ:

  1. Создание резервов. Используя AWS EC2, мы можем динамически резервировать слейвы Jenkins на основании текущей загрузки. Это позволяет убедиться, что у нас есть необходимые для работы с пиковой нагрузкой ресурсы, и отсутствует чрезмерное резервирование в более спокойные периоды.
  2. Снижение издержек. Возможность масштабировать ресурсы вверх и вниз в зависимости от спроса значительно сократила издержки. Мы платим только за использованные ресурсы, оптимизируя свои расходы.
  3. Очень важный для нас момент – высокая доступность. AWS EC2 дает надежную и хорошо доступную инфраструктуру – наши агенты Jenkins всегда готовы к работе и могут эффективно справиться с очередью задач.

Узнать о плагине больше можно тут.

Результаты

Интеграция навыков DevOps, Groovy и DSL-скриптов и AWS EC2 Jenkins-агентов привели к значительным улучшениям инфраструктуры нашей автоматизации:

  • Повышенная эффективность. Автоматизация настройки задач и управления ими снизила ручное вмешательство, рационализируя наши процессы.
  • Масштабируемость. Динамическое резервирование агентов Jenkins позволило бесшовно справляться с более чем 100 задачами в день, адаптируясь под вариации нагрузки.
  • Надежность. Устойчивый мониторинг и логирование дали нам высокую надежность системы и способность быстро решать проблемы.
  • Снижение издержек. Оптимизированное использование ресурсов привело к значительной экономии – мы избежали чрезмерного резервирования и платим только за то, чем действительно пользуемся.
  • Оповещения и мониторинг. Позволили нам узнавать о проблемах, как только они возникают, и быстро их решать.

Заключение

Используя продвинутые практики DevOps, Groovy, DSL-скрипты, Grafana и AWS EC2 Jenkins-агенты, мы трансформировали инфраструктуру нашей автоматизации в масштабируемую, эффективную и надежную систему. Это преображение не только отвечает нашим текущим нуждам, но также позволяет уверенно справляться с будущими задачами и сохранять прекрасное качество наших процессов разработки.

Обсудить в форуме