Amazon CodeGuru (version préliminaire)
Automatiser les révisions de code
Identifier vos lignes de code les plus onéreuses
Formé sur des décennies de connaissances et d'expérience
Les modèles de machine learning de CodeGuru sont formés sur les bases de code d'Amazon, qui se composent de milliers de projets internes, ainsi que plus de 10 000 projets open source dans GitHub. En outre, des dizaines de milliers de développeurs Amazon ont contribué à la formation de CodeGuru en s'appuyant sur des décennies d'expérience de la révision de code et de profilage d'application. Par exemple, CodeGuru Reviewer est formé à l'aide de modèles d'exploration de règles et de machine learning supervisés qui utilisent un mélange de régression logistique et de réseaux de neurones. Lors de la formation visant à détecter les écartes par rapport aux bonnes pratiques, il explore les bases de code Amazon afin d'extraire les requêtes qui contiennent des appels d'API AWS. Il examine les modifications de code et crée des références croisées entre elles et les données de documentation, qu'il explore également en parallèle. Cela permet de créer des modèles de bonnes pratiques que Reviewer utilise au moment d'examiner votre code afin de vous fournir des recommandations. CodeGuru Profiler est également formé par les ingénieurs de performance d'Amazon et il sert à établir le profil de dizaines de milliers de services utilisés en interne chez Amazon. Vous pouvez décider d'accepter ou non chaque recommandation adressée par CodeGuru. Ainsi, plus vous lui faites part de vos commentaires, meilleures seront ses recommandations.
Rechercher vos lignes de code les plus onéreuses
CodeGuru Profiler recherche constamment à optimiser les performances de l'application, en identifiant vos lignes de code les plus « onéreuses » et en recommandant des manières de les corriger en vue de réduire l'utilisation processeur, de diminuer les coûts de calcul et d'améliorer les performances de l'application. CodeGuru Profiler fournit des recommandations ciblées afin que vous puissiez prendre des mesures immédiates en cas de problèmes tels que la recréation excessive d'objets onéreux, la désérialisation onéreuse, l'utilisation de bibliothèques inefficaces et une journalisation excessive. CodeGuru Profiler fonctionne en continu lors de la production en consommant des capacités de processeur minimales afin de ne pas affecter considérablement les performances de l'application. Vous pouvez commencer à profiler votre application en installant un petit agent à l'aide d'un code fourni par CodeGuru, puis en le configurant sur la console CodeGuru.
Lorsqu'il détecte des possibilités d'optimiser les performances de l'application, Amazon CodeGuru Profiler explique pourquoi il recommande une modification, la raison du problème, la manière de le résoudre et à quel endroit du code ce problème affecte votre application.
Amazon CodeGuru Reviewer examine vos demandes d'extraction et vous adresse des recommandations par rapport à votre code source dans Github ou AWS CodeCommit, ainsi qu'une description de l'origine du problème et de la manière dont vous pouvez y remédier.
Mettez le doigt sur le problème de code dès aujourd'hui, n'attendez pas d'être paginé.
CodeGuru Reviewer recherche ce qui vous empêche de dormir et vous recommande des façons d'en venir à bout. CodeGuru Reviewer détecte toute déviation des meilleures pratiques concernant l'utilisation des API et kit SDK d'AWS en signalant les problèmes les plus courants pouvant entraîner des problèmes de production, tels que la détection d'une pagination manquante ou d'une erreur de gestion lors des opérations par lot. Il détecte les problèmes de concurrence, tels que les violations d'atomicité et l'utilisation de classes qui ne sont pas sûres, qui sont difficilement localisables, même par des programmateurs chevronnés. Il détecte les situations dans lesquelles les ressources sont incorrectement fermées, ce qui donne lieu à des pannes et à des problèmes de latence. En outre, il identifie une validation d'entrée correcte, lorsque des entrées non protégées peuvent engendrer des problèmes tels que des attaques par injection ou des dénis de service. Pour commencer à réviser le code, vous pouvez associer vos référentiels de code actuels sur GitHub ou AWS CodeCommit avec CodeGuru.
Suffisamment économique pour que vous l'utilisiez lors de chaque révision de code et avec chaque application.
CodeGuru est suffisamment économique pour que vous l'utilisiez lors de chaque révision de code et lors de chaque exécution d'application. Son tarif mensuel simple et à l'utilisation se base sur le nombre de lignes de code examinées et les heures d'échantillonnage par profil d'application. Par exemple, dans le cas d'une demande d'extraction classique contenant 500 lignes de code, l'exécution de CodeGuru Reviewer ne coûte que 3,75 USD. Faites un essai gratuit pendant les 90 premiers jours. Ensuite, CodeGuru coûte 0,005 USD par heure d'échantillonnage et par profil d'application, ou 0,75 USD pour 100 lignes de code par mois. Voir la tarification »
Des dizaines de millions USD
L'avis des développeurs à propos d'Amazon CodeGuru
Chris Butterfield, un ingénieur de développement logiciel travaillant sur un service de planification destiné à des vendeurs sur Amazon.in :
« Après avoir exécuté CodeGuru Profiler et pris connaissance de ses recommandations, j'ai réalisé que nous devions mettre à jour notre service afin de corriger un bug lié au verrouillage du processeur. Le correctif recommandé a fonctionné à merveille et a éliminé l'avertissement de conflit de thread qui utilisait 55,97 % du temps processeur. Après avoir effectué la correction, j'ai réalisé le test de la charge et j'ai découvert que, désormais, un hôte unique peut servir 700 TPS, soit environ 7,5 fois plus de trafic que ce qu'un seul hôte pouvait gérer auparavant. Nous avons pu réduire notre nombre d'instances d'environ 75 % après le test de charge tout en continuant à gérer le même trafic. »
Rajesh Konatham, un ingénieur de développement logiciel senior travaillant sur le service de gestion de catalogue pour Amazon.com :
« Nous avions seulement désactivé quelques configurations liées au logiciel afin d'améliorer le temps de démarrage du serveur et de réduire la confusion en matière de profils. Dès lors, nous avons utilisé CodeGuru Profiler pour comprendre l'impact de cette modification et nous avons réalisé que notre système de flux de travail clonait des documents dès qu'il exécutait des branches, même lorsque cela s'avérait inutile. Par conséquent, nous dépensions inutilement 15 % des valeurs de clonage de capacité des processeurs. Après avoir suivi les recommandations de CodeGuru Profiler visant à supprimer ces valeurs clonées, nous avons constaté d'importantes réductions de l'utilisation du processeur, soit une réduction de 40 % au niveau de la flotte synchrone et de 67 % au niveau de la flotte asynchrone. Bien plus que les 15 % de réduction de l'utilisation du processeur que nous espérions ! La réduction supplémentaire était imputable à une activité réduite de nettoyage de la mémoire, étant donné que les clones n'occupaient plus la mémoire de tas. »
Neeraj Kumar, un ingénieur de développement logiciel senior travaillant sur Amazon CloudWatch :
« Nous avons exécuté CodeGuru Profiler et nous avons constaté que la plupart de nos capacités de processeur étaient utilisées pour signer la requête Amazon S3 à l'aide de SHA-2. Nous utilisions l'implémentation fournie par JDK pour SHA-2, mais CodeGuru Profiler nous recommandait d'opter plutôt pour Amazon Corretto Crypto Provider. Nous avons suivi cette recommandation, ce qui nous a permis de mettre en œuvre certains de ces algorithmes de chiffrement plus rapidement. Corretto Crypto Provider se comporte comme JDK, ce qui a simplifié la prise en main. Après le déploiement, nous avons constaté une réduction des processeurs d'environ 30 % dans plusieurs régions AWS. »
Mike Thompson, un ingénieur de développement logiciel senior travaillant sur des outils de création AWS :
« CodeGuru Reviewer nous a permis de mettre le doigt sur une condition de concurrence qui nous menaçait depuis longtemps dans un fragment de code stratégique. Un examinateur humain ne serait peut-être pas parvenu à la détecter, étant donné qu'elle se trouvait hors de la zone du code que j'avais modifiée. CodeGuru Reviewer a fourni suffisamment de contexte à propos du bug, ainsi qu'une explication claire sur la raison de sa gravité et un exemple de correction. Dès lors, il n'a fallu que quelques minutes et peu d'efforts pour apporter la modification requise. C'était un véritable avantage de disposer d'une solution qui a permis d'améliorer la qualité de notre code sans impliquer de configuration et sans nous déranger. »
Danish Bashar, un ingénieur de développement logiciel qui travaille sur AWS DynamoDB :
« J'étais en train de télécharger un fichier depuis Amazon S3 et je ne savais pas qu'il s'agissait d'un flux, ce qui a entraîné une fuite de ressources. Le test d'unité n'aurait pas détecté ce problème, car son exécution se déroulait parfaitement. Étant donné que je n'avais pas explicitement écrit le type d'objet, je ne l'avais pas remarqué et je suis quasiment certain que toute autre personne qui aurait effectué une révision du code ne l'aurait pas détecté non plus. Il n'a fallu à CodeGuru Reviewer que quelques minutes pour examiner la sémantique du code et pour détecter la fuite de ressources relativement rapidement. CodeGuru Reviewer m'a recommandé d'utiliser un test avec des ressources pour clore la ressource, et je l'ai mis en œuvre immédiatement. +1. »
Geetika Vasudeo, ingénieur de développement logiciel qui travaille sur AWS DynamoDB :
« Nous utilisions un tableau Amazon DynamoDB d'une façon inhabituelle et nous sommes passés à côté dans la révision du code. CodeGuru Reviewer a quant à lui identifié que l'opération renvoyait des résultats paginés au lieu de tous les résultats. Nous réalisions des analyses qui ne retournaient des résultats que sur la première page, ce qui n'était pas un problème pour le moment, mais au fur et à mesure que le tableau évoluait, nous ne consultions que la première page et nous passions à côté du reste des résultats. Sans une gestion adéquate, cela aurait pu se transformer en un bogue majeur dans notre code. Une bonne trouvaille et une excellente recommandation. »
Commencez à créer avec Amazon CodeGuru dans AWS Management Console.