Поделиться через


Что такое DevOps?

DevOps объединяет разработку (dev) и операции (Ops) для объединения людей, процессов и технологий в планировании приложений, разработке, доставке и операциях. DevOps обеспечивает координацию и совместную работу между ранее разложенными ролями, такими как разработка, ИТ-операции, проектирование качества и безопасность.

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

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

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

На следующей схеме показаны этапы образа жизни приложения DevOps:

Conceptual diagram that illustrates the DevOps application lifecycle.

Цели и преимущества DevOps

Когда команда принимает культуру, методики и инструменты DevOps, они могут достичь удивительных вещей:

Сокращение времени до выхода на рынок

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

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

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

Обеспечение стабильности системы и надежности

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

Улучшение среднего времени восстановления

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

Внедрение языка и региональных параметров DevOps

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

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

Diagram of Microsoft's live site culture.

Ниже приведены основные компоненты языка и региональных параметров DevOps:

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

Реализация методик DevOps

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

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

Непрерывная интеграция (CI) — это практика, используемая командами разработчиков для автоматизации, слияния и тестирования кода. CI помогает перехватывать ошибки в начале цикла разработки, что делает их менее дорогостоящими для устранения. Автоматические тесты выполняются в рамках процесса CI, чтобы обеспечить качество. Системы CI создают артефакты и кормят их для выпуска процессов для частого развертывания.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Планирование

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

  • Создание невыполненных работ.
  • Отслеживание ошибок.
  • Управление разработкой программного обеспечения Agile с помощью Scrum.
  • Используйте доски Kanban.
  • Визуализировать ход выполнения с помощью панелей мониторинга.

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

Разработка

Этап разработки включает все аспекты разработки кода программного обеспечения. На этом этапе команды DevOps выполняют следующие задачи:

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

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

Общие сведения о методиках разработки, принятых Корпорацией Майкрософт для поддержки перехода на DevOps, см. в статье "Разработка Майкрософт с помощью DevOps".

Доставка

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

На этапе доставки команды DevOps:

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

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

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

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

Operations

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

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

Методы, которые Корпорация Майкрософт использует для работы сложных онлайн-платформ, описаны в разделе "Как Корпорация Майкрософт работает с надежными системами с devOps".

Следующие шаги

Другие ресурсы

Обучение и сертификация