Close

Конвейер DevOps

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

Фотография: Кришна Сай
Том Холл

Консультант и специалист по DevOps


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

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

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

Что такое конвейер DevOps?


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

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

Значок соединенных колец
Связанные материалы

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

Значок: инструменты
Связанные материалы

Подробнее об инструментах DevOps

Рекомендации по созданию конвейера DevOps


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

Кроме того, каждая организация формирует свой стек технологий, который может повлиять на процесс. Например, если база кода — node.js, в число факторов войдет использование локального прокси-реестра npm, загрузка исходного кода, частота запуска npm install и генерация артефактов, которые перемещаются по конвейеру. Если приложение разработано на основе контейнеров, необходимо учитывать, какой реестр контейнеров используется: локальный или удаленный; собирается ли контейнер один раз или перестраивается на каждом этапе конвейера.

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

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

Компоненты конвейера DevOps


Непрерывная интеграция/непрерывная поставка/развертывание (CI/CD)

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

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

Непрерывная поставка гарантирует, что главная ветка, или «магистраль», исходного кода приложения всегда готова для выпуска релиза. Другими словами, если в пятницу в 16:30 руководство сообщает о том, что релиз последней версии нужно выпустить прямо сейчас, вы можете выполнить развертывание этой версии одним нажатием кнопки, не боясь сбоев и ошибок.

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

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

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

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

Непрерывная обратная связь

Самая большая проблема старой каскадной модели разработки ПО (которая и стала причиной создания методологии Agile) — отсутствие своевременной обратной связи. Когда разработка и внедрение новых возможностей занимает месяцы и даже годы, конечный продукт почти наверняка не будет соответствовать ожиданиям клиента. Благодаря Agile у разработчиков появилась возможность получать обратную связь от заинтересованных сторон гораздо быстрее. Сегодня, с применением подхода DevOps, разработчики получают непрерывную обратную связь не только от заинтересованных сторон, но и из отчетов систематического тестирования и мониторинга кода в конвейере.

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

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

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

Непрерывная эксплуатация

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

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

Заключение


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

Хотите узнать больше о непрерывной поставке? Ознакомьтесь с нашими обучающими материалами по непрерывной поставке с помощью Bitbucket. Вы научитесь выполнять сборку, тестирование и развертывание с помощью интегрированного конвейера CI/CD. Обучающие материалы помогут организовать непрерывную поставку с помощью Bitbucket как новичкам, так и профессионалам. Уже готовы начать? Приступите к работе с Bitbucket Pipelines бесплатно.

Tom Hall
Tom Hall

Том Холл — специалист по DevOps и евангелист этой методики, а также заядлый читатель и пианист-любитель.
В числе его достижений за последние 20 лет — сертификации Novell, EMC, VMware и AWS. Он помог организовать конференцию DevOpsDays в Атланте в 2016 году и в последующих годах — в Остине, штат Техас.


Поделитесь этой статьей

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

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

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Семинар по моделированию

Рисунок: карта

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

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

Thank you for signing up