一天重写 JSONata,我用 400 美元干掉了公司 50 万美元的 K8s 集群

张开发
2026/5/20 14:34:22 15 分钟阅读
一天重写 JSONata,我用 400 美元干掉了公司 50 万美元的 K8s 集群
大家好我是Tony Bai。过去的几年我们见证了 AI 编程工具从“玩具”到“神器”的进化。无数开发者都在分享自己效率翻倍的喜悦。你有没有想过用 AI 来完成一次“外科手术式”的精准重构一天之内就能帮你把公司每年烧掉的 50 万美元约 360 万人民币的服务器成本直接砍到零这听起来像天方夜谭但它真实地发生了。就在前几天以色列安全公司 Reco 的工程师 Nir Barak 发表了一篇极其硬核的博客。他详细复盘了自己是如何在一天之内花费了仅仅 400 美元的 Token 费用利用 AI 将一个用 JavaScript 编写的核心组件JSONata完美地重写为了纯 Go 版本最终为公司节省了每年 50 万美元的开销并带来了 1000 倍的性能提升。这不仅仅是一个“AI 真牛逼”的简单故事。它背后揭示的是一套足以改变我们未来架构选型和技术债偿还方式的“AI 驱动重构AI-Driven Refactoring”实用方法。跨语言 RPC微服务架构中最昂贵的“性能税”要理解这次重构的意义有多么重大首先得看看 Nir Barak 的团队曾经陷入了多深的泥潭。他们的核心业务是一个用 Go 编写的高性能数据管道每天处理数十亿的事件。但其中有一个环节需要用到一个名为JSONata的查询语言你可以把它想象成带 Lambda 函数的jq来执行动态策略。尴尬的是JSONata的官方实现是 JavaScript 写的。这就导致了一个极其痛苦的架构他们的主业务 Go 服务为了执行这些规则不得不去远程调用RPC一个专门部署在 Kubernetes 上的庞大的 Node.js 服务集群。这个“小小的”跨语言调用给他们带来了三大噩梦恐怖的成本为了扛住流量这个jsonata-js集群常年需要维持300 多个 Pod 副本光是这部分每年就要烧掉30 万美元的计算资源。惊人的延迟一次最简单的字段查找比如email adminco.com在 Node.js 内部执行可能只需要几纳秒。但算上序列化、跨进程网络往返的开销一次 RPC 调用在啥也没干之前150 微秒的延迟就先进来了。对于一个每天处理几十亿事件的系统来说这简直是灾难。意想不到的运维黑洞随着业务增长Pod 数量一度多到耗尽了 Kubernetes 集群的 IP 地址分配上限Nir Barak 的团队当然也尝试过各种小修小补优化表达式、加缓存、甚至用 CGO 把 V8 引擎直接嵌进 Go 里……但这些都只是“头痛医头”无法根治“跨语言”这颗毒瘤。Cloudflare 的“抄作业”哲学转机发生在前几周。Nir Barak 看到了 Cloudflare 那篇刷爆全网的文章《我们如何用 AI 在一周内重构 Next.js》。Cloudflare 的做法极其“暴力”且有效他们没有让 AI 去创造新东西而是把 Next.js 现成的spec以及包含几千个 case 的官方测试套件Test Suite直接扔给大模型然后对 AI 下达了一个简单粗暴的指令“我不管你怎么实现给我写一个能在 Vite 上跑通所有这些测试的 API 就行”Nir Barak 看到这里瞬间被点醒了“我们面临的问题一模一样我们也有jsonata-js官方那套包含 1778 个测试用例的完整套件啊”与其让 AI 去搞创新不如把它变成一个任劳任怨、24 小时待命的“代码翻译工”于是他花了一个周末用 AI 制定了一个极其清晰的“三步走”作战计划第一步人类智慧用 Go 语言把jsonata-js的测试套件先“翻译”过来。第二步AI 体力把 JSONata 2.x 的官方文档和规范全部喂给 AI。第三步测试驱动对 AI 下达指令“开始写 Go 代码目标是跑通第一步的所有测试用例。”第二天他按下了“开始键”。7 小时400 美元13000 行 Go 代码接下来的故事充满了令人肾上腺素飙升的极客快感。Nir Barak 坐在电脑前看着 AI Agent 像一台失控的缝纫机一样疯狂地生成 Go 代码、运行测试、读取报错、然后自我修正。整个过程被划分成了几个“波次Waves”先实现核心解析器再实现内置函数最后处理各种边缘 case。在 AI 与测试用例的左右互搏之下仅仅7 个小时后奇迹发生了一个包含 13,000 多行纯 Go 代码的、名为gnata的全新 JSONata 实现诞生了。它完美通过了官方所有的 1778 个测试用例。而这整个过程的成本呢400 美元的 Token 费用。Nir Barak 在博客中晒出了一张截图数据显示在重构gnata的那一天AI 生成的代码占比高达 91.7%当他把这个 PR 提交到公司内部时立刻有人质疑 ROI投资回报率。而他的回答简单粗暴“上个月jsonata-js集群的成本是 2.5 万美元。现在是 0。”百倍性能与意外之喜“手术刀式”重构的深远影响成本降为零已经足够震撼但性能上的收益更是堪称“恐怖”。类别Go gnata(本地)Go 调用 Node.js (RPC)性能提升简单字段查找42-95纳秒170-230微秒1000~1500 倍复杂表达式0.5-1.2微秒160-310微秒25~90 倍这还只是开始。由于gnata是纯 Go 实现Nir Barak 团队得以进行更深度的“魔改”他们设计了一套两层评估架构。对于简单的字段查找gnata直接在原始的 JSON 字节流上操作实现了零堆内存分配Zero Heap Allocations只有遇到复杂表达式时才会启动完整的解析器。在接下来的两周内他们乘胜追击用gnata的批量处理能力替换掉了主数据管道中另一个极其臃肿、靠启动上万个 Goroutine 来并发处理规则的旧引擎。 结果又省下了每年 20 万美元。短短两周两次“外科手术式”的重构总共为公司节省了每年 50 万美元的开销。最让人意想不到的是这次重构还带来了组织层面的“意外之喜”gnata是公司内部第一个完全由 AI Agent 大规模参与生成的 PR。在 Code Review 的过程中团队成员被迫去学习如何分辨“AI 真正发现的并发 Bug”和“AI 瞎操心的代码格式问题”。这次经历为他们后续制定全公司的 AI Code Review 规范积累了宝贵的实战经验。小结我们不再只是“氛围感编码”在文章的结尾Nir Barak 提到了 AI 大神 Andrej Karpathy 最近的观点大意是“编程正在变得面目全非。在底层深厚的技术专长和品味正成为比以往任何时候都更强大的‘乘数效应放大器’。”Nir Barak 感慨道直到最近他自己都对那种完全由 AI Agent 生成代码的“氛围编码Vibe coding”持怀疑态度。但 2026 年 2 月成为了一个连他这样固执的开发者都无法忽视的“拐点”。gnata的诞生标志着我们不再只是用 AI 去写一些无关紧要的玩具项目。在拥有明确测试用例和边界规范的前提下AI 已经具备了对生产环境核心组件进行“手术刀式重构”的惊人能力。你准备好拿起这把名为“AI”的手术刀去切掉你系统里那些最昂贵、最臃肿的“技术肿瘤”了吗资料链接https://www.reco.ai/blog/we-rewrote-jsonata-with-ai 今日互动探讨在你的公司里是否存在类似的“异构技术栈”调用导致的性能瓶颈或成本黑洞你有没有想过可以用 AI 测试用例的方式对某个核心组件进行“代码翻译”式的重构欢迎在评论区分享你的架构痛点与大胆构想如果本文对你有所帮助请帮忙点赞、推荐和转发点击下面标题干货- 当 Go 还在追求极简时C 26 却又加了四大“史诗级”新特性- 拉个 JSON 居然要装 5 个第三方库终于明白 Go 的标准库到底有多“霸道”- Go 1.26 发布在即为何 json/v2 依然“难产”七大技术路障全解析- Kent Beck 最新思考AI 时代的“一人派对”代码审查的终结与重生- 从 HTTP/1.1 到 gRPCWeb API 与微服务的演进- 实战解剖Kubernetes 是如何管理数百个依赖的- TypeScript 编译器 Go 重写版提速 10 倍微软团队深度揭秘幕后工程细节 还在为“复制粘贴喂AI”而烦恼我的新极客时间专栏《AI原生开发工作流实战》将带你告别低效重塑开发范式驾驭AI Agent(Claude Code)实现工作流自动化从“AI使用者”进化为规范驱动开发的“工作流指挥家”扫描下方二维码开启你的AI原生开发之旅。

更多文章