Cloudflare的Deno收购:重塑开发者工具的范式
Cloudflare收购Deno标志着JavaScript服务端进入「运行时即平台」纪元,开发者从基础设施组装工转变为平台能力订阅者。
Cloudflare 买下 Deno,买的不是运行时,是 JavaScript 容器的收费权。
Ryan Dahl 2018 年在 JSConf EU 上承认 Node.js 的十大遗憾时,他手里拿的不是修补方案,是一张重写的蓝图。六年后,Deno 团队整建制进驻 Cloudflare,这笔交易的标的从来不是 deno 这个二进制文件 —— GitHub 上 fork 3.2 万、star 9.8 万的开源项目早就跑不掉了。Cloudflare 真正拿到手的是:一个把计算、存储、通信打包成「JavaScript 容器」的完整工具链,加上把这套工具链塞进全球 335 个边缘节点的分发网络。
这事儿就有意思了。
运行时战争早结束了,平台战争才刚开始
Node.js 赢了生态,Bun 赢了启动速度,Deno 选了最难的赛道:把基础设施变成语言内置能力。
回头看 Deno 的每个技术决策,全是为平台化铺路:URL 导入消灭 node_modules,是为了让模块天生可寻址、可缓存、可边缘分发;内置 deno fmt/lint/test/compile,是把工具链从「开发时依赖」降维成「运行时保证」;权限沙箱 --allow-net/--allow-read,不是给开发者用的安全感,是给多租户平台隔离未受信代码的硬核原语。
Deno Deploy 2021 年上线时,我就说过:这不是 Serverless,这是把 V8 isolate 当容器卖。但 Deno 自己跑不动这盘棋 —— 全球部署要钱,存储要钱,WebSocket 要钱,连带着 Deno.KV 这种强一致性键值店也要自己养集群。2023 年 Deno Deploy 只有 35 个地区,冷启动中位数 80ms,而 Cloudflare Workers 早就把 335 个 PoP 的冷启动压到 0ms 级别。
Workers
Deploy
Lambda@Edge
Edge
Edge
收购宣布那晚,我在 Discord 里看 Deno 核心维护者 Luca Casonato 发了一句:「我们终于不用自己修 Kubernetes 了。」这就是全部商业逻辑:Deno 造好了引擎、变速箱、底盘,Cloudflare 提供高速公路、收费站、加油站。两边合起来,才是一个能跟 AWS Lambda、Vercel 真刀真枪干的「JavaScript 容器平台」。
反方会说:这不就是又一个买买买毁开源的剧本?
Lobste.rs 那个帖子下,最高赞回复是:「Cloudflare 吃掉开源团队,拆解项目,最后只剩品牌。」这担心不无道理 —— 看看 HashiCorp 被 IBM 收购后 Terraform 许可证变更,看看 Elastic 把 OpenSearch 逼出来的历史。
但 Deno 这手牌不一样,有三张底牌护身:
第一,许可证是 MIT,不是 BSL。 Ryan Dahl 2020 年就把许可证从 Mozilla Public License 改成 MIT,明确允许闭源商用。Cloudflare 买下来改许可证的法律成本极高,社区分叉成本极低 —— deno 这两个字母随时能变成 dino、reno、venom。
第二,JSR(JavaScript Registry)已经跑通了联邦化分发。 JSR 不像 npm 那样中心化,它是内容寻址 + 签名验证的去中心化注册表。Cloudflare 即使想把 JSR 关进自家花园,也得先搞定数百万个 jsr:@scope/pkg 的验证链。这就像 GitHub 想把 Git 协议私有化 —— 协议层早就跑通了,治理层锁不住。
第三,Fresh 框架把「岛屿架构」做成了边缘原生。 Fresh 不做客户端水合,全服务端渲染,交互靠 <Island> 标记的微小水合。这架构天生适配 Cloudflare Workers 的零冷启动,也天生不适配 Vercel 的 Next.js 那套「大包客户端」路线。Cloudflare 买 Deno,相当于买了一套能跟 Next.js 正面硬刚的框架护城河 —— 而且这护城河是开源的,跑不掉。
我打个赌:两年内,Deno CLI 依然会按周发版,JSR 依然会同步镜像到 npm,Fresh 依然会支持部署到 Vercel。Cloudflare 赚的是 Subhosting 和 Deno for Enterprise 的钱 —— 让 SaaS 厂商把「运行用户代码」这个脏活累活外包给 Cloudflare 的隔离沙箱。
数据中心里的部署工程师
有家做表单构建的 SaaS 公司,工程师小林维护着「用户自定义脚本」功能。早期方案是 vm2 跑在自家 K8s 里,去年有个用户传了个 while(true){} 把整个节点 CPU 打满,顺带拖死旁边的支付服务。小林连夜改用 isolated-vm,又踩坑:V8 isolate 共享堆内存,恶意脚本能通过 SharedArrayBuffer 侧信道读隔离邻居的加密密钥。
后来他们接入 Deno Deploy Subhosting。代码改成三行:
const sandbox = await Deno.subhosting.createSandbox({
limits: { cpuMs: 500, memoryMb: 64 }
});
await sandbox.run(userCode);
账单按毫秒算,隔离靠 Linux KVM + gVisor 双层,不用小林操心内核漏洞。上周他跟我说:「以前我是运维 V8 的人,现在我是调用 V8 的人。区别在于,凌晨三点报警响了,我不用起床。」
这件事在边缘计算行业里反复发生。工具把「运行时运维」这层认知负荷剥离后,开发者不再关心 isolate 怎么调度、KV 怎么复制、WebSocket 怎么保活 —— 他们开始关心 「我的业务逻辑在边缘节点上离用户还有多远」。
真正的范式迁移:从「下载运行时」到「订阅平台能力」
这张图里的 Phase 3,才是 Cloudflare 砸钱买 Deno 的真相。
以前 Vercel 卖的是「帮你跑 Next.js」,Netlify 卖的是「帮你跑静态站点」,它们的护城河是 框架绑定 —— 你用 Next.js 就得用 Vercel,用 Astro 就得用 Netlify。但 Deno + Cloudflare 卖的是 语言级基础设施:你写 TypeScript,剩下的计算、存储、通信全是平台内置能力,不用装包、不用配 YAML、不用选区域。
JSR 在这里扮演关键角色:它不是 npm 的替代品,是 边缘原生的包管理器。jsr:@std/http 导入时自动解析到最近 PoP 的缓存节点,版本锁定用内容哈希而非语义化版本号,发布时自动生成类型声明并分发到全网。这意味着:依赖图不再是构建时产物,而是 运行时可查询的拓扑结构。
我想起 Ryan Dahl 2022 年那篇《JavaScript Containers》博客里的比喻:「每个应用不该自己组装基础设施,就像每个集装箱不该自带港口、铁路、吊车。」Cloudflare 买 Deno,就是把港口、铁路、吊车全买下来,告诉开发者:「你们只管造集装箱(写业务代码),剩下的归我们。」
开发者会失去什么?控制权。
这才是没人爱说、但人人都在感受的代价。
当 deno deploy --project=myapp 变成默认工作流,当 Deno.KV 替代 Redis、 D1 替代 PostgreSQL、 Durable Objects 替代状态管理库,开发者的技术栈就完成了 从「组装件」到「订阅件」的质变。
你不再决定:用什么 KV 引擎、怎么分片、一致性等级怎么选、冷备热备怎么切。这些决策被 Cloudflare 的产品经理、SRE、网络工程师替你做好了 —— 做得比你好,但不一定适合你。
有个做实时协作编辑的创业团队,去年把信令服务从自建 ws + Redis 迁到 Deno Deploy + Durable Objects。迁完后延迟从 120ms 降到 35ms,运维成本归零。但上个月他们想做端到端加密,发现 Durable Objects 的存储加密密钥由 Cloudflare 托管,无法自带密钥(BYOK)。为了合规,他们不得不把核心协作状态迁回自建集群,只把非敏感信令留在边缘。
「省下的运维成本,最后用在绕过平台限制上。」CTO 跟我吐槽,「这哪是 Serverless,这是 Server-someone-else's-rules。」
这也是工具重塑人的一面:当平替换掉选择,便利就变成了锁定。
我的判断:未来两年,JavaScript 服务端的分水岭不是性能,是「你愿不愿把基础设施决策权交出去」
Cloudflare + Deno 这对组合,会把 JavaScript 服务端开发推向两极:
- 一极:中小团队、AI Agent 托管、边缘中间件、Serverless 函数 —— 全拥抱平台能力,享受零运维、零冷启动、全球分发。他们会成为 Cloudflare 最忠实的租户,月账单从 $0 到 $5000 自然增长。
- 另一极:强合规、强定制、强数据主权的场景 —— 金融风控、医疗记录、政府系统、自建 CDN 的大厂。他们会继续用 Node.js/Bun 跑在自家 K8s 或裸金属上,把 Deno 当作「边缘侧的轻量网关」而非核心运行时。
中间地带会被挤压得很薄。
JSR 会不会成为下一个 npm?我看戏。npm 的护城河不是注册表,是 15 年积累的 300 万包生态 和 CI/CD 流水线里的 npm ci 肌肉记忆。JSR 真正的价值是给 Deno/Cloudflare 自己的生态做内容分发网络 —— jsr:@deno/kv、jsr:@cloudflare/durable-objects 这些第一方包才是它的护城河。
Fresh 能不能打过 Next.js?短期不能。Next.js 有 10 万+ 的 Vercel 付费客户、有 React 团队背书、有 app/router 这种改变心智模型的架构。但 Fresh 不需要打赢 Next.js,它只需要守住 「边缘原生、零水合、TypeScript 优先」 这个细分心智,拿下「不想要 React 重资产架构」的那批开发者就够 Cloudflare 赚回收购成本了。
开发者工具的终局不是更好的 CLI,是不需要 CLI。
Deno 加入 Cloudflare,标志着 JavaScript 服务端正式进入「运行时即平台」纪元。在这个纪元里,赢家不是跑得最快的引擎,而是把引擎、油、路、收费站全包圆的那个平台。
而我们这些写代码的人,正在从「基础设施组装工」变成「平台能力订阅者」。这笔交易里,有没有你的份?