Retour à l'accueil

gnata : JSONata sur Go avec IA pour 400 $

L'ingénieur Reco a utilisé Cursor AI pour porter JSONata vers Go, créant la bibliothèque gnata. Le projet a fourni une accélération 1000x et économisé 500 000 $ par an en abandonnant les clusters Node.js. Le cas démontre le déploiement shadow et la détection de bugs dans l'implémentation de référence.

Comment réécrire JSONata en Go avec IA : économies de 500 000 $
Advertisement 728x90

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.

Google AdInline article slot

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/)

Google AdInline article slot

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 :

Google AdInline article slot
  • 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

Advertisement 728x90

Lire ensuite