Что такое DevOps?

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

Определение DevOps

DevOps — это сочетание разработки (Dev) и эксплуатации (Ops). Это объединение людей, процессов и технологий, позволяющее постоянно предоставлять преимущества клиентам.

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

Преимущества DevOps

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

Быстрый выход на рынок

Адаптация к условиям рынка и конкурентной среде

Поддержание стабильности и надежности системы

Сокращение среднего времени восстановления

DevOps и жизненный цикл приложений

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

План

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

Разработка

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

Доставка

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

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

Использование

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

Культура DevOps

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

Совместная работа, прозрачность и согласованность

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

Изменения в сфере участия и ответственности

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

Сокращение циклов выпуска

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

Непрерывное обучение

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

Узнайте, как команды в Майкрософт внедрили культуру DevOps

Дополнительные сведения

Методики DevOps

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

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

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

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

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

Управление версиями

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

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

Управление версиями также является необходимым элементом в других методиках, таких как непрерывная интеграция и инфраструктура как код.

Подробнее о Git

Гибкая разработка программного обеспечения

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

С гибкой методикой связаны две популярные концепции — канбан и Scrum.

Инфраструктура как код

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

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

Управление конфигурацией

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

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

Непрерывный мониторинг

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

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

Инструменты DevOps

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

DevOps и облако

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

Облачная гибкость

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

Kubernetes

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

Бессерверные вычисления

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

Начало перехода на DevOps

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

Часто задаваемые вопросы

  • DevOps практикуется в различных подразделениях организации и требует тесного сотрудничества некоторых из них. В большинстве случаев в DevOps участвуют подразделения разработки, ИТ, эксплуатации, безопасности и поддержки.
  • Применение DevOps не ограничивается одной должностью. Все участники этапов жизненного цикла приложения должны принять культуру DevOps. Тем не менее в некоторых организациях существуют сотрудники или подразделения, единственной задачей которых является обеспечение автоматизации, определение методик и реализация конвейеров CI/CD. Иногда должности этих сотрудников официально называются "инженер DevOps" или "специалист по DevOps".
  • Внедрение DevOps в крупной организации может оказаться чрезвычайно сложной задачей. Чтобы изменить культуру крупной организации, а также стандартизировать применяемые в ней процессы и инструменты, необходимы терпение и настойчивость. В большинстве крупных организаций есть ранние последователи DevOps. По мере того как эти практики совершенствуются и приносят положительные результаты, подключаются и другие команды и начинают свой переход на DevOps.

    Узнайте, как команды в Майкрософт внедрили культуру DevOps.

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