Как Корпорация Майкрософт предоставляет программное обеспечение с помощью DevOps
Корпорация Майкрософт предоставляет высокомасштабируемые службы в рабочих средах. По мере расширения службы Майкрософт и сред их приемы доставки также развивались с течением времени. Многие клиенты Майкрософт также приняли и воспользоваться этими эффективными методиками доставки. Следующие основные принципы и процессы DevOps могут применяться к любым современным усилиям по доставке программного обеспечения.
Для реализации процессов доставки DevOps корпорация Майкрософт приняла следующие инициативы:
- Сосредоточьтесь на менталитете организации и логастичности при доставке.
- Формируйте автономные, подотчетные команды, которые имеют, тестируют и предоставляют функции.
- Перейдите вправо на тестирование и мониторинг систем в рабочей среде.
Фокус на доставке
Доставка быстрее является очевидным преимуществом, что организации и команды могут легко измерять и ценить. Типичная частота DevOps включает короткие циклы спринта с регулярными развертываниями в рабочей среде.
Опасаясь отсутствия стабильности продукта с короткими спринтами, некоторые команды компенсировали периоды стабилизации в конце их циклов спринта. Инженеры хотели отправить как можно больше признаков во время спринта, поэтому они нанесли тестовый долг, что они должны были платить во время стабилизации. Команды, которые управляли своим долгом во время спринта, затем пришлось поддержать команды, которые создали долг. Дополнительные затраты сыграли через конвейеры доставки и в производство.
Удаление периода стабилизации быстро улучшило способ управления долгами команд. Вместо того, чтобы оттолкнуть ключевую работу по обслуживанию до стабилизации периода, команды, которые создали долг, пришлось потратить следующий спринт поймать до своих целевых показателей долга. Команды быстро узнали, как управлять их тестовый долг во время спринтов. Функции обеспечивают, когда они проверены и стоят затраты на развертывание.
Полностью автоматизировать конвейеры
Большая часть команд по улучшению может получить немедленно, чтобы полностью автоматизировать конвейеры из репозитория кода в рабочую среду. Автоматизация включает конвейеры выпуска с непрерывной интеграцией (CI), автоматизированным тестированием и непрерывной доставкой (CD).
Команды могут избежать развертывания, так как это трудно, но реже они развертываются, тем сложнее. Чем больше времени между развертываниями, тем больше проблем сложилось. Если код не является свежим, существует задолженность по развертыванию.
Проще работать в небольших блоках, часто развертывая их. Эта идея может показаться очевидной в ретроспективном режиме, но в то время она может показаться контринтуитивной. Частые развертывания также мотивируют команды определять приоритеты создания более эффективных и надежных средств развертывания и конвейеров.
Использование встроенных инструментов
Корпорация Майкрософт использует систему управления выпусками, которые они создают, и отправляет ее клиентам. Одна инвестиция повышает производительность команды и продукты Майкрософт. Использование вторичной системы будет сифон от скорости разработки и доставки.
Автономия команды и подотчетность
Конкретные ключевые показатели хода выполнения (ключевые показатели эффективности) не измеряют производительность или производительность команды или не зависят от того, находится ли функция на пути. Команды должны иметь возможность управлять собственными планами и невыполненной работой, а также находить способ согласования с целями организации.
Важно напрямую взаимодействовать с командами для отслеживания хода выполнения. Средства должны способствовать обмену данными, но беседа является самым прозрачным способом общения.
Приоритет функций
Важная цель — сосредоточиться на предоставлении функций. Расписания могут оценить, сколько команд и отдельных лиц может быть достаточно завершено в течение заданного периода времени, но некоторые функции будут доставить ранее, и некоторые из которых будут поступать позже. Teams может определить приоритеты работы, чтобы наиболее важные функции сделали его в рабочей среде.
Использование микрослужб
Микрослужбы предлагают различные технические преимущества, которые улучшают и упрощают доставку. Микрослужбы также предоставляют естественные границы для владения командой. Когда команда имеет автономию по поводу инвестиций в микрослужбу, они могут определить приоритеты, как реализовать функции и управлять долгом. Teams может сосредоточиться на планах таких факторов, как управление версиями, независимо от общих служб, зависящих от микрослужбы.
Работа в основном
Инженеры использовались для работы в отдельных ветвях. Слияние задолженности по каждой ветви выросло до тех пор, пока инженер не пытался интегрировать свою ветвь в основную ветвь. Чем больше команд и инженеров были, тем больше интеграция стала.
Чтобы интеграция выполнялось быстрее, непрерывно и в небольших блоках, инженеры теперь работают в главной ветви. Одной из больших причин перехода на Git было упрощенное ветвление предложений Git. Преимущество внутренней инженерии было устранение глубокой иерархии ветвей и ее отходов. Все время, затраченное на интеграцию, теперь вставляется в доставку.
Использование флагов компонентов
Некоторые функции не полностью завершены для развертывания спринта, но по-прежнему могут воспользоваться тестированием в рабочей среде. Teams может объединить и развернуть этот код с флагами функций, чтобы включить функцию для конкретных пользователей, например группу разработки или небольшой сегмент ранних пользователей. Флаги функций управляют воздействием без риска проблем с общей базой пользователей и могут помочь командам определить, следует ли и как завершить эту функцию.
Тестирование в рабочей среде
Переход вправо на тестирование в рабочей среде помогает убедиться, что предварительные тесты являются допустимыми, и что постоянно изменяющиеся рабочие среды готовы к обработке развертываний.
Инструментирование тестов и метрик
Независимо от того, где развертывается приложение, важно инструментировать все. Инструментирование не только помогает выявлять и устранять проблемы, но и предоставлять бесценные исследования по использованию и дальнейшие действия.
Тестирование шаблонов устойчивости
Риск сложных развертываний заключается в каскадных сбоях, в которых сбой одного компонента приводит к сбою зависимых компонентов и т. д. до тех пор, пока вся система не завершится. Важно понимать, где находятся отдельные точки сбоя (SPOF) и как они устраняются, а также проверять процессы устранения рисков, особенно в рабочей среде.
Выбор правильных метрик
Проектирование метрик может оказаться трудным. Распространенная ошибка заключается в том, чтобы включить слишком много метрик, чтобы избежать отсутствия ничего. Но это может привести к игнорировать или недоверять значение метрик, которые не соответствуют определенной потребности. Вместо этого командам Майкрософт требуется время, чтобы определить данные, необходимые для оценки успеха. Teams может добавлять или изменять метрики, но понимание цели с самого начала упрощает этот процесс.
Помимо основы метрики, команды считают, что им нужна метрика для измерения. Например, скорость или ускорение прироста пользователей может быть более полезной метрикой, чем общее число пользователей. Метрики зависят от проекта к проекту, но наиболее полезными являются те, которые могут привести к принятию бизнес-решений.
Использование метрик для руководства по работе
Корпорация Майкрософт включает метрики с отзывами на самых высоких уровнях руководства. Каждые шесть недель организации представляют, как они делают в области здравоохранения, бизнеса, сценариев и телеметрии клиентов. Организации обсуждают метрики с руководителями и со своими командами.
Teams во всей организации проверяют метрики пользователей, чтобы определить смысл их функций. Teams не только отправляет функции, но и посмотрите, используют ли они и как они используются. Команды используют эти метрики для корректировки невыполненных работ и определения необходимости дополнительных функций для удовлетворения целей.
Рекомендации по доставке
- Это никогда не прямая линия, чтобы получить от A до B, ни B конец.
- Всегда будут неудачи и ошибки.
- Просмотр неудач в качестве возможностей обучения для изменения тактики выполнения определенной части процесса.
- Со временем каждая команда развивается свои методики DevOps, опираясь на опыт и корректируя их в соответствии с изменяющимися потребностями.
- Ключ заключается в том, чтобы сосредоточиться на доставке ценности как конечным пользователям, так и самому процессу доставки.