Réécrire JSONata en Go avec l'IA : La bibliothèque gnata et 500 000 $ d'économies
Nir Barak, ingénieur principal des données chez Reco, a utilisé l'assistant IA Cursor pour générer la bibliothèque gnata — une implémentation de JSONata en Go — en seulement sept heures. Les coûts en tokens se sont élevés à 400 $, permettant à l'entreprise d'économiser 500 000 $ par an en abandonnant l'infrastructure Node.js et en optimisant le moteur de règles.
Le défi de la mise à l'échelle de JSONata en production
JSONata est un langage déclaratif pour interroger et transformer du JSON, largement utilisé dans la détection de menaces. L'implémentation de référence en JavaScript est incompatible avec le pipeline Go de Reco. L'entreprise faisait tourner des clusters Node.js sur Kubernetes : jusqu'à 200 réplicas pour traiter les expressions JSONata via RPC depuis les services Go. Cela a entraîné des pénuries d'adresses IP et 300 000 $ de coûts d'infrastructure annuels rien que pour cela.
L'approche de migration s'est inspirée d'un cas Cloudflare : utiliser la suite de tests officielle de l'implémentation originale. L'IA génère du code dans le langage cible jusqu'à ce que tous les tests passent. Reco a appliqué les mêmes 1 778 tests de jsonata-js.
Processus de portage et de test
Le travail a pris sept heures en temps réel :
- Cursor a analysé la spécification et les tests de JSONata.
- A généré 13 000 lignes de code Go.
- A corrigé itérativement les échecs jusqu'à une couverture complète.
Le déploiement s'est fait en mode ombre : gnata a traité le trafic en parallèle avec jsonata-js, en journalisant toute divergence. Sur trois jours — zéro erreur sur des milliards d'événements. La bibliothèque a révélé des incohérences dans l'implémentation de référence : jsonata-js viole parfois sa propre spécification.
Source : Habr (https://habr.com/ru/news/1015970/)
Impact économique et optimisations
Abandonner la flotte Node.js RPC a permis d'économiser 300 000 $ par an. 200 000 $ supplémentaires proviennent de la refactorisation du moteur de règles : auparavant, il générait des dizaines de milliers de goroutines pour contourner les limites de JSONata ; maintenant, il fonctionne directement avec gnata.
Au total, une semaine pour l'intégration, y compris la période d'ombre. Barak qualifie cela de « refactorisation chirurgicale » — génération IA ciblée sur les goulots d'étranglement sans reconstruction complète.
Avantages en performances de gnata :
- Jusqu'à un gain de vitesse de 1000x sur les expressions simples.
- Compatibilité totale avec les tests JSONata.
- Code open source pour la communauté.
Enseignements clés
- gnata : 13k lignes de code Go, 1778/1778 tests passés.
- 400 $ de coûts en tokens Cursor contre 500k $ d'économies annuelles.
- Le déploiement en mode ombre a révélé des bugs dans jsonata-js.
- Éliminer plus de 200 réplicas Node.js a résolu la pénurie d'adresses IP.
- Nouvelle phase : l'IA pour la refactorisation ciblée du code legacy.
La bibliothèque gnata est disponible publiquement, démontrant la faisabilité du portage des moteurs JS vers Go avec l'IA. Pour les développeurs intermédiaires/seniors, c'est une étude de cas sur l'automatisation des migrations tout en préservant la spécification.
— Editorial Team
Aucun commentaire pour le moment.