Les secrets de Microsoft pour s’adapter au boom de l’utilisation de Teams
Le bond imprévisible de l’usage de Teams durant la crise pandémique a donné du fil à retordre aux équipes de Microsoft. Les inévitables problèmes de connexion survenus lors du passage massif au télétravail n’ont toutefois pas fait long feu. Comment les ingénieurs de Teams s’y sont-ils pris pour corriger le tir?
Les mesures de confinement à travers le monde ont mis l'infrastructure cloud de Microsoft à rude épreuve. Le passage précipité au travail à distance par de nombreux employés à la mi-mars a notamment fait bondir l’usage de Teams. Les utilisateurs existants ont brusquement changé leurs habitudes, en faisant bien davantage recours aux fonctionnalités de visioconférence, alors que la création de nouveaux comptes a soudainement pris l'ascenseur. Teams a vu son nombre d'utilisateurs augmenter de 12 millions en l’espace d’une semaine. Un phénomène imprévisible auquel n’étaient pas préparées les équipe de la firme de Redmond: le 16 mars, de nombreux utilisateurs ont connu des difficultés pour se connecter à la plateforme collaborative. Les soucis n’ont toutefois pas perduré.
Comment les ingénieurs de Microsoft s’y sont-ils pris pour rapidement corriger le tir? CTO de Microsoft Azure, Mark Russinovich relaie dans un billet de blog les explications des responsables de Teams. Coup de projecteur sur quatre mesures phare.
Augmentation des ressources
Microsoft a rapidement mis en place des régions supplémentaires dans toutes les zones géographiques d’Azure, pour y déployer les micro-services essentiels au fonctionnement de Teams. En parallèle, il a été décidé de réduire les ressources gardées en temps normal en réserve pour assumer la charge d’autres régions éventuellement touchées par une catastrophe naturelle. A ces mesures côté hardware se sont ajoutées des optimisations de code. «Par exemple, certaines améliorations simples ont permis de réduire considérablement le temps processeur alloué à la génération des avatars (ces petites bulles contenant des initiales, utilisées lorsqu'aucune image de l'utilisateur n'est disponible)», précisent les responsables de Teams.
Gestion optimisée du trafic réseau
Teams étant surtout employé en journée, des ressources se retrouvaient inutilisées le soir venu. Pourquoi ne pas les mettre à contribution dans d’autres fuseaux horaires? Les équipes de Microsoft y ont pensé et ont pour ce faire mis en œuvre une stratégie inédite de routage. En programmant des routes spécifiques pour certaines API, les tâches de fonds sont désormais transférées aux ressources disponibles dans des zones où il fait nuit. En outre, en cas de pic d’usage, le trafic des appels et réunions est dispatché à travers plusieurs régions à l’aide d’Azure Traffic Manager.
Actions sur la mémoire cache
Microsoft a également optimisé l'utilisation de la mémoire cache pour Teams. «Nous avons commencé à stocker l'état du cache dans un format binaire plutôt que sous forme brute en JSON», expliquent les ingénieurs en charge de la plateforme collaborative. Grâce à cette mesure couplée à une compression de la mémoire cache, la taille de la charge utile a pu être réduite de 65%. Les processus de sérialisation et désérialisation prennent désormais également moins de temps.
Désactivation de fonctions jugées moins importantes
Des fonctions importantes, telle que la messagerie instantanée, ont été priorisées au détriment d'autres jugées plus secondaires. Dont la notification signalant dans un document partagé qu’un collaborateur est en train d’écrire quelque chose. Cet indicateur de frappe a été désactivé deux semaines durant, le temps de travailler aux mesure d'optimisation des capacités d’Azure. De quoi réduire certains pics de trafic jusqu’à 30%. Des fonctions de pré-extraction qui réduisent la latence de la récupération de données ont également été temporairement désactivées.
L'usage de Teams s’étant aujourd’hui stabilisé, ses ingénieurs tirent maintenant les leçons des mesures prises en urgence face à la pandémie. A l’avenir, ils prévoient notamment de se passer de déploiements basés sur des VM au profit des containers et Kubernetes.