Что такое 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)
Управление конфигурацией — это управление состоянием ресурсов в системе, включая серверы, виртуальные машины и базы данных. Используя инструменты управления конфигурацией, команды могут контролируемо и систематически развертывать изменения, снижая риски изменения конфигурации системы. Команды используют инструменты управления конфигурацией, чтобы отслеживать состояние системы и предотвращать отклонения в конфигурации, из-за которых конфигурация системного ресурса со временем начинает отличаться от заданного для него требуемого состояния.
В сочетании с инфраструктурой как кодом определение и настройку системы можно легко шаблонизировать и автоматизировать, что позволяет упростить управление сложными средами в нужном масштабе.
Управление версиями
Управление версиями — это методика работы с кодом в версиях, то есть отслеживание исправлений и истории изменений для упрощения анализа и восстановления кода. Эта методика обычно реализуется с помощью систем управления версиями, таких как Git, которые позволяют нескольким разработчикам совместно работать над созданием кода. Эти системы обеспечивают четкий процесс объединения изменений кода в одних и тех же файлах, разрешения конфликтов и отката изменений до более ранних состояний.
Использование управления версиями является фундаментальной практикой DevOps, которая помогает командам разработчиков взаимодействовать, делить задачи по написанию кода между участниками команд и сохранять весь код для быстрого восстановления в случае необходимости.
Управление версиями также является необходимым элементом в других методиках, таких как непрерывная интеграция и инфраструктура как код.
Гибкая разработка программного обеспечения
Гибкая методика — это подход к разработке программного обеспечения, при котором особое внимание уделяется совместной работе команд, отзывам клиентов и пользователей и высокой адаптируемости к изменениям в течение коротких циклов выпуска. Команды, применяющие гибкую методику, постоянно предоставляют клиентам изменения и улучшения, собирают их отзывы, а затем учитывают пожелания и потребности клиентов и адаптируются к ним. Гибкая методика существенно отличается от других более традиционных систем, таких как каскадная методология, которая предусматривает длительные циклы выпуска с последовательными этапами. С гибкой методикой связаны две популярные концепции — канбан и Scrum.
Инфраструктура как код
Инфраструктура как код определяет системные ресурсы и топологии описательным образом, что позволяет командам управлять этими ресурсами по мере написания кода. Эти определения и их версии также могут храниться в системах управления версиями, где их можно просматривать и отзывать, как и в случае с кодом.
Использование инфраструктуры как кода помогает группам развертывать системные ресурсы надежным, воспроизводимым и контролируемым образом. Инфраструктура как код также помогает автоматизировать развертывание и снижает риск возникновения ошибок, связанных с человеческим фактором, особенно в сложных крупных средах. Это воспроизводимое надежное решение для развертывания сред позволяет командам поддерживать среды разработки и тестирования, идентичные рабочим. Дублирование сред в различные центры обработки данных и на различные облачные платформы также становится проще и эффективнее.
Управление конфигурацией
Управление конфигурацией — это управление состоянием ресурсов в системе, включая серверы, виртуальные машины и базы данных. Используя инструменты управления конфигурацией, команды могут контролируемо и систематически развертывать изменения, снижая риски изменения конфигурации системы. Команды используют инструменты управления конфигурацией, чтобы отслеживать состояние системы и предотвращать отклонения в конфигурации, из-за которых конфигурация системного ресурса со временем начинает отличаться от заданного для него требуемого состояния.
В сочетании с инфраструктурой как кодом определение и настройку системы можно легко шаблонизировать и автоматизировать, что позволяет упростить управление сложными средами в нужном масштабе.
Непрерывный мониторинг
Непрерывный мониторинг означает полное отслеживание в реальном времени производительности и работоспособности всего стека приложения — от базовой инфраструктуры, в которой выполняется приложение, до программных компонентов более высокого уровня. Процесс отслеживания состоит из сбора телеметрии и метаданных, а также настройки оповещений для предварительно определенных условий, которые требуют внимания со стороны оператора. Телеметрия содержит данные о событиях и журналы, собираемые из различных частей системы, которые хранятся в расположениях, где их можно анализировать и запрашивать.
Высокопроизводительные команды 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 и гибкая разработка не являются взаимоисключающими и часто применяются вместе.
-
Наряду с непрерывной интеграцией к методикам, которые автоматизируют этапы доставки программного обеспечения, относятся непрерывная поставка и непрерывное развертывание.