文章摘要
Reco公司利用AI技术仅用一天时间重写了JSONata,实现每年节省50万美元成本。该公司近期完成B轮融资,累计融资8500万美元,专注于为企业提供SaaS安全平台服务。
文章总结
用AI一天重写JSONata,每年节省50万美元 | Reco
主要内容:
Reco团队利用AI技术,仅用一天时间重写了JSONata(一种JSON查询和转换语言)的实现,并将其命名为gnata。这一举措不仅显著提升了性能,还每年为公司节省了50万美元的成本。
关键细节:
背景与问题
- Reco的政策引擎需要处理大量JSONata表达式,原本使用JavaScript实现的jsonata-js运行在Kubernetes集群上,通过RPC与Go服务通信。
- 这种架构导致高昂的运维成本(每年约30万美元)和性能瓶颈(每次RPC调用需约150微秒)。
解决方案
- 受Cloudflare用AI重写Next.js的启发,团队决定用AI重写JSONata。
- 通过将jsonata-js的测试套件移植到Go,并让AI生成代码直至所有测试通过,最终在7小时内完成了13,000行Go代码的编写,成本仅为400美元。
技术实现
- 双路径评估:
- 快速路径:处理简单表达式(如字段查找、比较),直接操作原始JSON字节,避免解析开销。
- 完整路径:支持完整的JSONata 2.x语义,仅解析所需的JSON子树。
- 流式评估:优化了批量表达式的处理,合并字段路径扫描,减少重复读取。
- 双路径评估:
效果
- 简单表达式的性能提升1000倍,复杂表达式提升25-90倍。
- 移除了RPC集群,直接集成到Go服务中,节省了30万美元/年的成本。
- 后续优化规则引擎,进一步节省了20万美元/年,总计每年节省50万美元。
未来展望
- 作者认为AI辅助编程将成为趋势,2026年可能是“精准重构”的元年。
项目开源
gnata已开源,支持Go和WASM,详情见:github.com/RecoLabs/gnata。
作者
Nir Barak,Reco的首席数据工程师与架构师,专注于处理日均数十亿事件的高性能系统。
评论总结
以下是评论内容的总结:
主要观点和论据
对高成本的质疑
- 评论者对公司每年花费30万美元在JSON处理上表示震惊,认为这是不必要的开销。
- 引用:
- "Maybe I’m out of touch, but I cannot fathom this level of cost for custom lambda functions operating on JSON objects."(评论2)
- "For something so core to the business, I’m baffled that they let it get to the point where it was costing $300K per year."(评论10)
对现有Go实现的忽视
- 许多评论指出,已有多个Go语言的JSONata实现,质疑为何不直接使用现有方案。
- 引用:
- "The docs indicate there are already 2 other go implementations. Why not just use one of those?"(评论3)
- "The bad engineering part is writing your own replacement for something that already exists."(评论13)
对AI重写代码的质疑
- 评论者认为AI生成的代码可能存在潜在问题,且已有更成熟的解决方案。
- 引用:
- "The AI generated code can still introduce subtle bugs that lead to incorrect behaviour."(评论25)
- "AI company selling AI products claims to have solved a problem using AI when it could’ve solved it with better code and engineering foundations."(评论28)
对技术选择的批评
- 评论者认为最初的架构设计(使用Kubernetes和Node.js)过于复杂且低效。
- 引用:
- "Anyone who ships a k8s cluster to make a JS library available over RPC needs to have a long hard look in the mirror."(评论30)
- "This looks like a perfect candidate for existing, high quality, high performance, production grade solutions such quamina."(评论27)
对二进制格式的建议
- 部分评论者建议使用二进制格式替代JSON以提高效率。
- 引用:
- "Next maybe they will use a binary format instead of JSON."(评论4)
- "how many billions of compute are wasted because this industry can’t align on some binary format across all languages and APIs."(评论9)
不同观点的平衡性
支持AI重写的观点:
有评论者认为AI重写是一种快速有效的解决方案,尤其是在测试用例完备的情况下。
引用:- "My use case is a bit different... I was amazed how far I got just asking the AI for progressively more functionality."(评论23)
反对AI重写的观点:
更多评论者质疑AI生成的代码的可靠性和必要性,认为应优先考虑现有成熟方案。
引用:- "These ‘solutions’ place a lot of faith in a ‘complete’ set of test cases."(评论19)
总结
评论主要围绕以下几点展开:
1. 对高成本和不合理架构设计的批评。
2. 对忽视现有Go实现的质疑。
3. 对AI重写代码的可靠性和必要性的争议。
4. 建议使用二进制格式或其他高效方案替代JSON。
5. 对技术选择和管理决策的反思。
评论中既有对AI技术的肯定,也有对其局限性和风险的担忧,同时强调了工程实践中应优先考虑成熟和高效的解决方案。