Introduction
Savez vous que vos utilisateurs sont impatients ? La vitesse de chargement de vos pages ou applications web/mobiles est cruciales pour conserver l’intérêt de vos utilisateurs. Par ailleurs dans le cadre de l’utilisation du cloud, une application lente se traduit obligatoirement par une augmentation des couts de fonctionnement. Heureusement, l’introduction du développement assisté par IA permet d’augmenter l’impact des possibles optimisations. Les outils modernes s’appuient désormais sur l’intelligence artificielle pour générer du code optimisé, détecter les goulets d’étranglement et proposer des améliorations précises. Nous allons voir comment optimiser des applications dotnet core, utilisé principalement par des applications backend (asp.net) ou client lourd, et explorer les solutions à disposition pour optimiser les performances.
Etape 1: Auditez les performances actuelles
Tout d’abord, il est important d’avoir une vue d’ensemble des goulots d’étranglement de votre application en faisant un audit. Cela permet tout de suite d’identifier les endpoints ou services permettant de réaliser le plus de gains possibles. Pour se faire, dans le cas d’une app web cloud, le mieux est d’avoir une application observable, permettant de savoir ce qu’il se passe réellement dans les conditions réelles d’execution. Une application observable passe par la mise en place de logs, traces et metrics, afin de pouvoir avoir le détail des opérations effectuées. Une fois ceci fait, il reste à identifier les parties les plus lentes. Cette opération peut aussi être réalisée pour la base de donnée (avec par exemple l’activation temporaire des extended events si la base est une base de donnée SQL).
Etape 2: Obtenez des informations plus précises sur l’exécution
Ensuite, une fois ce premier ensemble de donnée récupéré, il est possible de se focaliser sur les points identifiées et de collecter des snapshot d’exécution, afin de savoir la pile complète de méthode exécutés dans le cadre d’un endpoint ou service, et de savoir le temps pris et la consommation mémoire par chacunes de celle-ci. Pour se faire il est possible d’utiliser des outils comme JetBrains DotTrace. En complément, et si les problèmes de performances se déroulent uniquement en cas de forte charge de requêtes, il est possible d’utiliser cet outil conjointement à du load testing (par exemple avec JMeter) pour avoir un comportement similaire à la charge en production.
Etape 3: Utiliser le développement assisté par IA
Avant, il fallait parcourir le code identifié afin d’essayer d’autres approches manuellement pour optimiser le code C#. Désormais il est possible d’utiliser le développement par IA. Ainsi, à l’aide des données précises des méthodes à optimiser, il est possible de cibler l’action de l’IA, et de gagner du temps à l’écriture des optimisations. De plus, les modèles d’IA spécialisés dans le code (par exemple Copilot) peuvent avoir une vue plus complète des bonnes pratiques de gestion des performances et de la mémoire, contrairement à une correction manuelle qui pourrait passer à coté de certains levier d’optimisation. Ensuite, la boucle de développement consiste à vérifier chaque changement proposé par l’IA à l’aide de l’outil de snapshot, dans le but d’observer une amélioration des performances. Avec cette méthode il est possible de faire bien plus de correctifs de performances qu’avec une approche traditionnelle. Bien-sûr, il faut faire attention à ne pas changer de comportement métier et vérifier les modifications avec des tests unitaires.
Notez qu’il est possible de réaliser la même procédure pour les requêtes de base de données, afin d'avoir l'optimisation la plus complète. Dans ce cas il faut conserver les bonnes pratiques évoquées dans le paragraphe précédent, en vérifiant les données retournées des requêtes, et en vérifiant le nouveau plan d’exécution (l’analyse peut aussi être déléguée à une IA)
Conclusion
Nous avons vus qu’une méthode précise et que l’utilisation du développement assisté par IA pouvait accélérer la mise en place d’optimisation de performance de manière plus rapide qu’avec une méthode traditionnelle. Cette méthode peut permettre des gains très importants beaucoup plus rapidement, quelque soit l'objectif souhaité (Augmentation de la rapidité, scaler le nombre d'utilisateurs, réduction des coûts, ou même green-coding pour concevoir des systèmes les plus éco-responsables).
Chez Scalerize, nous implémentons cette méthode pour obtenir rapidement des résultats importants sur les audit de résolution des performances. N’hésitez pas à contacter notre agence pour plus d’informations.