跳到主要内容
Q drop
登录
Web 技术

无服务器

概要

无服务器(serverless),是把服务器的配置、扩缩容、打补丁、故障处理等基础设施管理委托给云服务商的架构。开发者专注于编写应用程序代码,不需要关心这些代码在什么时候、在哪台服务器上、以多少台来执行。它的意思不是“没有服务器”,而是“不管理服务器”。

按量计费与成本结构

无服务器的一大特点,是只按发生的请求计费的按量计费模式。传统的服务器 24 小时持续运行,所以即使在流量为零的深夜时段也会产生成本。在无服务器中,没有请求的话,那部分的执行费用也不会产生。

对个人开发和小规模服务来说,这个特性是很大的优势。每月几千次请求左右的服务,请求数能落在 AWS Lambda 的免费额度(每月 100 万次请求)以内。服务成长、流量增加时,也会自动横向扩展,所以事先做容量规划的负担很小。

冷启动及其对策

无服务器的课题之一是冷启动。一段时间没有请求,执行环境就会被销毁,下一次请求时需要重新构建环境。这个初始化处理所需的时间,从不到 100 毫秒到超过 1 秒不等。

减轻冷启动影响的方法有好几种。选择运行时(不同种类启动速度不同)、减小部署包的大小、利用 Provisioned Concurrency(事先确保执行环境的功能)等。像提问箱服务这样需要对用户操作实时响应的服务,需要设计得让用户不太感受到冷启动。

提问箱服务的无服务器架构

提问箱服务从前端到后端都由无服务器构成。前端用 OpenNext 把 Next.js 部署到 Lambda 上,API 用 Lambda Function URL 提供。数据库使用 DynamoDB,认证令牌的发送使用 SES,内容过滤使用 Bedrock。

在这种架构中,没有管理服务器本身的工作,基础设施成本随流量增减。如果让 EC2 实例一直运行,即使没有流量也会按运行时间产生费用,而无服务器架构在流量少的期间更容易压低费用。

这篇文章对你有帮助吗?

相关术语

相关文章

想创建你自己的提问箱吗?

只需邮箱地址即可注册,无需密码。

免费开始