如今,迭代速度取决于你能多快地配置好应用或智能体所需的计算机。
不同工作负载的运行时长、内存占用,以及对环境的控制程度各不相同。过去这意味着每种任务都要用不同的计算原语,因此产品迭代不仅要开发功能,还要配置基础设施。
我们打造 Vercel,就是为了让这些都不再成为你的问题。计算层是一个单一的系统,职责很简单:接收任何工作负载,组装它所需的机器,随时动态切换配置,并实时吸收突发的容量需求。
我们称之为 Fluid。
最先运行在它上面的是构建,随后是沙箱,现在是函数。只要你在 Vercel 上发布过项目,你就已经在不知不觉中用上了 Fluid。
Fluid 计算目前每天运行超过 1,500 万次构建,每周运行 2,500 万个沙箱,每月处理一万亿次请求。
函数、沙箱和构建运行在同一个系统上:Hive、Fluid 镜像(Fluid images)和 Vercel Drives。
计算的演变史
过去,更换机器配置意味着亲手动手。你得去电脑店买块硬盘或一条内存,自己装上去。
后来,你可以按需租用裸金属服务器,用它来托管网站、运行数据库或发送邮件。
再后来,云让你可以按任意配置申请机器,选择操作系统,用完即弃。
对智能体来说,连云都太慢了。标准虚拟机的配置速度跟不上它们的工作节奏,而这正是 Fluid 的强项。
工作负载如何在 Fluid 上运行
当工作负载到来时,Fluid 会按其形态组装一台机器。如果智能体需要运行代码,Hive 会提供一台隔离的虚拟机,通常是已经预热好的,因此可以立即就绪。你自己的镜像在其上启动,作为运行环境。随后挂载一个 Drive,你的文件就在原处,因为存储从来没有与机器绑定。
每种工作负载的需求各不相同。构建受限于计算,所以需要一台强劲的机器,CPU 和内存都要充足。函数受限于 IO,需要在请求到达的瞬间加载特定代码运行,通常用小型虚拟机。沙箱受限于灵活性,工作需要什么配置就用什么配置,并挂载一个 Drive 存放用户数据。
Fluid 计算是这一切所依赖的执行模型。多个请求运行在同一个实例上,而不是各自启动一个实例。工作立即开始,而且借助 Active CPU 计费,你只在代码实际工作时为 CPU 付费,等待数据库或模型响应时不收费。
Hive
Hive 是“硬件”。我们构建它是为了掌控自己的算力。它负责配置每个工作负载所运行的隔离机器:为任务挑选合适的机器,在我们的多租户环境中保证每台机器相互隔离,并且在全球范围内做到这一点。Hive 为每个产品提供统一的控制平面 API,因此我们的各个团队都构建在同一个基础之上,而不必各自维护一套。
Fluid 镜像
Fluid 镜像是运行环境。此前,操作系统是固定的:你运行的是云提供的那一个,而不是你选择的那一个。现在,你可以把自己的镜像推送到 Vercel Container Registry,并在沙箱和函数中运行。在后台,Vercel 会将镜像转换为一种我们称为 VHS(Vercel Hive Snapshot)的格式的 Fluid 镜像。这是 Dockerfile 部署和沙箱自定义镜像背后的优化启动格式,因此可以恢复而非启动,自定义机器在几毫秒内即可就绪。它使用与 Sandbox Snapshots 相同的技术,因此一个产品中的优化会惠及其余产品。v0 已经用它来构建和运行自己的开发环境。
Vercel Drives
Vercel Drives 是存储。你的文件保存在可移植、持久的存储中,随工作负载迁移,而不是困在某台机器的磁盘上。存储的寿命长于与之相连的计算,这正是整个系统得以运转的关键。Drive 不绑定任何单台机器,你可以更换其下的计算资源,并在下一次会话中从上次中断的地方精确继续。目前 Drive 已可挂载到沙箱(私有测试版),之后将扩展到 Fluid 的其余部分。
底层是同一个系统
这些是同一系统的不同形态,而不是各自独立的平台。由于每个产品的底层都是同一个计算层,启动时间、隔离、调度或缓存方面的改进会同时作用于函数、沙箱和构建,而不必重复构建三次。新形态的计算可以直接添加,无需重建底层基础。你不会得到彼此渐行渐远的独立原语。
而且这是真实可用的,不是示意图:Hive 能在几毫秒内配置出完整的虚拟机,并连带你的文件系统状态一起带过来,所以你获得的隔离强于 isolate 或容器,却不必为此付出启动时间的代价。
智能体工作负载
智能体要想行动迅速,就需要合适的机器,而且要立刻拿到。机器组装得越快,智能体工作得越快。
智能体运行的是不受信任的代码,所以机器需要有安全边界。它自带工具,所以机器需要有自己的环境。而且由于智能体不断地启动和销毁,它的状态必须比计算活得更久。Fluid 会立即组装出这样一台机器,然后在下一个任务到来时再组装一台全新的。
多年来,机器是固定不变的,你得让工作去适应它。
在 Fluid 中,你描述工作,机器围绕它成形。
