Contexte
Google a introduit l’utilisation d’une IA basée sur des modèles avancés de traitement du langage naturel (NLP) et d’apprentissage machine. Ces outils sont capables d’analyser, de comprendre et de convertir des bases de code. L’intégration de ces outils a permis à Google de diviser par deux le temps nécessaire à certaines migrations de code. Par exemple, un projet nécessitant traditionnellement un an de travail peut désormais être achevé en six mois, voire moins. Cela n’affecte pas seulement la vitesse, mais également la qualité : les erreurs humaines sont réduites, et les développeurs peuvent se concentrer sur des tâches plus stratégiques.
L'importance de l'IA pour Google
Lors de l'annonce des résultats financiers du troisième trimestre 2024, Sundar Pichai, PDG de Google, a dévoilé une information marquante : plus de 25 % du nouveau code produit par Google est désormais généré par l'intelligence artificielle (IA).
Pichai a déclaré que l'utilisation de l'IA pour le codage permettait de « stimuler la productivité et l'efficacité » au sein de Google. Une fois le code généré, il est ensuite vérifié et revu par les employés, a-t-il ajouté. « Cela permet à nos ingénieurs d'en faire plus et d'aller plus vite », a déclaré Pichai. « Je suis enthousiasmé par nos progrès et les opportunités qui s'offrent à nous, et nous continuons à nous concentrer sur la création de produits de qualité. »
Il s'agit d'une étape importante qui montre à quel point l'IA est importante pour l'entreprise.
Les défis de la migration de code
La migration de code, essentielle dans le cadre de l’évolution technologique des entreprises, consiste à adapter et transférer des bases de code d’une infrastructure ou d’un langage vers un autre. Cela peut être dû à divers facteurs tels que des mises à jour technologiques, des changements dans les environnements de développement, ou encore le besoin de moderniser des applications vieillissantes.
Ce processus est souvent long, coûteux et sujet à des erreurs, impliquant des centaines de développeurs qui doivent comprendre, traduire et tester des milliers de lignes de code. La complexité augmente lorsque des systèmes hérités doivent être intégrés avec des solutions modernes. Des mois, voire des années, peuvent être nécessaires pour compléter une migration.
Comment Google utilise-t-il l'IA pour les migrations de code interne ?
Google, qui vend des logiciels d'intelligence artificielle avec autant d'enthousiasme que Microsoft, rapporte avoir testé sa propre concoction d'intelligence artificielle et avoir obtenu des résultats prometteurs. Dans un article, les informaticiens de Google Stoyan Nikolov, Daniele Codecasa, Anna Sjovall, Maxim Tabachnyk, Satish Chandra, Siddharth Taneja et Celal Ziftci répondent à la question posée par le titre de l'article : « Comment Google utilise-t-il l'IA pour les migrations de code interne ? » Les esprits curieux veulent savoir, en particulier après qu'Amazon a affirmé avoir utilisé son assistant de codage Q Developer AI pour économiser des centaines de millions en migrant les applications Java 8 vers Java 17.
Les ingénieurs logiciels de la Chocolate Factory susmentionnés tentent de satisfaire cette curiosité en racontant comment ils ont appliqué de grands modèles de langage (LLM) (l'IA dans le langage courant) pour accélérer le processus de migration du code d'un environnement à l'autre.
« Nous constatons que l'utilisation de LLM peut réduire de manière significative le temps nécessaire aux migrations, ainsi que les obstacles au démarrage et à l'achèvement des programmes de migration », observent les auteurs dans leur article.
Ils se concentrent sur les outils d'IA sur mesure développés pour des domaines de produits spécifiques, tels que Google Ads, Google Search, Google Workspace et YouTube, plutôt que sur les outils d'IA génériques qui fournissent des services largement applicables tels que l'achèvement du code, l'examen du code et la réponse aux questions.
Les migrations de code de Google ont consisté à remplacer les identifiants 32 bits de la base de code de plus de 500 millions de lignes pour Google Ads par des identifiants 64 bits, à convertir son ancienne bibliothèque de test JUnit3 en JUnit4 et à remplacer la bibliothèque temporelle Joda par le package standard java.time de Java.
La migration de int32 à int64, expliquent les Googlers, n'était pas triviale car les identifiants étaient souvent définis de manière générique (int32_t en C++ ou Integer en Java) et n'étaient pas facilement consultables. Ils existaient dans des dizaines de milliers d'emplacements de code dans des milliers de fichiers. Les modifications devaient être suivies par plusieurs équipes et les changements apportés aux interfaces des classes devaient être pris en compte dans plusieurs fichiers.
« L'ensemble de l'effort, s'il était réalisé manuellement, devait nécessiter des centaines d'années d'ingénierie logicielle et une coordination transversale complexe », expliquent les auteurs.
Le temps nécessaire pour achever la migration a été réduit de 50 %
Pour leur flux de travail basé sur le LLM, les ingénieurs logiciels de Google ont mis en œuvre le processus suivant.
Un ingénieur d'Ads identifiait un identifiant nécessitant une migration en utilisant une combinaison de recherche de code, Kythe et des scripts personnalisés.
Ensuite, une boîte à outils de migration basée sur le LLM, déclenchée par une personne connaissant bien l'art, a été exécutée pour générer des changements vérifiés contenant du code qui a passé les tests unitaires. Ces modifications sont vérifiées manuellement par le même ingénieur et éventuellement corrigées.
Ensuite, les modifications de code sont envoyées à plusieurs réviseurs responsables de la partie de la base de code affectée par les modifications.
Il en est ressorti que 80 % des modifications de code figurant dans les listes de modifications étaient purement le fruit de l'IA, le reste étant constitué de suggestions d'IA rédigées ou modifiées par l'homme.
« Nous avons découvert que dans la plupart des cas, l'homme devait revenir sur au moins quelques modifications apportées par le modèle qui étaient soit incorrectes, soit inutiles », observent les auteurs. « Compte tenu de la complexité et de la nature sensible du code modifié, des efforts doivent être déployés pour que chaque modification soit appliquée avec soin aux utilisateurs ».
Sur la base de ce constat, Google a entrepris des travaux supplémentaires sur la vérification pilotée par LLM afin de réduire la nécessité d'un examen détaillé.
Même s'il est nécessaire de revérifier le travail du LLM, les auteurs estiment que le temps nécessaire pour achever la migration a été réduit de 50 %.
Avec l'aide du LLM, il n'a fallu que trois mois pour migrer 5 359 fichiers et modifier 149 000 lignes de code pour achever la transition JUnit3-JUnit4. Environ 87 % du code généré par l'IA a fini par être validé sans aucune modification.
En ce qui concerne le changement de framework temporel Joda-Java, les auteurs estiment un gain de temps de 89 % par rapport au temps de changement manuel prévu, bien qu'aucune spécification n'ait été fournie pour étayer cette affirmation.
« Les LLM offrent une opportunité significative d'assister, de moderniser et de mettre à jour de grandes bases de code », concluent les auteurs. « Ils s'accompagnent d'une grande flexibilité et, par conséquent, une variété de tâches de transformation de code peuvent être encadrées dans un flux de travail similaire et être couronnées de succès. Cette approche a le potentiel de changer radicalement la façon dont le code est maintenu dans les grandes entreprises ».
Les LLM doivent être considérés comme complémentaires des techniques de migration traditionnelles
Les Googlers soulignent également que les LLM doivent être considérés comme complémentaires des techniques de migration traditionnelles qui reposent sur les arbres syntaxiques abstraits (AST) et les recherches de type grep. Ils notent que des outils supplémentaires peuvent être nécessaires pour éviter que le processus d'examen humain ne devienne un goulot d'étranglement.
Une autre raison pour laquelle les LLM devraient être utilisés en conjonction avec d'autres outils est qu'ils peuvent être coûteux - il est donc préférable de ne pas les utiliser inutilement.
« Bien que le coût par jeton pour les prédictions ait régulièrement diminué, les migrations nécessitent souvent de toucher des milliers de fichiers et les coûts peuvent rapidement s'accumuler », notent les auteurs.
Malgré cela, il ne fait aucun doute que l'IA a profondément modifié la manière dont Google développe ses logiciels internes. Selon l'article, « la quantité de caractères dans le code qui sont complétés avec l'aide de l'IA est maintenant plus élevée que celle tapée manuellement par les développeurs ».
Implications pour l’industrie : avantages et préoccupations
Cette avancée ne se limite pas à Google. Elle pourrait remodeler l’ensemble de l’industrie technologique de plusieurs façons :
- Réduction des coûts : Les entreprises économiseront des millions en ressources humaines et en heures de travail.
- Démocratisation de l’innovation : Les petites entreprises auront accès à des outils leur permettant de rivaliser avec les géants de la tech en modernisant plus rapidement leurs infrastructures.
- Amélioration continue : Grâce à l’apprentissage machine, ces outils deviendront de plus en plus performants au fil du temps, s’adaptant à des environnements de plus en plus variés.
Malgré les avantages, l’utilisation de l’IA dans la migration de code soulève des préoccupations. La dépendance à l’IA pourrait :
- Réduire les opportunités pour les développeurs juniors d’apprendre en manipulant du code complexe.
- Poser des questions sur la sécurité des données, notamment si des bases de code sensibles sont analysées par des modèles d’IA.
- Accroître les risques de bogues subtils, difficiles à détecter même avec des tests automatisés.
L’avenir de la migration de code
En automatisant et en accélérant ce qui était autrefois une tâche ardue, l’IA ouvre la voie à un avenir où les équipes de développement peuvent se concentrer sur l’innovation plutôt que sur la maintenance. Cependant, il sera crucial de trouver un équilibre entre l’automatisation et la supervision humaine afin de minimiser les risques et maximiser les avantages.
Google a démontré que l’IA pouvait transformer la migration de code, un domaine longtemps perçu comme l’un des plus fastidieux du développement logiciel. Cette avancée pourrait marquer le début d’une nouvelle ère pour l’ingénierie informatique, où rapidité, précision et efficacité deviendront les maîtres mots.
Sources : How is Google using AI for internal code migrations?, Kythe
Et vous ?
Quels autres secteurs du développement logiciel pourraient bénéficier d'une automatisation similaire grâce à l'IA ?
Les outils d’IA actuels pour la migration de code sont-ils suffisamment fiables pour être utilisés dans des systèmes critiques, comme les logiciels médicaux ou bancaires ?
Comment l’IA pourrait-elle gérer des migrations impliquant des technologies très anciennes ou des langages peu documentés ?
La réduction du temps de migration pourrait-elle entraîner une diminution des emplois dans l’industrie du développement logiciel ?
L’automatisation par l’IA pourrait-elle réduire les opportunités pour les développeurs juniors d’acquérir de l’expérience sur des projets complexes ?
Avec l’essor des outils d’IA, quels nouveaux rôles ou compétences seront nécessaires pour les développeurs dans les prochaines années ?