Статьи
Обучающие материалы
Интерактивные руководства
Конвейер 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
1. Непрерывная интеграция / непрерывная поставка / развертывание (CI/CD)
Непрерывная интеграция — это методика частых коммитов в общий репозиторий исходного кода. Изменения в коде непрерывно интегрируются в существующую базу кода: это позволяет быстро и относительно просто устранять любые конфликты между изменениями кода. Эта методика крайне важна для повышения эффективности развертывания.
Мы уверены, что магистральная разработка — обязательное условие непрерывной интеграции. Если частые коммиты в общую ветку в центральном репозитории исходного кода не выполняются, говорить о непрерывной интеграции нельзя. Если процессы сборки и тестирования автоматизированы, но разработчики занимаются изолированными, долгосрочными функциональными ветками, редко интегрируемыми в общую ветку, это также нельзя назвать непрерывной интеграцией.
Непрерывная поставка гарантирует, что главная ветка, или «магистраль», исходного кода приложения всегда готова для выпуска релиза. Другими словами, если в пятницу в 16:30 руководство сообщает о том, что релиз последней версии нужно выпустить прямо сейчас, вы можете выполнить развертывание этой версии одним нажатием кнопки, не боясь сбоев и ошибок.
Для этого необходима предпроизводственная среда, максимально приближенная по условиям к рабочей, а также система автоматического тестирования, которая способна выявить любую уязвимую переменную до слияния кода с «магистралью» или главной веткой.
Непрерывное развертывание подразумевает такой качественный уровень непрерывного тестирования и эксплуатации, при котором новые версии ПО проверяются и развертываются в рабочей среде без вмешательства человека.
Это редкая и маловостребованная практика. Подобный уровень автоматизации может понадобиться только компании с многомиллиардным капиталом, в штате которой состоят сотни или тысячи разработчиков и которая ежедневно выпускает большое число релизов.
Чтобы понять разницу между непрерывной поставкой и непрерывным развертыванием, представьте, что поставка — это такая ситуация, когда курьер FedEx вручает вам коробку с товаром, а развертывание — это когда вы заглядываете в коробку и используете товар. Если в период между получением коробки и заглядыванием внутрь потребуется внести изменения в товар, у производителя возникнут проблемы.
2. Непрерывная обратная связь
Самая большая проблема старой каскадной модели разработки ПО (которая и стала причиной создания методологии Agile) — отсутствие своевременной обратной связи. Когда разработка и внедрение новых возможностей занимают месяцы и даже годы, конечный продукт почти наверняка не будет соответствовать ожиданиям клиента. Благодаря Agile у разработчиков появилась возможность получать обратную связь от заинтересованных сторон гораздо быстрее. Сегодня, с применением подхода DevOps, разработчики получают непрерывную обратную связь не только от заинтересованных сторон, но и из отчетов систематического тестирования и мониторинга кода в конвейере.
Непрерывное тестирование — критически важный компонент любого конвейера DevOps и один из основных механизмов непрерывной обратной связи. В процессе DevOps изменения, которые вносятся при разработке, непрерывно подвергаются тестированию и развертыванию, что приводит не только к ускорению выпуска релизов, но и к повышению качества продукта. Такой процесс подразумевает проведение автоматических тестов на всех этапах конвейера. К ним относятся модульные тесты, которые выполняются при каждом изменении сборки, Smoke-тесты, а также функциональные и сквозные тесты.
Непрерывный мониторинг — еще один важный компонент непрерывной обратной связи. Подход DevOps предполагает непрерывный мониторинг в промежуточной и тестовой средах, а также в среде разработки. Иногда бывает полезно отследить аномальное поведение предпроизводственных сред, но в целом такой подход используется для непрерывной оценки работоспособности и производительности приложений непосредственно в рабочей среде.
Для реализации этой задачи существует множество инструментов и служб, которые выполняют самые разнообразные функции, в том числе мониторинг локальных и облачных инфраструктур (ресурсы сервера, сеть), производительности приложения и его API-интерфейсов.
3. Непрерывная эксплуатация
Непрерывная эксплуатация — относительно новый и менее распространенный термин, единого определения которому еще нет. Один из вариантов интерпретации — «непрерывная бесперебойная работа». Например, в случае сплит-подхода элементы развертываются в двух отдельных рабочих средах: так называемой «синей» (общедоступной) и «зеленой» (ограниченного доступа). Сначала новый код развертывается в «зеленой» среде, а после подтверждения его работоспособности переключается балансировщик нагрузки и из «синей» системы в «зеленую» переводится большее число пользователей. Это позволяет защитить конечных пользователей от перебоев в работе.
Еще один компонент непрерывной эксплуатации — непрерывное оповещение. Это означает, что среди сотрудников есть дежурные разработчики, которые получают уведомления при возникновении любых аномалий в приложении или инфраструктуре. В большинстве случаев непрерывное оповещение тесно связано с непрерывным мониторингом.
Заключение
DevOps — это оптимизация разработки, развертывания и эксплуатации программного обеспечения. Конвейер DevOps позволяет реализовать идеи оптимизации и принцип непрерывности во всем, от интеграции кода до эксплуатации приложения.
Хотите узнать больше о непрерывной поставке? Ознакомьтесь с нашими обучающими материалами по непрерывной поставке с помощью Bitbucket. Вы научитесь выполнять сборку, тестирование и развертывание с помощью интегрированного конвейера CI/CD. Обучающие материалы помогут организовать непрерывную поставку с помощью Bitbucket как новичкам, так и профессионалам. Уже готовы начать? Приступите к работе с Bitbucket Pipelines бесплатно.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.