Close

Что такое культура DevOps?

Как культура DevOps помогает сделать сотрудников, процессы и инструменты единым механизмом и акцентировать работу с клиентами.

Портрет Тома Холла
Том Холл

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


Совместная работа

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

Сотрудники и культура — это главные факторы успешного внедрения DevOps.
Опрос Atlassian «Тенденции DevOps» за 2020 год

Что такое культура DevOps?


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

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

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

Логотип: осознанное мышление
Связанные материалы

Привыкайте прежде всего думать о клиенте

Логотип: награда
Связанные материалы

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

DevOps подразумевает общую ответственность. Успехи и неудачи продукта — это результат усилий не только разработчиков, но и инженеров по эксплуатации. Ожидается, что разработчики будут не просто создавать продукт и передавать его в эксплуатацию, но и осуществлять контроль над продуктом на протяжении всего срока его службы в соответствии с принципом «кто разработал, тот и поддерживает». Им нужно тестировать программное обеспечение и заниматься его эксплуатацией, а также более активно сотрудничать с командами контроля качества и ИТ. Когда разработчики понимают, с какими проблемами сталкиваются команды по эксплуатации, они стараются облегчить развертывание и техническое обслуживание продукта. Кроме того, если команда по эксплуатации усвоит бизнес-цели системы, она сможет помочь разработчикам определить эксплуатационные требования к системе и внедрить инструменты автоматизации.

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

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

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

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

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

В чем преимущества культуры DevOps?


Наиболее очевидное и значительное преимущество внедрения культуры DevOps — это оптимизированные, частые и качественные релизы ПО. Так повышается не только эффективность работы компании, но и удовлетворенность сотрудников.

Согласно книге Accelerate: Building and Scaling High Performing Technology Organizations (Ускоряйся! Как создавать и масштабировать высокопроизводительные технологические организации), культура DevOps способствует укреплению доверия и развитию сотрудничества, повышает качество принятия решений и даже уровень удовлетворенности работой.

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

В чем трудности?


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

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

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

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

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

Рекомендации по переходу к культуре DevOps


Открытая коммуникация

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

Возможность совершать ошибки

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

В прошлом такое мышление привело к навязчивой идее измерять «среднее время наработки на отказ» (MTBF) вместо «среднего времени восстановления» (MTTR). Для расчета показателя MTBF используют такие инструменты, как «анализ основных причин», чтобы определить источник отказов и попытаться предотвратить их повторение. Показатель MTTR отражает восприятие программных приложений как сложных систем, которые могут непредсказуемо выходить из строя, и ориентирован на быстрое восстановление в случае отказа.

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

Разбор неудач без поиска виновных эффективен в том числе благодаря установке на развитие. С ее помощью можно признать, что ошибки случаются, а также что сотрудники и организации способны учиться, расти и совершенствоваться.
— книга Effective DevOps (Эффективность DevOps) за авторством Дженнифер Дэвис и Кэтрин Дэниэлс

Новый набор процессов

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

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

В большинстве случаев использование того или иного варианта магистральной разработки значительно упрощает работу с CI/CD. В этой модели команда избавляется от долгосрочных функциональных веток и часто отправляет коммиты в «магистральную» ветку кода.

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

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

Методика непрерывной поставки применяется во всей организации. Она объединяет для поставки продукта технические и нетехнические отделы, например команду проектирования, маркетинга и команду по продукту. В тех условиях, где методика CD не используется, поощряют стремление разработчиков самоустраниться от участия в дальнейшем процессе: они прежде всего ориентируются на команду контроля качества. Это означает, что «магистральная» ветка вашего репозитория постоянно находится в состоянии готовности к развертыванию.

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

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

Обновленный пакет инструментов

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

DevOps — это культурный сдвиг, приносящий результаты


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

Опросив организации, следующие принципам DevOps, компания Atlassian обнаружила, что им удалось улучшить качество поставляемых продуктов (61 %), повысить частоту развертываний и ускорить выход на рынок (49 %). Стоит отметить, что этот подход приносит пользу не только организациям: специалисты заявили, что приобрели новые навыки (78 %) и получили повышение (48 %).

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

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

Tom Hall
Tom Hall

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


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

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

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

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

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

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

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

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

Thank you for signing up