피드로 돌아가기
We Rewrote JSONata with AI in a Day, Saved $500K/Year
Hacker NewsHacker News
Backend

Reco가 JSONata를 JavaScript에서 Go로 재작성해 연간 50만 달러 비용 절감 및 1,000배 성능 향상

We Rewrote JSONata with AI in a Day, Saved $500K/Year

2026년 3월 26일12advanced

Context

Reco의 정책 엔진은 데이터 파이프라인의 수십억 개 이벤트에 대해 JSONata 표현식을 평가했으나, 참조 구현이 JavaScript이고 파이프라인이 Go로 작성되어 있었다. 매 이벤트마다 Node.js 프로세스로 RPC 호출을 수행해야 했으므로 직렬화, 네트워크 전송, 평가, 역직렬화 과정에서 연간 30만 달러의 계산 비용이 발생했고, RPC 왕복 지연 시간(약 150마이크로초)이 나노초 단위 작업을 마이크로초 단위로 악화시켰다.

Technical Solution

  • JSONata 2.x 명세와 테스트 스위트를 Go로 포팅: 공식 jsonata-js 테스트 케이스 1,778개를 기준으로 gnata 구현
  • 이원 평가 아키텍처 도입: 단순 표현식(필드 조회, 비교, 21개 기본 함수)은 JSON 전체 파싱 없이 원본 바이트에서 직접 평가하고, 복잡한 표현식은 필요한 부분트리만 파싱하는 완전 평가기를 사용
  • 스트리마 계층 설계(StreamEvaluator): N개의 컴파일된 표현식을 구조적으로 유사한 이벤트에 대해 평가할 때 모든 표현식의 필드 경로를 단일 스캔으로 병합하여 원본 이벤트 바이트를 한 번만 읽음
  • 스키마 기반 캐싱: 이벤트 스키마별로 평가 계획을 한 번만 계산하고 불변 상태로 캐싱하여 읽기 시 원자적 로드로 처리
  • 규칙 엔진 내부 리팩토링: 요청 결합 패턴 기반 적시 배치 처리, 단기 캐시, 그룹화된 보강 쿼리 적용

Impact

  • gnata 구현으로 jsonata-js 월간 비용 25,000달러에서 0달러로 감소
  • 일반적인 표현식에서 1,000배 성능 향상
  • 규칙 엔진 리팩토링으로 월간 18,000달러 추가 절감(연간 200,000달러)
  • 총 연간 비용 절감액 500,000달러
  • 구현 소요 시간 7시간, 토큰 비용 400달러
  • 13,000줄의 Go 코드 작성
  • 통합 테스트 2,107개 추가 작성
  • 200개 이상의 Kubernetes 레플리카 축소 가능

Key Takeaway

AI를 활용한 코드 생성은 기존 테스트 스위트와 명세가 명확한 경우 언어 경계 제거 같은 구조적 문제를 해결하는 데 효과적이며, 단순한 성능 최적화가 아닌 아키텍처 변경을 통해 기하급수적 비용 절감을 달성할 수 있다.


다중 언어 마이크로서비스 환경에서 고빈도 RPC 호출로 인한 직렬화 오버헤드가 발생할 때, AI 기반 재작성을 통해 성능이 중요한 컴포넌트를 메인 언어로 이식하면 네트워크 지연 제거와 동시에 아키텍처 단순화로 인한 운영 복잡도 감소를 기대할 수 있다.

원문 읽기