Как корпорация Майкрософт работает с надежными системами с помощью DevOps
Корпорация Майкрософт работает на сложных онлайн-платформах с самых ранних дней коммерческого Интернета. На этом пути мы развивали существенный набор методик для обеспечения доступности, работоспособности и безопасности систем. Эти методики являются частью более крупной инициативы по поддержанию и улучшению культуры живого сайта.
Язык и региональные параметры динамического сайта
Язык и региональные параметры динамического сайта — это основное внимание организации, чтобы определить приоритеты опыта и надежности динамического сайта по всему остальному. В конце концов, клиенты могут легко перемещаться между поставщиками услуг в настоящее время с облачными и интернет-службами, значительно усилив важность доверия клиентов. Динамический сайт всегда должен быть доступен и выполнять как обещанные клиентам.
Существуют различные факторы, которые способствуют успешной культуре живого сайта.
Первый динамический сайт
Первое, что позволяет использовать динамический сайт, является неотъемлемой частью успешной платформы. Teams не может сосредоточиться на новых, блестящих функциях и игнорировать возможности, в которых эти функции представлены пользователям. Мы опираемся на безопасные методики развертывания, которые помогают нашим клиентам наслаждаться непрерывным доступом к платформе. Это может быть особенно сложно, когда речь идет о выпуске обновлений версий службы без простоя.
Управление экспозицией с помощью флагов компонентов
Когда мы развертываем круги и этапы, контролируя экспозицию с флагами функций, мы иногда обнаруживаем проблему в рабочей среде. Несмотря на всю нашу автоматизацию и отзывы, иногда все еще происходит. Как говорят, нет места, как производство!
Как правило, мониторинг работоспособности и телеметрия предупреждают нас, когда что-то не так. Разработчик может создать ветвь, main
внести исправление и отправить запрос на него main
. Сохранение одного и того же общего рабочего процесса означает, что разработчикам не нужно переключаться в контекст или изучать другой процесс изменения кода.
Для решения развертывания исправлений требуется еще один шаг, который заключается в выборе изменения в ветви выпуска. Мы запускаем развертывание исправлений из текущей ветви выпуска каждый день недели, хотя мы также можем сделать это по требованию для срочных исправлений. Исправление фактически попадает в рабочую среду из ветви выпуска. Но так как сначала мы разрабатываемсяmain
, мы знаем, что он не будет регрессии следующего спринта при создании новой ветви выпуска.main
Выпуски локальных продуктов в значительной степени одинаковы, хотя и без кругов развертывания и этапов. Кроме того, поскольку мы делаем более ручное тестирование на различных конфигурациях и фигурах данных, существует более длинный хвост между вырезанием ветви выпуска и размещением продукта в руках клиентов.
Безопасность должна приниматься лично
Основное внимание уделяется тому, чтобы сделать уязвимости реальными и личными. Это гарантирует, что люди действительно заботятся. Мы также используем широкое использование военных игр для поиска и устранения рисков безопасности во всей системе, будь то в коде или нет. Когда красная команда может показать, что они попали в код, превратив диалоговое окно вверх ногами, он действительно мотивирует владелец кода решить проблему и убедиться, что он не повторится нигде. Этот вид конкуренции гораздо более реальный и личный, чем предупреждение статического анализа о потенциальном риске XSS. Мы создадим этот вид культуры и динамики через военные игры и другие учения по безопасности. Люди гордиться взломом кода друг друга или возможностью блокировать попытки. Это обеспечивает безопасный язык и региональные параметры кода.
Мы не можем планировать для каждого вектора атаки, но то, что мы можем сделать, предполагается, что будет нарушение, и спланировать, насколько быстро мы можем реагировать на это нарушение. Много работы по обеспечению безопасности было вокруг этого для наших команд.
Наконец, люди делают ошибки. Иногда они отложены и делают такие вещи, как хранение паролей в общих папках. Мы можем сказать им не и мы можем отправить их в обучение безопасности, и мы можем сделать все другие вещи. Большинство людей учатся, но это требует только одного человека, чтобы разорвать систему. Вы можете иметь все виды рекомендаций, но если вы не делаете это реально, вы должны предположить, что люди будут делать ошибки. Это требует определенного уровня надзора, чтобы обеспечить выполнение критически важных процессов.
Инженерия является более чем партнером ops
Мы узнали на раннем этапе, чтобы сделать живой сайт важной частью обязанностей команды инженеров. Это было огромным для нас, потому что, в прошлом, один человек может пойти развернуть что-то, оставить на выходные, и вернуться в понедельник, чтобы найти 900 проблем с клиентами, что поддержка клиентов и команды ops имели дело со всеми выходными. Важно, чтобы инженерия заплатила цену за проблемы с динамическими сайтами. В противном случае нет стимулов для создания систем, которые избежать этих проблем. Когда вы позвонили в 2 утра, чтобы исправить то, что вы сломали, вы помните.
По мере развития этой ответственности live сайт является самым важным, что мы делаем , стал мантрой всей команды. Это опыт клиента, который у них есть прямо сейчас, и это не только налог. Это на самом деле то, что люди рассчитывать от нас, и мы гордимся этим. Он должен быть отличительной особенностью нашего продукта.
Телеметрия рабочей среды — это пульс вашей службы.
Чтобы выжить в быстро темпируемом мире, где практически все может пойти не так, нам нужны большие системы оповещений. Неизменяемые оповещения, избыточные оповещения или подавляющие тома оповещений позволяют игнорировать все оповещения. Это легко создать слишком много оповещений, поэтому процесс действительно перегоняет до простого вопроса: Это оповещение подходит для действий? Это гарантирует, что мы работаем над правильными проблемами клиента и обрабатываем их как можно быстрее.
По мере того как инженерная команда ноль в практических оповещениях, они заметили, что многие проблемы, которые возникают, особенно в середине ночи, как правило, имеют аналогичные исправления, по крайней мере временно. Это привело к сосредоточению внимания на системах, которые лучше отработки отказа и самовосстановления. Теперь проблемы возникают, вызывают оповещения, а затем исправляют себя достаточно хорошо, чтобы инженерная команда ждала до утра, чтобы исправить. Это не произошло бы, если бы инженерная команда просто вытолкнула биты, которые держали других людей в ночное время. Теперь они работают, чтобы сбалансировать эти улучшения как часть не только скорости признаков, но и инженерного улучшения скорости.
Итоги
Внедрение языка и региональных параметров динамического сайта повлияло на то, как корпорация Майкрософт создает и предоставляет программное обеспечение. Благодаря созданию инженерных команд ключевой частью безопасности и операций качество нашего кода и взаимодействия с конечными пользователями значительно улучшилось. Будучи полным участником операций, сделал проектирование ключевым заинтересованным лицом, что приводит к системам, предназначенным для улучшения операций.