Amazon CodeGuru: la qualité passe avant tout

Amazon CodeGuru: la qualité passe avant tout

150 150 Vincenzo Scalzi

Gekko @ re:Invent 2019 – Mardi 3 Décembre 2019

Un flou artistique de qualité

La notion de qualité de code est paradoxalement l’un des éléments qui divise les équipes de développement mais qui expose toutefois des notions fondamentales ancrées depuis des décennies dans le milieu. Au détour d’une conversation entre adeptes du Software Craftsmanship, on peut entendre parler de dette technique, de code mort ou, pour les plus subtils, de complexité cyclomatique.

Développer un service requiert d’écrire du code. Chaque nouvelle fonctionnalité au-delà de la triviale brique de base nécessite de se connecter à un existant de taille variable. De ce fait, un développement contiendra des phases de lecture de l’existant. Dans le meilleur des cas, cette lecture est fluide ; comprendre le but de chaque structure, fonction, fichier ou autre élément du code et l’incrémenter avec le développement d’une nouvelle fonctionnalité est aisé. Mais que se passe-t-il dans les autres cas ?

Il est courant de vouloir implémenter des fonctionnalités au plus vite tout en assurant un coût de développement contenu et une portée conservée. Difficile de garder l’équilibre dans ce triangle sans prendre de raccourci. En utilisant des techniques et méthodes moins recommandables, on peut atteindre bien plus rapidement un résultat équivalent, au risque d’occasionner au passage ce que l’on appelle la “dette technique”.

Vue sous un autre angle, la dette technique est une forme de crédit à la consommation : elle peut être contractée, génère des intérêts et doit être remboursée à terme, puisque le code devra être réinterprété par la suite, compris, incrémenté et corrigé.

Heureusement, des solutions limitant la création de dette existent et l’une d’entre elle consiste à faire relire la réalisation par un membre tiers de l’équipe de développement. Toutefois, cette solution apporte avec elle un coût non négligeable, d’autant plus que la relecture de code, qui plus est d’autrui, n’est pas toujours la tâche la plus agréable qui soit.

Que faire alors ?

La mystérieuse route de la performance

Parallèlement aux préoccupations que l’on pourrait avoir à propos de la qualité d’un produit, on peut être amené à se poser des questions similaires à propos de ses performances. En effet, derrière ce concept vague se cachent de nombreux indicateurs qu’il n’est pas toujours possible de suivre ou d’optimiser et avec lesquels il va falloir composer, surtout lorsque le temps manque pour réfléchir à des solutions plus élégantes. Par indicateurs, on entend la charge des processeurs, la mémoire vive utilisée, le stockage utilisé, la latence réseau et ainsi de suite.

En réalité, la performance n’est pas la préoccupation première lors d’un développement. On s’attend à ce qu’un produit fonctionne avant de vérifier qu’il fonctionne correctement. De plus, il est difficile d’émuler le comportement d’un environnement de production sur un poste local et coûteux de valider les performances de chaque changement. On peut ainsi se retrouver à devoir explorer les différentes notions de tests de charges ou de performance dans un environnement dédié, voire sur la production ! En d’autres termes, il est difficile d’évaluer l’impact d’une fonctionnalité, voire d’une ligne de code sur les indicateurs qui attestent du bon fonctionnement d’un service.

Que faire alors ?

Amazon CodeGuru

Nouveau-né de la famille des services Code* –AWS CodeBuild, AWS CodeCommit, AWS CodeDeploy, AWS CodePipeline et AWS CodeStar– dédiés aux membres des équipes de développement, Amazon CodeGuru attaque simultanément les deux fronts présentés précédemment à savoir la revue de code et la détection de problèmes de performance. Vient immédiatement une question : comment peut-on confier à un système automatisé une tâche qui incombe habituellement à un humain ?

Grâce aux progrès de l’intelligence artificielle et des algorithmes d’apprentissage, entraînés en utilisant des milliers de projets et des millions de revues de code en interne chez Amazon ainsi que sur des dépôts open source, Amazon CodeGuru est en capacité de fournir des recommandations pertinentes permettant de compléter les compétences des experts d’une entreprise et d’améliorer la stabilité et les performances d’un système avant sa mise en production, au moment d’une requête de fusion de code, ou “Pull Request”. De plus, cet outil est également capable d’analyser l’utilisation du SDK AWS pour détecter d’éventuelles erreurs.

Après sa mise en production, grâce au profileur à intégrer dans son application, il est possible d’observer le comportement d’une application afin de détecter des problèmes supplémentaires et se voir offrir des recommandations priorisées afin d’éliminer les problèmes de performance les plus impactant et ainsi réduire les prérequis en termes d’infrastructure et par extension les coûts occasionnés !

On constate ici les intérêts de cette solution ; sensibiliser les équipes de développement à la performance de leurs systèmes, réduire la quantité et la difficulté du processus de revue de code, améliorer l’expérience d’un produit pour les utilisateurs finaux, le tout en remboursant l’utilisation de la solution en réduisant ses prérequis.

Si cette présentation préliminaire de nouveau service a capturé votre intérêt, l’étape suivante consiste à essayer et à adopter Amazon CodeGuru.

Laisser une réponse