Что такое DevOps?
DevOps объединяет разработку (dev) и операции (Ops) для объединения людей, процессов и технологий в планировании приложений, разработке, доставке и операциях. DevOps обеспечивает координацию и совместную работу между ранее разложенными ролями, такими как разработка, ИТ-операции, проектирование качества и безопасность.
Teams внедряет культуру, методики и инструменты DevOps для повышения доверия к приложениям, которые они создают, лучше отвечают потребностям клиентов и достигают бизнес-целей быстрее. DevOps помогает командам постоянно предоставлять клиентам ценность, создавая более надежные продукты.
DevOps и жизненный цикл приложений
DevOps влияет на жизненный цикл приложения на протяжении всего этапа планирования, разработки, доставки и операций . Каждый этап зависит от других этапов, а этапы не зависят от ролей. Язык и региональные параметры DevOps включают все роли на каждом этапе в некоторой степени.
На следующей схеме показаны этапы образа жизни приложения DevOps:
Цели и преимущества DevOps
Когда команда принимает культуру, методики и инструменты DevOps, они могут достичь удивительных вещей:
Сокращение времени до выхода на рынок
Благодаря повышению эффективности, улучшению совместной работы команды, средствам автоматизации и непрерывному развертыванию команды могут быстро сократить время от создания продукта до запуска на рынке.
Адаптация к рынкам и конкуренции
Команды по культуре DevOps требуют, чтобы в первую очередь были ориентированы на клиента. Женившись на гибкости, совместной работе команды и сосредоточиться на опыте клиентов, команды могут постоянно доставлять ценность своим клиентам и повысить их конкурентоспособность на рынке.
Обеспечение стабильности системы и надежности
Внедряя методики непрерывного улучшения, команды могут создавать повышение стабильности и надежности продуктов и служб, которые они развертывают. Эти методики помогают сократить количество сбоев и рисков.
Улучшение среднего времени восстановления
Среднее время восстановления метрики указывает, сколько времени требуется для восстановления после сбоя или нарушения. Чтобы управлять сбоями программного обеспечения, нарушениями безопасности и планами непрерывного улучшения, команды должны измерять и работать над улучшением этой метрики.
Внедрение языка и региональных параметров DevOps
Чтобы полностью реализовать DevOps, необходимо внедрить язык и региональные параметры DevOps. Для культивирования культуры DevOps требуются глубокие изменения в том, как люди работают и сотрудничают. Когда организации фиксируют язык и региональные параметры DevOps, они создают среду для развития высокопроизводительных команд. При внедрении методик DevOps автоматизирует и оптимизирует процессы с помощью технологий, без перехода к культуре DevOps в организации и ее людях, вы не получите полных преимуществ DevOps.
На следующем изображении описаны ключевые аспекты языка и региональных параметров веб-сайта Майкрософт.
Ниже приведены основные компоненты языка и региональных параметров 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:
- Используйте высокопроизводительные средства.
- Автоматизируйте обычные и ручные шаги.
- Выполняет итерацию в небольших размерах путем автоматического тестирования и непрерывной интеграции (CI).
Общие сведения о методиках разработки, принятых Корпорацией Майкрософт для поддержки перехода на DevOps, см. в статье "Разработка Майкрософт с помощью DevOps".
Доставка
Доставка — это процесс последовательного и надежного развертывания приложений в рабочих средах, в идеале с помощью непрерывной доставки (CD).
На этапе доставки команды DevOps:
- Определите процесс управления выпусками с четкими этапами утверждения вручную.
- Установите автоматические шлюзы для перемещения приложений между этапами до окончательного выпуска клиентам.
- Автоматизируйте процессы доставки, чтобы сделать их масштабируемыми, повторяемыми, контролируемыми и проверенными.
Доставка также включает развертывание и настройку базовой инфраструктуры среды доставки. Команды DevOps используют такие технологии, как инфраструктура как код (IaC), контейнеры и микрослужбы для обеспечения полностью управляемых сред инфраструктуры.
Сейф методики развертывания могут выявлять проблемы, прежде чем они влияют на взаимодействие с клиентом. Эти методики помогают командам DevOps часто обеспечивать удобство, уверенность и спокойствие.
Основные принципы и процессы DevOps, развиваемые корпорацией Майкрософт, чтобы обеспечить эффективные системы доставки, описаны в статье о том, как Корпорация Майкрософт предоставляет программное обеспечение с помощью DevOps.
Operations
Этап операций включает обслуживание, мониторинг и устранение неполадок приложений в рабочих средах, включая гибридные или общедоступные облака, такие как Azure. Команды DevOps нацелены на надежность системы, высокий уровень доступности, надежную безопасность и нулевое время простоя.
Автоматизированная доставка и безопасные методики развертывания помогают командам быстро выявлять и устранять проблемы при их возникновении. Для поддержания бдительности требуются широкие возможности телеметрии, интерактивные оповещения и полная видимость приложений и базовых систем.
Методы, которые Корпорация Майкрософт использует для работы сложных онлайн-платформ, описаны в разделе "Как Корпорация Майкрософт работает с надежными системами с devOps".
Следующие шаги
- Планирование эффективных рабочих нагрузок с помощью DevOps
- Разработка современного программного обеспечения с помощью DevOps
- Предоставление услуг качества с помощью DevOps
- Управление надежными системами с помощью DevOps
Другие ресурсы
- Решения DevOps в Azure
- Переход на DevOps в Майкрософт
- Начало работы DevOps с Azure
- Безопасность в DevOps (DevSecOps)
- Что такое проектирование платформы?
Обучение и сертификация
- Начало работы с Azure DevOps
- Введение DevOps Dojo: создание эффективности, которая поддерживает ваш бизнес
- AZ-400: начало работы с процессом преобразования DevOps
- Упрощение взаимодействия и совместной работы
- Экзамен AZ-400: проектирование и реализация решений Microsoft DevOps
- AZ-400: реализация безопасности и проверка баз кода для соответствия требованиям