rocketclips - stock.adobe.com
Microsoft acte la refonte du client Teams
Après deux ans de refonte, Teams 2.0 débarque en préversion publique. Hormis une nouvelle interface, c’est une grande part de l’architecture côté client qui a été revue et corrigée. À la clé, des performances (enfin) satisfaisantes avec l’application desktop.
Enfin. Enfin, la refonte du client applicatif de Microsoft Teams touche à son terme. C’est en 2021 que le géant du cloud a décidé de prendre le taureau par les cornes en annonçant la réfection de l’architecture côté client de la célèbre application.
Teams 2, le retour
Prévue en 2022, Teams 2.0 est finalement accessible en préversion dès ce mois-ci. Les administrateurs de certains comptes entreprise peuvent proposer la bascule à leurs usagers s’ils font partie du programme de préversion publique depuis hier. La mise à jour, Teams 2.1, sera déployée progressivement auprès des organisations à partir du mois d’avril 2023 en commençant par l’application desktop Windows. Le client Web, Mac, éducation, et VDI profiteront de la refonte « plus tard cette année ». Les clouds « spéciaux » (GCC High, DoD) sont également dans la boucle.
La mouture revue et corrigée de Teams supporte les machines équipées de processeurs Intel, AMD et ARM. Microsoft promet de prendre en charge à l’avenir les appareils Apple dotés des puces M1, M2 et Intel Mac.
Pour l’instant, Microsoft ne semble pas avoir acté la révision des applications mobiles (iOS ou Android).
Des performances alléchantes
Les gains attendus sont importants sur l’application desktop. Pour s’en faire l’écho, Microsoft a fait appel au spécialiste du parangonnage GigaOm qui a mis à l’épreuve le client sur trois ordinateurs portables d’entrée, de milieu et de haut de gamme. « Outre une division par deux des temps de réponse en moyenne, nous avons constaté une diminution globale de 50 % de la consommation de ressources disque et mémoire », écrivent les spécialistes de GigagOm. « Cela représente presque une multiplication par deux des performances – et nous avons constaté ces résultats sur les trois machines testées ».
Ces améliorations sont bienvenues. Microsoft compte un total de 280 millions d’utilisateurs de Teams actifs tous les mois. Pour ceux qui utilisent l’outil collaboratif quotidiennement, Teams est parfois la cause de belles frustrations. Désynchronisation des notifications entre l’application mobile et desktop, consommation excessive de RAM, lenteurs pour rafraîchir les canaux, vidéo saccadée, collecte excessive de logs, plantages… Les petits problèmes peuvent s’accumuler rapidement.
Qu’est-ce que l’équipe derrière Microsoft Teams a bien pu faire pour « satelliser » les performances de l’outil collaboratif ? Sumi Singh, vice-présidente corporate de l’ingénierie pour Microsoft Teams, revient en détail sur la révision complète de l’architecture.
WebView2 remplace Electron, Chromium reste
Pour rappel, au moment de développer son application, Microsoft avait le choix de la plateforme Electron comme l’hôte d’un client Web codé à l’aide du framework AngularJS et « une variété de contrôles personnalisés construits à l’aide de HTML et de CSS ».
L’architecture a fait ses preuves, au début. D’ailleurs, Microsoft ne touche pas au back-end et au fonctionnement du service côté serveur. « Cependant, les capacités et l’innovation des équipes se sont considérablement développées au fil du temps, ce qui a mis à rude épreuve les ressources des appareils », indique Sumi Singh.
À force d’ajout, l’application existante consomme près de 700 Mo à 1 Go de mémoire vive au démarrage, et environ 600 Mo en usage courant, ce qui, pour un ordinateur vieillissant ou doté de 4 Go de RAM, impacte significativement l’expérience utilisateur.
Selon les tests de GigaOm, la version 1.1. de l’application « classique » (disponible depuis juin 2022) occupait 432 Mo. Il y a un an, LeMagIT constatait que le client pouvait occuper 800 Mo à 1 Go d’espace de stockage. Aujourd’hui, il prend 445 Mo sur une machine exécutant Windows 10. Tout dépend du système. Lors d’une présentation de machines Microsoft, LeMagIT avait remarqué une consommation de ressources moindre de Teams sur Windows 11.
À l’inverse, le client Web, débarrassé d’Electron est déjà plus réactif : il ne consomme que 160 à 450 Mo de RAM. En effet, il partage ses ressources avec Chromium, le moteur de rendu du navigateur Web sous-jacent.
De fait, Electron encapsule un fork de Chromium afin de rendre accessible une application taillée pour le Web. Or, Electron et Chromium sont particulièrement gourmands en RAM.
Pour réduire de manière significative l’empreinte mémoire du client applicatif, l’équipe derrière Microsoft Teams a remplacé Electron par WebView2. Tout comme Electron, WebView2 est un framework d’encapsulation qui rend le contenu Web visible via un fork de Chromium, ici Edge. A contrario d’Electron, WebView 2 n’est pas open source : la solution appartient à Microsoft. Cependant, dans le cas de Teams, le framework partage ses ressources directement avec Edge.
Un worker pour mieux gérer les données côté client
Au lieu d’AngularJS et de portions de code HTML/CSS, la nouvelle version de Teams repose sur une couche de données clients qui interagit avec un cœur ReactJS, tandis que les contrôles front-end proviennent de la collection de frameworks UX Fluent UI. Plus précisément, l’interface de Teams « nouvelle génération » dépend de Fluent v9 et des composants CSS/JavaScript/TypeScript.
Problème JavaScript est monothread. Il gère la concurrence à l’aide d’une boucle d’événements.
« Pour surmonter cette limitation, nous avons mis en œuvre une solution en déplaçant la gestion des données vers un worker séparé, connu sous le nom de couche de données du client », explique Sumi Singh.
Ce worker doit exécuter dans des threads parallèles « la récupération des données, le stockage des données, les opérations de conformité, les notifications push et la fonctionnalité hors ligne sans ajouter de contention au thread principal de l’interface utilisateur ».
La couche de données client accède à une base de données locale IndexDB, mais communique également via message POST vers le reste de la galaxie Office 365. Depuis l’hôte WebView2, ce worker est accessible depuis un schéma GraphQL.
« GraphQL est utilisé pour abstraire la couche de données client, la communication interprocessus (IPC) joue le rôle d’agent de connexion, et ReactJS, TypeScript et Fluent UI sont les technologies standardisées utilisées pour l’expérience utilisateur », résume Sumi Singh.
Au lieu d’utiliser toutes les données pour afficher un écran, l’application s’appuie sur modèle d’extraction parcellaire des données nécessaires au bon affichage d’une fenêtre, ce qui allégerait le poids du client.
Tout un lot d’optimisations… à vérifier
Outre la structure de l’application, Microsoft a changé la manière d’envoyer des notifications, d’isoler les données entre les tenants et les comptes, ce qui devrait améliorer la synchronisation des informations entre les appareils.
Avant cela, comme Microsoft l’avait annoncé en février 2022, l’architecture de rendu vidéo côté client a été optimisée pour consommer « 50 % » de ressources en moins lors des appels audio et vidéo. Par ailleurs, l’équipe a réalisé un lot d’optimisation allant du rassemblement à la réduction d’événement IPC, en passant par la diminution du nombre de rendus pour les visioconférences avec plusieurs centaines, voire milliers d’usagers. Cela devrait permettre, in fine, d’afficher jusqu’à 7 flux simultanés sur un écran et de déployer les salles de réunions.
Ce projet a nécessité de revoir la sécurité, notamment pour atténuer les possibilités d’injections Cross-site scripting (XSS), mais aussi d’adapter l’outillage, les pipelines CI/CD et l’infrastructure sous-jacente.
Reste à savoir si l’application Desktop sera aussi performante sur Windows 10, Windows 11 et macOS. Il faudra aussi vérifier si le client Web bénéficie de gains intéressants sur Edge, mais aussi Chrome ou Safari.
En attendant, Microsoft prévient que la prise en charge des applications tierces, LOB, mais aussi la recherche dans les conversations et les canaux, la publication de messages et d’annonces intercanaux ne sont pas encore disponibles dans Teams 2.0.
Chose intéressante, il sera possible de désactiver l’accès à OneDrive et Sharepoint, les deux espaces de stockage par défaut de Teams, au profit d’un « fournisseur de stockage tiers ». Jusqu’alors, l’on ne pouvait qu’ajouter cette espace et non remplacer les deux zones de gestion de contenus de Teams.
« Le Teams actuel n’a pas été créé en un jour, et le nouveau Teams ne le sera pas non plus », prévient Microsoft sur sa page dédiée.