关于Serverless架构

背景

Serverless(无服务器架构)近年来逐渐成为云计算领域的一个热门方向。它的核心理念是:开发者无需关心服务器的部署、运维和扩容,只需要专注于业务逻辑的开发。

在传统架构中,一个系统上线通常需要准备服务器、部署环境、配置网络、监控资源以及处理扩容问题,这些工作都需要额外的运维成本。而在 Serverless 架构中,这些基础设施全部由云厂商负责管理,开发者只需要编写函数代码并部署即可运行。

Serverless上云

Serverless 通常以 云函数(Function as a Service,FaaS) 的形式提供。例如阿里云函数计算(FC)、AWS Lambda、腾讯云 SCF 等。开发者只需要上传代码,当有请求触发时,平台会自动运行函数,并根据实际的调用次数和运行时间进行计费。

这种模式带来的最大变化是:应用可以按需运行,而不是长期占用服务器资源。

例如在一些业务场景中:

  • 定时任务处理
  • Webhook 事件触发
  • 图片处理
  • 数据转换

这些任务并不需要持续运行的服务器,通过 Serverless 可以在事件触发时启动函数执行任务,从而节省大量资源成本。

Serverless的弹性特性

Serverless 的一个重要特点是 自动扩缩容能力。当系统请求量突然增加时,平台会自动启动更多函数实例来处理请求;当流量降低时,又会自动释放资源。整个过程无需人工干预,并且具备天然的分布式和容灾能力。

对于一些小型项目或创业团队来说,这种模式非常友好。传统模式下即使业务访问量很小,也需要长期维护服务器,而 Serverless 按调用次数计费,可以大幅降低前期的部署和运维成本。例如阿里云函数计算(FC)目前每个月提供约 100 万次免费调用额度,对于很多小型应用来说已经足够使用。

不过 Serverless 架构也并非完美,目前仍然存在一些需要权衡的问题。

其中最常见的就是 云厂商绑定问题。在 Serverless 模式下,函数往往会深度依赖云平台提供的服务,例如 OSS、RDS、消息队列、日志系统等。当系统大量使用这些能力之后,如果需要迁移到其他云厂商,往往需要对代码进行一定程度的改造。

另外一个比较典型的问题是 冷启动(Cold Start)。由于 Serverless 的函数通常运行在容器或沙箱环境中,当函数长时间未被调用时,平台会释放资源。当新的请求到来时,需要重新启动运行环境,这个过程就会带来一定的延迟。

在 HTTP 请求或者事件触发的场景中,第一次调用函数时可能会明显感觉到响应变慢。如果业务对延迟非常敏感,可以通过购买 预留实例(预热资源) 的方式来减少冷启动带来的影响,但这样也会增加一定的资源成本。

总体来说,Serverless 更适合以下场景:

  • 事件驱动型应用
  • 短时间运行的任务
  • 不稳定流量的服务
  • 初期规模较小的项目

而对于一些需要长期运行、高性能或者高度定制化环境的系统,例如大型数据库服务、持续运行的计算任务等,传统的服务器架构仍然更加适合。

总结来看,Serverless 并不是完全替代传统架构,而是一种新的计算模式。它的核心价值在于:让开发者更加专注于业务本身,而不是基础设施。

随着云计算的发展,越来越多的平台开始提供 Serverless 能力。未来的系统架构也很可能会逐渐演变为:

Serverless + 微服务 + 容器化 的组合模式。

文章目录

随心笔记

技术无止境 创新不停驻