Developpez.com

Le Club des Développeurs et IT Pro

Bing.com tourne désormais sur .NET Core 2.1, un choix technique qui lui a permis de gagner en performance,

Mais aussi en agilité

Le 2018-08-21 13:13:58, par Stéphane le calme, Chroniqueur Actualités
Mukul Sabharwal, membre de l’équipe d’ingénieurs responsables du développement de Bing.com, a expliqué que la pile frontale de Bing est principalement écrite en code géré en couches dans un modèle MVC. La plupart du code de logique métier est écrit en tant que modèles de données en C # et la logique de vue est écrite en Razor. Cette couche est chargée de transformer les données de résultat de la recherche (codées en Microsoft Bond) en HTML, qui sont ensuite compressées et envoyées au navigateur.

« En tant que gardiens de cette plateforme frontale chez Bing, nous considérons la productivité des développeurs et l'agilité des fonctionnalités comme des composants clés supplémentaires dans notre définition du succès. Des centaines de développeurs s'appuient sur cette plateforme pour mettre leurs fonctionnalités en production et s'attendent à ce qu'elle fonctionne comme sur des roulettes », a précisé Mukul.

Depuis ses débuts, Bing.com fonctionne sur .NET Framework, mais il est récemment passé à une exécution sur .NET Core. Les principales raisons de l'adoption de .NET Core par Bing.com sont les performances (notamment des latences de diffusion), la prise en charge de l'installation côte à côte et de l'application locale indépendamment de l'installation à l'échelle de la machine (ou de son absence) et des images ReadyToRun.

« En prévision de ces améliorations, nous avons tenté de rendre le code portable sur les implémentations .NET, plutôt que de nous fier uniquement aux bibliothèques disponibles sous Windows et uniquement avec .NET Framework. L'équipe a commencé à aller dans cette direction avec .NET Standard 1.x, mais la surface de l'API réduite a entraîné des complications non négligeables pour nos migrations de code. Avec les plus de 20 000 API qui sont revenues avec .NET Standard 2.0, tout a changé et nous avons pu passer rapidement des modifications de code aux tests. Après avoir corrigé quelques bogues, nous étions prêts à déployer .NET Core en production ».

Images ReadyToRun

Les applications gérées peuvent souvent présenter des performances de démarrage médiocres, car les méthodes doivent d'abord être compilées en JIT avec le code machine. .NET Framework dispose d’une technologie de précompilation, NGEN. Cependant, NGEN exige que l'étape de précompilation ait lieu sur la machine sur laquelle le code sera exécuté. Pour Bing, cela signifierait exécuter NGEN sur des milliers de machines. Ceci, associé à un cycle de déploiement agressif, entraînerait une réduction significative de la capacité de service au fur et à mesure que l'application est précompilée sur les machines de serveur Web. De plus, l’exécution de NGEN requiert des privilèges d’administrateur, qui sont souvent indisponibles ou fortement contrôlés dans un paramètre de centre de données. Sur .NET Core, l'outil crossgen permet de précompiler le code en une étape de pré-déploiement, comme dans l'atelier de génération, et les images déployées en production sont prêtes à fonctionner !

Performance

Mukul assure que .NET Core 2.1 a permis d’améliorer considérablement les performances dans pratiquement tous les domaines de l’exécution et des bibliothèques.

« Nos données de production correspondent aux améliorations de performances significatives de .NET Core 2.1 (par rapport à .NET Core 2.0 et .NET Framework 4.7.2). Le graphique ci-dessous suit la latence de notre serveur interne au cours des derniers mois. L'axe des Y est la latence (valeurs réelles omises) et la chute précipitée finale (le 2 juin) correspond au déploiement de .NET Core 2.1 ! Cela représente une amélioration de 34%, grâce au travail de la communauté .NET », s’est réjouit Mukul.


Agilité du Runtime

Enfin, Mukul a fait valoir que la possibilité d’avoir une version xcopy du moteur d’exécution dans l’application signifie que Microsoft peut adopter des versions plus récentes du moteur d’exécution à un rythme beaucoup plus rapide.

« En fait, si vous jetez un coup d’œil au graphique ci-dessus, nous avons pris la mise à jour .NET Core 2.1 dans le monde entier lors d’un déploiement d’applications le 2 juin, soit deux jours après sa sortie ! Cela a été possible parce que nous utilisions notre pipeline d'intégration continue (CI) avec la mise à niveau quotidienne des fonctionnalités et des performances des tests de CI .NET Core tout au long de la version ».

Source : Microsoft

Voir aussi :

Vos applications Windows Forms et WPF sont-elles prêtes pour .NET Core 3.0 ? Microsoft veut s'en assurer et sollicite les développeurs
La préversion de Compilation hiérarchisée est disponible dans .NET Core 2.1, pour tirer le meilleur parti du démarrage et de l'exécution d'une app
Microsoft annonce la disponibilité de Blazor 0.5.1, son framework web .NET expérimental qui s'exécute au sein du navigateur
Microsoft annonce la sortie d'une préversion du Framework .Net 4.8, la build 3621 Early Access s'accompagne d'améliorations pour WinForms, WPF et plus
Microsoft annonce la sortie de .NET Core 2.1, avec de nombreux ajouts et améliorations qui viennent enrichir cet environnement
  Discussion forum
4 commentaires
  • Dewey12
    Membre régulier
    Impressionnant !!!

    Dommage que personne ne l'utilise....
  • Pierre Louis Chevalier
    Expert éminent sénior
    Pour être précis Bing c'est 3 % de part de marché mondial sur les moteurs de recherches sur juillet 2018.
  • skerdreux
    Membre régulier
    « Nos données de production correspondent aux améliorations de performances significatives de .NET Core 2.1 (par rapport à .NET Core 2.0 et .NET Framework 4.7.2). Le graphique ci-dessous suit la latence de notre serveur interne au cours des derniers mois. L'axe des Y est la latence (valeurs réelles omises) et la chute précipitée finale (le 2 juin) correspond au déploiement de .NET Core 2.1 ! Cela représente une amélioration de 34%, grâce au travail de la communauté .NET »
    ce genre de graphique est impressionnant mais si on "oublie" les valeurs on oublie une part de réalité.
    Un vendeur qui passe de 1 vente à 7 ventes d'un objet peu cher a bien une augmentation de ces ventes de 700% mais si au final il ne gagne que 1€ en plus par vente c'est tout de suite moins impressionnant.
  • Asmodan
    Membre actif
    En tous cas cela s'est vu quotidiennement lors de la migration, les temps de réponse aux recherches étaient désastreux ! Depuis cela un peu mieux.
    N'empêche que c'est aussi lié à sa qualité de connexion, ping, latence ...