Close

DevOps

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

Что такое DevOps?


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

Движение DevOps возникло примерно в 2007 году, когда сообщества разработчиков программного обеспечения и ИТ-специалистов заговорили о проблемах в традиционной модели разработки программного обеспечения. В соответствии с этой моделью разработчики, писавшие код, работали независимо от инженеров по эксплуатации, которые занимались развертыванием и поддержкой этого кода. Термин DevOps является комбинацией двух слов — development (разработка) и operations (эксплуатация) — и отражает процесс объединения этих практик в один непрерывный процесс.

Как работает DevOps?


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

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

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

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

Жизненный цикл DevOps


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

Знак бесконечности DevOps

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

Значок лупы

Исследуйте

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

Планируйте

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

Сборка

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

Значок контрольного списка

Тест

Непрерывная интеграция (CI) позволяет нескольким разработчикам помещать код в один общий репозиторий. При слиянии изменений выполняется автоматическое тестирование для проверки правильности кода перед интеграцией. Слияние и тестирование кода часто помогают командам разработчиков убедиться в качестве и предсказуемости развертываемого кода.

Значок ракеты

Развертывание

Непрерывное развертывание (CD) позволяет командам часто и в автоматизированном режиме выпускать в рабочую среду новые возможности. Кроме того, команды могут использовать при развертывании флажки возможностей, чтобы поставлять пользователям новый код постепенно и методично, а не весь сразу. Такой подход увеличивает скорость, производительность и стабильность работы команд разработчиков ПО.

Значок с шестеренками

Эксплуатация

Управляйте комплексным предоставлением ИТ-услуг клиентам. Это касается методик, связанных с проектированием, внедрением, настройкой, развертыванием и техническим обслуживанием всей ИТ‑инфраструктуры, которая обеспечивает поддержку услуг организации.

Значок глаза

Наблюдение

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

Обратная связь DevOps

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

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

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


Знак бесконечности DevOps

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

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

Примером открытого пакета инструментов DevOps является решение Atlassian Open DevOps, которое включает Jira в качестве базового продукта и интегрируется с приложениями ведущих поставщиков и приложениями Marketplace.

Каковы преимущества DevOps?


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

Спидометр

Скорость

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

Видеозвонок

Более эффективная совместная работа

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

Ракета выпуска кода

Быстрое развертывание

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

Конвейер кода

Качество и надежность

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

Щит безопасности

Безопасность

После внедрения безопасности в конвейер непрерывной интеграции, непрерывной поставки и непрерывного развертывания DevSecOps становится активной и неотъемлемой частью процесса разработки. Безопасность встраивается в продукт путем внедрения активных проверок и тестирования безопасности в рабочие процессы agile-разработки и DevOps.

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


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

Кавычка

DevOps — это задача не для одного человека. Это задача для всех сотрудников.

Роберт Крон

Технический руководитель отдела DevOps в Atlassian

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

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

Как внедрить DevOps


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

Культура DevOps

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

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

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

Гибкая методология Agile

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

Методики DevOps


Непрерывная интеграция

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

Непрерывная поставка

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

Ситуационная осведомленность

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

Автоматизация

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

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

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

Микросервисы

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

Глаз

Мониторинг

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

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

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

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

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

Рисунок: семинар по DevOps