Close

Автоматизация развертывания: в чем суть и с чего начать


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

Непрерывное развертывание охватывает весь процесс передачи изменений кода с из среды разработки в рабочую среду. В него входят: автоматическое развертывание, непрерывная интеграция (CI), непрерывное тестирование (CT) и непрерывная обратная связь. Автоматическое развертывание унифицирует и оптимизирует внесение изменений в код на всех этапах цикла разработки программного обеспечения. Система автоматически собирает, упаковывает, тестирует и выпускает новые слияния кода на промежуточных серверах. Для более поздних выпусков может потребоваться подтверждение вручную. Команды могут автоматизировать среду разработки, контроля качества, промежуточную и рабочую среды, опираясь на свои нужды.

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

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

Что такое автоматизация развертывания?


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

Автоматизация развертывания и CI/CD

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

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

См. решение

Инструменты для высококлассной команды DevOps

Связанные материалы

Важность структуры команды в DevOps

Преимущества автоматизации развертывания


Автоматизация развертывания имеет ряд весомых преимуществ.

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

Key principles

DevOps approaches business problems with collaboration, automation, and integration. 

One of DevOps’ primary goals is continuous delivery. Lean and agile software development methodologies strive to deliver value to customers continuously. Automation and integration support smaller, more focused releases, which help businesses increase velocity without compromising reliability. 

Lean and agile development teams share ideas, work together to deliver solutions, and continuously improve products and processes. DevOps’ commitment to cross-functional collaboration throughout the product lifecycle makes it a natural fit for Lean and agile teams. 

Jira Software’s Open DevOps supports agile teams focused on shipping and operating high-quality software with out-of-the-box Open DevOps features.

Как выполнять автоматическое развертывание


Автоматическое развертывание — неотъемлемый компонент конвейера DevOps. Оно помогает уменьшить количество человеческих ошибок, повысить производительность команды и сократить циклы итераций.

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

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

  1. Выполняется коммит изменений кода в систему контроля версий, например Git.
  2. Коммит кода инициирует процесс автоматизированной сборки.
  3. Выполняется автоматическое тестирование артефактов новой сборки.
  4. Если тесты проходят успешно, артефакты сборки развертываются в промежуточной среде для дальнейшего тестирования.
  5. После подтверждения изменения развертываются в рабочей среде.
  6. Собираются показатели для отслеживания развертывания.

Для упрощения процесса воспользуйтесь Open DevOps или Bitbucket Pipelines. Open DevOps — это комплексная платформа автоматизации с широкими возможностями совместной работы. Она позволяет поддерживать проекты с возрастающей сложностью, снижая влияние человеческих ошибок и повышая производительность.

Bitbucket Pipelines предоставляет возможность непрерывной интеграции с репозиториями Bitbucket. Инструмент поддерживает управление версиями по модели «конфигурация как код». Встроенная интеграция в среду Bitbucket способствует удобной совместной работе и трассируемости кода.

Focus

SRE focuses on the stability of the tools and features in production. It seeks to maintain low failure rates and high reliability for end users. This includes system scalability and robustness.

DevOps focuses on using a collaborative approach for building tools and features. It strives to identify and implement the best ideas by including the development and operations teams.

Responsibilities

SRE’s primary responsibility is system reliability. Regardless of the features deployed to production, SRE ensures they don't cause infrastructure issues, security risks, or increased failure rates.

DevOps is responsible for building the features necessary to meet customer needs. Unlike older approaches, DevOps increases its efficiency through collaboration across the development and operations teams.

Objectives

SRE strives for robust and reliable systems that allow customers to perform their jobs without disruption.

DevOps aims to deliver customer value through streamlining the product development lifecycle and accelerating the rate of product releases.

Team structure

SRE teams are often highly specialized with a much narrower focus than DevOps teams. SRE may include security specialists whose primary concern is protecting business data and complying with regulations.

DevOps, however, integrates and collaborates across development and operations to collect and implement the best possible solutions. With more varied input, teams can identify and solve problems before they reach production.

Process flow

SRE views the production environment as a highly-available service. Its processes focus on increasing reliability and decreasing failures. This could include security threats and failures from newly deployed features and integrations.

DevOps operates like an Agile development team. It designs processes for continuous integration and faster delivery. This includes breaking large projects into smaller chunks of work and generating and prioritizing ideas based on customer value.

Инструменты автоматизации развертывания


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

Компания Atlassian предоставляет инструменты автоматизации развертывания, которые органично сочетаются друг с другом: Jira Product Discovery, Jira Software и Bitbucket Pipelines.

Jira Product Discovery — это инструмент для расстановки приоритетов и составления дорожных карт, помогающий командам планировать дальнейшую разработку.

Jira Software — инструмент управления проектами, с помощью которого удобно отслеживать прогресс их реализации.

Bitbucket Pipelines — это платформа непрерывной интеграции (CI) и непрерывной поставки (CD), которая автоматизирует весь процесс от тестирования до развертывания.

Начните работать с Bitbucket Pipelines и автоматизируйте развертывание для репозиториев.

Типичные проблемы, связанные с автоматизацией развертывания


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

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

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

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

Рекомендации по автоматизации развертывания


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

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

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

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

Автоматизация развертывания: часто задаваемые вопросы


С чего начать автоматизацию развертывания в компании?

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

Влияет ли автоматизация развертывания на тестирование программного обеспечения?

Автоматическое развертывание позволяет чаще проводить тестирование на ранних этапах жизненного цикла. Автоматизированное модульное, интеграционное и регрессионное тестирование проверяет изменения и помогает быстрее выявлять проблемы. Тестирование — необходимое условие для автоматизированного развертывания.

Каковы ключевые инструменты автоматизации развертывания?

Основными инструментами автоматизации развертывания служат инструменты управления конфигурацией, CI/CD и системы контроля версий.

Git предоставляет возможность совместной разработки ПО и хранения истории изменений кода для контроля версий. Самые популярные инструменты CI/CD — это Jenkins и Bitbucket Pipelines от Atlassian. Jenkins поддерживает непрерывную интеграцию и поставку для автоматизации этапов разработки программного обеспечения. Bitbucket Pipelines предоставляет интегрированные автоматизированные рабочие процессы в репозиториях Bitbucket для эффективного тестирования и развертывания.

Существует и ряд других ключевых инструментов.

  • Terraform: работает по принципу «инфраструктура как код», делая предоставление ресурсов согласованным и масштабируемым.
  • Docker: инструмент контейнеризации приложений для безотказного развертывания в различных средах.
  • Ansible: упрощает сложные процессы развертывания за счет удобной и понятной автоматизации.


Поделитесь этой статьей
Следующая тема

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Образовательные программы DevOps

Рисунок схемы

Начните работу бесплатно

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up