Vercel正在为开发者提供更多在其平台上运行后端服务的选择。
周四在旧金山举行的Ship大会上,该公司推出了Daemons,一项用于持续运行后台工作进程的新服务,同时还将其对Python的支持升级为正式可用版本。
此外,该公司还将面向AI智能体的持久化存储服务Drives升级为正式可用版本。
常驻工作进程与基于拉取的任务
Daemons目前处于公开测试阶段,它允许开发者部署容器,并指定每个区域应运行多少实例。Vercel会确保这些进程持续运行,并在进程退出或崩溃时自动重启。该服务在发布时支持基于拉取的工作负载,允许工作进程从队列或数据库中获取任务,并在任务到达时进行处理。
Vercel首席技术官马尔特·乌布尔(Malte Ubl)向The New Stack表示,公司目前正致力于向技术栈更底层的方向推进。
"我们要看看大家现在都在做什么,然后确保其中更大一部分人可以只用Vercel作为他们的基础设施提供商,"他说。
该公司此前已经提供队列和持久化工作流服务,而其Services功能则让开发者能够同时部署前端和后端。
乌布尔表示,这些功能涵盖了请求驱动型的工作,但并不能覆盖复杂后端所做的一切工作。"真正不适合纳入这个范畴的,是那些出现在复杂后端工作负载中的任务,"他说,"在这些场景中,你本质上需要对某种队列进行处理。"
他以Vercel自身的部署流水线为例来说明这类工作负载。
"当你调用我们的API进行一次部署时,我们不会在处理你请求的那个进程里直接执行部署操作,因为我们实际上无法支持无限数量的并发部署,"乌布尔说。GitHub的速率限制是需要有所节制的一个原因,而Vercel现有的计算基础组件也无法为这类工作进程提供"对并发量的良好控制"。
有了Daemons之后,"它们启动后会说,我在这里,给我分配任务,然后它们就会随着任务的到来持续处理,"他说。
该公司举的Daemons使用示例,将Next.js前端与Python API结合,同时还搭配了一个容器化的视频处理器。该容器打包了Python依赖项和FFmpeg媒体框架,然后从Vercel Queues中拉取任务,用于生成播放文件和缩略图。
乌布尔表示,转码是一个典型场景,这类工作负载"极度依赖CPU","我需要的是始终保持100% CPU占用的计算机"。
这也使得Daemons处于与Vercel的沙箱完全相反的另一端。"它们几乎是临时性的对立面,"他在谈到Daemons时说。"对于临时性需求,你有沙箱可用,"他说。Daemons会持续在线运行,但并非由来自互联网的请求触发,而是主动去寻找任务。
开发者可以通过Git或Vercel命令行工具进行部署。Vercel会构建容器镜像并将其存储在其容器注册表(Container Registry)中。
该公司自身的控制平面API有相当大一部分就运行在Vercel之上。乌布尔表示,这部分每月大约产生十亿次请求,目前Vercel正开始将其许多异步工作负载迁移到Daemons上。
他承认,这种模式并非由Vercel发明,"我们推出它,是因为大家确实非常需要这个功能。"
托管运行环境还是容器
如果你已经深度使用Vercel生态系统,可能会好奇这一切与Vercel Functions之间是什么关系。
Vercel表示,自容器支持进入公开测试阶段以来,已有5000个团队完成了150000次容器部署。容器让开发者能够打包应用程序及其自有的运行环境和系统库,从而扩大了他们可以部署的软件范围。
乌布尔认为,这里的权衡在于由谁来保持镜像的及时更新。对于Node、Bun或Python的托管运行环境,Vercel会直接应用安全更新,客户无需重新部署,乌布尔说。而对于容器,"你确实需要重新部署,这最终是你自己的责任,"他说。"从我们的角度来看,这只是一堆字节而已。"
与此同时,针对FastAPI、Flask和Django等框架的Python支持现已正式可用。应用程序运行在标准的CPython之上,并可使用PyPI上的依赖项,而Vercel则负责处理框架检测、构建和扩缩容。该公司表示,目前已有150000个团队在其平台上运行Python后端,其中包括OpenAI、Polymarket和Exa的工程师。
能够在环境切换后依然留存的文件
Vercel Drives是一个很好的例子,说明智能体正在如何改变存储等后端服务的需求。Vercel的Drives服务将智能体的文件与执行其代码的沙箱分离开来。智能体可以将该存储盘挂载到新的沙箱中,更换运行环境,并继续使用它此前已经创建的文件。
"我不会说这是业界首创,但它确实是一种新型存储产品的实例,"乌布尔说。他将其描述为类似EBS的网络存储盘与对象存储的混合体,他认为这是AWS目前所不具备的。
他表示,写入操作始终会落到本地NVMe磁盘上,然后异步流式传输到对象存储;读取操作则在数据已经存在本地磁盘时直接从本地读取,否则就按块流式传输进来。
"你会拥有数量非常庞大的独立磁盘,由于它们本质上只是存放在S3中的文件,所以运营成本可以做到极其低廉,"他说。
Drives与快照的对比
乌布尔表示,许多沙箱服务提供商(包括Vercel自身)都提供快照功能,但他认为Drives是更优的模式。
"快照的问题在于它们会变得非常庞大,因为你最终会对每次都相同的各种内容进行快照,"他说。"实际情况是,智能体真正需要用到的通常就是某个目录,比如说/home/agent,所有东西都在那里。其他的东西它们基本不关心。"
他表示,只挂载那一个目录,就意味着每个智能体都可以从同一个缓存的基础镜像启动。"对它们来说成本更低,速度更快,基本没有任何缺点。"
乌布尔补充说,Vercel并不会取消快照功能,但正在鼓励客户转向使用Drives。
Drives让这些智能体能够复用彼此的工作成果。一个智能体可以准备好数据集,其他智能体则可以挂载只读副本进行分析或生成报告,并将各自的结果单独保存。智能体还可以对某个存储盘进行分支(fork),在彼此独立的可写工作空间中测试不同的方案。这些分支出来的副本不会合并回原始存储盘。
乌布尔表示,在实际操作中,这意味着要告诉智能体应该把内容写到哪里。"当你使用沙箱时,你总是会告诉你的智能体应该把东西写在哪里,"他说,通常是像/workspace这样的根目录。"基本上每条提示词都会以这句话开头,然后那就是你挂载到持久化存储盘上的内容,仅此而已。"
Drives及其分支功能现已正式可用。该服务适用于所有Vercel套餐,默认容量为1 TiB(Hobby套餐为1 GiB),最高可配置到16 TiB。
对于已经在Vercel上部署前端的团队来说,是否在该平台上运行工作进程或Python API,将变得更容易决策。团队能够继续留在该平台上运行的每一项额外后端服务,就意味着其开发者需要维护的部署系统又少了一个。
