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


Устойчивость служб в Microsoft Teams

Microsoft Teams разработан с нуля для облака; с момента создания он использует кроссплатформенный подход, ориентированный на облако, мобильный и кроссплатформенный подход. Teams создана с высокоустойчивой архитектурой микрослужб, которая разделяет задачи между несколькими геоизбыточными системами для обеспечения высокой доступности и производительности по всему миру. Microsoft Teams также использует встроенную устойчивость Azure, что делает ее устойчивой к сбоям.

Конфигурация службы

В географических регионах, где доступна Microsoft Teams, она работает по крайней мере из двух географически удаленных регионов Azure и, по возможности, в других регионах. Служба выполняется в конфигурации "активный/активный/n", в которой пользователи активно обслуживаются из всех доступных регионов в географическом регионе. Управление емкостью и планирование таковы, что даже в географическом регионе, где работают только два региона, каждый из них может обрабатывать полную загрузку служб из всего региона, если один регион Azure недоступен.

Архитектура микрослужбы означает, что служба Teams является более надежной, так как микрослужбы выполняются в состоянии "активный-активный", но не должны находиться в одном и том же регионе Azure одновременно. Такая конструкция позволяет нам использовать емкость там, где она доступна в пределах определенного географического региона, чтобы, если сайт становится частично недоступным, мы могли перенести некоторые микрослужбы, не заставляя переносить все из них. Микрослужбы также используют собственные функции устойчивости Azure.

Отработка отказа

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

Ограничение влияния инцидентов службы

Изоляция сбоя

Инфраструктура служб Microsoft Teams сильно сегментирована, что значительно ограничивает область влияния большинства типов. Teams состоит из более чем 140 микрослужб по умолчанию, отчасти для ограничения влияния деградации одного компонента. Таким образом, большинство инцидентов службы ограничены только одним компонентом или небольшим подмножеством пользователей. Это ограниченное влияние справедливо даже для инцидентов DNS, так как многие микрослужбы Teams используют не только диспетчер трафика Azure (ATM), но и сторонние (Akamai) для DNS и балансировки нагрузки.

Изящная деградация

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

  • Короткий путь к мультимедиа. Teams использует интеллектуальную маршрутизацию, чтобы уменьшить количество сетевых прыжков и расстояние для обхода сети, чтобы уменьшить количество потенциальных точек сбоя.
  • Правильная обработка ухудшения. В Teams есть уведомления пользователей в приложении, когда все работает не очень хорошо, и такие предложения, как отключение видео для повышения производительности, если подключение не является нестандартным. Teams предлагает пользователям отключить звук, если их подключение вызывает обратную связь или шум в строке.
  • Временная потеря сети — Teams автоматически повторно подключается к собранию или вызову после восстановления сетевого подключения.
  • Возврат к ТСОП. Teams автоматически предоставляет возможность повторного подключения через телефонную сеть общего пользования (ТСОП), если вы отказались от звонка из-за неправильного сетевого подключения. Эта функция имеет дополнительное преимущество: не требуется номеров конференций или секретных кодов, поэтому пользователям в пути еще проще оставаться на связи.
  • Сбой устройства & переключение. Teams обнаруживает, отключается ли звуковое устройство, и пытается переключиться на альтернативное устройство, если оно доступно.

Развертывание кода

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