Les développeurs Java disposent désormais de deux nouveaux outils dopés au Machine Learning pour détecter leurs bugs et optimiser la consommation CPU de leurs applications. De quoi produire des applications plus fiables et plus sécurisées mais aussi moins coûteuses une fois déployées dans le cloud.

En bêta depuis plusieurs mois, Amazon CodeGuru est désormais disponible en version finale. Derrière ce nom se cachent en réalité deux outils d’aide au développement : CodeGuru Reviewer et CodeGuru Profiler. S’appuyant tous deux sur un moteur de Machine Learning, ils visent à aider développeurs et entreprises à produire des applications sans bugs et plus performantes.

À condition toutefois que le langage de programmation utilisé soit exclusivement Java, seul langage pour l’instant supporté par ces deux outils d’aide au développement.

Une IA pour découvrir les bugs

Amazon CodeGuru Reviewer analyse les codes sources dès qu’ils sont publiés par les développeurs dans le « Repository » de leur choix qu’il s’agisse de GitHub, Bitbucket Cloud, AWS CodeCommit et consorts. Le service est capable d’identifier les erreurs et mauvaises pratiques, des bugs typiquement compliqués à dénicher, ou des risques de sécurité présents dans le code. Le service livre également des conseils sur comment améliorer le code pour résoudre le problème détecté. L’intelligence artificielle derrière CodeGuru Reviewer a été entraînée avec les codes sources internes produits par Amazon depuis 14 ans et à partir de plus de 10 000 projets open-source publiés sur GitHub. Le service offre un tableau de bord pour suivre la qualité et l’évolution des codes sources publiés par les développeurs.
L’analyse de code est facturée 0,75$ pour 100 lignes de code (lorsqu’un code est mis à jour, seules les lignes modifiées sont réanalysées).

Amazon CodeGuru Reviewer

Une IA pour optimiser les codes… et donc les coûts d’exécution

Amazon CodeGuru Profiler est un outil similaire mais qui se focalise sur les problématiques de performance plutôt que sur les bugs. Le service analyse les codes source publiés pour détecter les lignes de code les plus consommatrices de ressources et les plus impactantes en termes de vitesse d’exécution. L’outil a d’autant plus de sens que dans un monde cloud (et de plus en plus serverless), les entreprises payent à la consommation. Moins une application consomme de ressources, plus elle se révèle économique. Par exemple, les équipes internes d’Amazon ont utilisé Amazon CodeGuru Profiler sur plus de 30 000 applications de production, ce qui a permis d’économiser des dizaines de millions de dollars sur les coûts de calcul et d’infrastructure.  De plus, l’équipe Amazon.com Consumer Payments a utilisé une préversion interne d’Amazon CodeGuru Profiler de 2017 à 2018 pour gagner en efficacité lors de la plus grande journée d’achats de l’année – le fameux Prime Day – et a réalisé une augmentation de 325% de l’efficacité de l’utilisation du processeur dans leurs applications et une baisse des coûts de 39%. La solution fonctionne en installant un petit agent au cœur même de l’application qui va observer son fonctionnement. L’IA CodeGuru va alors identifier les fonctions et les comportements ayant le plus fort impact CPU et livrer ses recommandations afin d’améliorer les performances tout en définissant des priorités dans les actions à mener.
Selon Amazon, CodeGuru Profiler se différencie des traditionnelles solutions APM (Application Performance Management) par son intégration à AWS et par les recommandations produites par son IA. Mais contrairement aux solutions APM (comme celles intégrées à Visual Studio Enterprise par exemple ou encore des solutions comme AppOptics), CodeGuru Profiler ne fonctionne que sur les workloads placés sur AWS que ce soit sur des instances EC2, ECS, EKS ou sur les plateformes serverless AWS Fargate et Lambda.
L’analyse de performances coûte 0,005$ par heure pour les 36000 premières heures (les suivantes sont « offertes »).

Amazon CodeGuru Profiler

Avec ses nouveaux services CodeGuru, AWS entre en concurrence avec les solutions de révision de code du marché (les solution SCA) et de gestion de la performance applicative (APM) mais surtout avec les nouvelles générations d’outils boostés à l’IA comme AI Reviewer (spécialisé en C++), le très universel DeepCode (Java, Python, JavaScript, TypeScript, C/C++), ou encore l’IntelliCode de Visual Studio (C#, C++, Java, Python, SQL, TypeScript). De même CodeGuru Profiler vient aujourd’hui combler un vide AWS alors qu’Azure Application Insights existe depuis 2018 et Google Cloud Profiler depuis plus d’un an.