Powrót do strony głównej

gnata: JSONata na Go z AI za $400

Inżynier Reco wykorzystał AI Cursor do portowania JSONata na Go, tworząc bibliotekę gnata. Projekt zapewnił 1000x przyspieszenie i zaoszczędził $500 000 rocznie dzięki rezygnacji z klastrów Node.js. Case demonstruje shadow deployment i wykrycie błędów w implementacji referencyjnej.

Jak przepisać JSONata na Go z AI: oszczędność $500k
Advertisement 728x90

# Przepisanie JSONata na Go z pomocą AI: biblioteka gnata i oszczędność 500 tys. USD

Wiodący inżynier danych w Reco, Nir Barak, w ciągu siedmiu godzin wygenerował za pomocą asystenta AI Cursor bibliotekę gnata — implementację JSONata na Go. Koszt tokenów wyniósł 400 USD, a efekt dla firmy — roczna oszczędność 500 000 USD dzięki rezygnacji z infrastruktury Node.js i optymalizacji silnika reguł.

Problem skalowania JSONata w produkcji

JSONata to deklaratywny język do zapytań i transformacji JSON, szeroko stosowany w wykrywaniu zagrożeń. Referencyjna implementacja w JavaScript jest niekompatybilna z potokiem Go w Reco. Firma eksploatowała klastry Node.js na Kubernetes: do 200 replik do przetwarzania wyrażeń JSONata przez RPC z usług Go. To doprowadziło do niedoboru adresów IP i kosztów 300 000 USD rocznie tylko na infrastrukturę.

Podejście do migracji zainspirowane przypadkiem Cloudflare: wykorzystanie oficjalnego zestawu testów oryginalnej implementacji. AI generuje kod w docelowym języku, dopóki wszystkie testy nie przejdą. W Reco zastosowano te same 1778 testów JSONata-js.

Google AdInline article slot

Proces portowania i testowania

Praca zajęła siedem godzin rzeczywistego czasu:

  • Cursor analizował specyfikację JSONata i testy.
  • Wygenerował 13 000 linii kodu Go.
  • Iteracyjnie poprawiał błędy do pełnego pokrycia.

Wdrożenie odbyło się w trybie shadow: gnata przetwarzała ruch równolegle z jsonata-js, rozbieżności były logowane. Przez trzy dni — zero błędów na miliardach zdarzeń. Biblioteka ujawniła niezgodności w referencyjnej implementacji: jsonata-js czasem narusza własną specyfikację.

Źródło: Habr (https://habr.com/ru/news/1015970/)

Google AdInline article slot

Efekt ekonomiczny i optymalizacje

Rezygnacja z floty RPC Node.js pozwoliła zaoszczędzić 300 000 USD rocznie. Dodatkowe 200 000 USD — dzięki refaktoringowi silnika reguł: wcześniej uruchamiał dziesiątki tysięcy goroutine do obkhodzenia limitów JSONata, teraz działa bezpośrednio z gnata.

Cały tydzień na integrację, w tym okres shadow. Barak określa to jako „chirurgiczny refaktoring” — generowanie AI dla wąskich gardeł bez całkowitej przebudowy.

Zalety gnata pod względem wydajności:

Google AdInline article slot
  • Przyspieszenie do 1000x na prostych wyrażeniach.
  • Pełna kompatybilność z testami JSONata.
  • Kod źródłowy otwarty dla społeczności.

Co ważne

  • gnata — 13 tys. linii kodu Go, 1778/1778 testów zaliczonych.
  • Koszty 400 USD na tokeny Cursor wobec rocznej oszczędności 500 tys. USD.
  • Wdrożenie shadow ujawniło błędy w jsonata-js.
  • Eliminacja 200+ replik Node.js rozwiązała problem adresów IP.
  • Nowy etap: AI do punktowego refaktoringu kodu legacy.

Biblioteka gnata jest dostępna otwarcie, demonstrując wykonalność portowania silników JS na Go z AI. Dla programistów middle/senior to przypadek automatyzacji migracji z zachowaniem specyfikacji.

— Editorial Team

Advertisement 728x90

Czytaj dalej