为什么选择无服务器模式?
鉴于我们之前直播讲解了如何使用 HarperDB 和 Vercel 构建无服务器 Next.js 应用,我觉得有必要对“无服务器”这个概念进行一番总结。我们越来越频繁地看到这个词,但我们真的了解它的含义以及它为何如此流行吗?让我们一起来探讨一下。
一位作者指出:
无服务器计算是一种云执行模型,在这种模型中,云服务提供商会动态分配(并仅向用户收取)执行特定代码所需的计算资源和存储费用。当然,其中仍然会用到服务器,但服务器的配置和维护完全由服务提供商负责。
另一篇文章描述道:
无服务器架构指的是一种理念,最初是为了方便软件开发者将软件托管在公有云上而设计的,但其影响范围也延伸到了人们最终使用这些软件的方式。它的主要目标是让软件开发者更容易编写可在云平台上运行、且执行明确定义任务的代码。
最后,另一位作者认为“无服务器”并非仅仅指代单一概念,而是涵盖了两个相互重叠的领域。最初,“无服务器”的定义较为宽泛,但该术语已演变为更为精确的定义,如下第二点所示:
1) 集成第三方云托管应用程序和服务以管理服务器端逻辑和状态的应用程序。2
) 服务器端逻辑仍然由应用程序开发人员编写,但与传统架构不同的是,它运行在无状态的计算容器中,这些容器由事件触发、短暂存在,并完全由第三方管理。
所以,无服务器并非真的意味着“没有服务器”。它指的是托管在云端或无状态容器中的软件,用户无需操心管理、托管或维护。服务器仍然在使用,但无服务器供应商通常提供按使用量计费的后端服务,而不是按固定带宽或服务器数量收费。简单来说,无服务器系统是一种无需管理基础设施即可构建应用程序的方法。无服务器架构的总体目标是在提高灵活性和创新性的同时,减少管理和维护的麻烦。听起来简直是梦想成真!
示例
您可能熟悉 AWS 的无服务器服务模型 Lambda。或者,您可能更喜欢 Azure Functions 或 Google Cloud Functions。Vercel 是另一个支持部署无服务器函数的云平台。例如,我们来看看 HarperDB 云实例的配置。我们采用无服务器架构,使用 AWS Lambda 函数进行实例配置,包括分配 AWS 资源和创建元数据,后端数据服务则完全由 HarperDB 提供支持。HarperDB 使用 REST API 作为原生接口,因此非常适合无服务器函数使用,因为连接数限制不再是问题。当然,无服务器架构的例子还有很多——想想那些在被调用时运行,并在完成后自动关闭的软件就知道了。
优点和缺点
任何技术或架构都有其优缺点,无服务器计算也不例外。Martin Fowler指出:“无服务器架构的优势在于显著降低运营成本、复杂性和工程开发周期,但代价是更加依赖供应商,且支持服务相对不够成熟。”这篇文章也提供了一些非常精辟的见解,以下我将结合几个不同的来源进行总结:
优点
- 简便易用;无需进行基础设施搭建、配置、部署和管理。
- 节省成本;云计算的新经济模式为提高效率和降低成本提供了机会;只需为使用的资源付费;减少运营成本。
- 可扩展性和低延迟;云平台会为您分配工作负载,因此更容易进行横向扩展;全球接入点可减少传输时间。
- 提高生产力;开发人员可以专注于代码或项目,而不是行政和维护工作。
- 安全性提升;由于开发者只能使用适用于无服务器环境的代码结构,因此他们更有可能编写符合最佳实践的代码。
- 节省时间;减少生产、开发和部署过程中的步骤。
- 提高利用率;采用基于使用量的收费结构,客户租用的是功能而不是服务器。

缺点
- 云锁定;许多服务仅限于某一家云服务提供商,这会将云服务提供商的客户锁定在单一基础设施中,从而阻碍冗余和成本节约(点击此处了解更多信息)。
- 安全/风险;不再拥有或控制操作系统、容器或应用程序运行时。
- 服务级别不确定;某些服务级别协议尚未针对无服务器架构完全定义。
- 单体式倾向;组织倾向于将所有功能部署在同一个平台上,共享相同的上下文,这可能导致难以扩展。
- 沟通;开发人员和运维人员可能缺乏沟通,因为开发人员不再需要了解托管其代码的系统的要求。
好了,各位,这就是全部内容!无服务器计算的定义在过去几年中不断发展,维基百科目前将其概括为“一种云计算模型,云服务提供商按需分配机器资源,并代表客户维护服务器”。总而言之,只要每个团队或组织努力了解哪种无服务器架构或技术最适合其独特的目标,那么无服务器的优势似乎就大于劣势。然而,如果您没有做好充分的调查研究,就被某个特定的云服务提供商锁定,最终可能会面临高昂的成本和冗余不足的问题。因此,在技术决策方面投入时间,才能在日后获得丰厚的回报。
等等,还有更多!
HarperDB于 3 月 23 日举办了一场研讨会,您可以跟随讲解构建自己的无服务器应用程序!我们邀请了Vercel 的解决方案架构师Lee Robinson来主持这场趣味十足的互动活动,他同时也是 Next.js 开发关系负责人。Lee 使用 HarperDB 构建了一个无服务器 Next.js 应用程序,并将其部署到 Vercel。该应用程序将利用 Next.js API 路由(这些路由以无服务器函数的形式部署在 Vercel 上)通过我们的 REST API 连接到 HarperDB。Vercel 是一个面向静态网站和无服务器函数的云平台。它使开发人员能够托管即时部署、自动扩展且无需人工干预的网站和 Web 服务;所有这一切都无需任何配置。Next.js 是一个开源的 React 框架,用于开发服务器端渲染和静态 Web 应用程序。
- 观看直播
- 启动一个免费的 HarperDB 实例,以便与 Lee 一起编写代码。
- Lee 在 GitHub 上的代码
- 注册一个免费的Vercel账户
