## AI로 Go에서 JSONata 재구현: gnata 라이브러리와 50만 달러 절감
Reco의 리드 데이터 엔지니어인 Nir Barak이 AI 어시스턴트 Cursor를 사용해 gnata 라이브러리—Go 언어로 구현한 JSONata—를 단 7시간 만에 생성했습니다. 토큰 비용은 400달러에 불과했으며, Node.js 인프라를 제거하고 규칙 엔진을 최적화함으로써 회사에 연간 50만 달러의 절감을 가져다주었습니다.
프로덕션 환경에서 JSONata 확장성의 도전
JSONata는 JSON을 쿼리하고 변환하는 선언형 언어로, 위협 탐지에 널리 사용됩니다. 참조 JavaScript 구현체는 Reco의 Go 파이프라인과 호환되지 않습니다. 회사는 Kubernetes에서 Node.js 클러스터를 운영했습니다: Go 서비스로부터 RPC를 통해 JSONata 표현식을 처리하기 위해 최대 200개의 복제본을 사용했습니다. 이로 인해 IP 주소 부족 문제가 발생하고 인프라 비용만 연간 30만 달러가 들었습니다.
마이그레이션 접근법은 Cloudflare 사례에서 영감을 얻었습니다: 원본 구현체의 공식 테스트 스위트를 사용합니다. AI가 대상 언어로 코드를 생성해 모든 테스트가 통과할 때까지 반복합니다. Reco는 jsonata-js의 동일한 1778개 테스트를 적용했습니다.
포팅 및 테스트 과정
실제 작업 시간은 7시간이었습니다:
- Cursor가 JSONata 명세와 테스트를 분석했습니다.
- 13,000줄의 Go 코드를 생성했습니다.
- 전체 커버리지를 달성할 때까지 실패를 반복적으로 수정했습니다.
배포는 섀도우 모드로 진행되었습니다: gnata가 jsonata-js와 병렬로 트래픽을 처리하며 불일치를 로깅했습니다. 3일 동안 수십억 개의 이벤트에서 오류가 전혀 발생하지 않았습니다. 이 라이브러리는 참조 구현체의 불일치를 드러냈습니다: jsonata-js가 때때로 자체 명세를 위반합니다.
출처: Habr (https://habr.com/ru/news/1015970/)
경제적 영향과 최적화
Node.js RPC 플리트를 제거함으로써 연간 30만 달러를 절감했습니다. 추가로 20만 달러는 규칙 엔진 리팩토링에서 나왔습니다: 이전에는 JSONata 제한을 우회하기 위해 수만 개의 goroutine을 생성했으나, 이제 gnata와 직접 작동합니다.
전체적으로 통합에 1주일이 소요되었으며, 섀도우 기간을 포함합니다. Barak은 이를 "수술적 리팩토링"이라고 부릅니다—전체 재구축 없이 병목 지점에 AI 생성을 타겟팅한 것입니다.
gnata의 성능 이점:
- 간단한 표현식에서 최대 1000배 속도 향상.
- JSONata 테스트와의 완전 호환성.
- 커뮤니티를 위한 오픈소스 코드.
주요 교훈
- gnata: 13k줄 Go 코드, 1778/1778 테스트 통과.
- Cursor 토큰 비용 400달러 vs. 연간 절감 50만 달러.
- 섀도우 배포로 jsonata-js의 버그 발견.
- 200+ Node.js 복제본 제거로 IP 주소 부족 해결.
- 새로운 단계: 레거시 코드의 타겟팅된 리팩토링에 AI 활용.
gnata 라이브러리는 공개되어 있으며, AI를 사용한 JS 엔진의 Go 포팅 가능성을 보여줍니다. 중간/시니어 개발자에게는 명세를 유지하면서 마이그레이션을 자동화하는 사례 연구입니다.
— Editorial Team
아직 댓글이 없습니다.