# 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.
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/)
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:
- 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
Brak komentarzy.