一文看懂Serverless架构的优缺点

作者:SparkFabrik团队 翻译:沈建苗

Serverless计算是一种执行模式,云服务提供商通过动态分配资源,负责执行部分代码。在这种模式中,客户只需为实际使用的那部分资源付费。

代码通常在无状态容器中运行,容器可以由诸多事件触发,包括HTTP请求、数据库事件、队列服务、监测警报和文件上传等事件。

那么,为何选择Serverless模式?

Serverless模式又叫“函数即服务”(FaaS),可以说是解决IT团队历来遇到的几个问题的理想方法。当应用程序在专有服务器上运行,公司负责提供和管理底层资源时,公司发现面临这种处境:

• 必须为服务器的运行付费,哪怕请求实际上并未予以处理。

• 负责服务器和所有底层资源的正常运行和维护。

• 必须管理服务器安全更新。

• 随着使用量增减,必须相应调整服务器的大小。

在没有运营团队专门管理服务器的小公司以及拥有专用资源的大公司,执行这些操作需要占用构建和维护应用程序这类核心活动的时间。这时候,Serverless计算就有了用武之地。

采用Serverless架构的好处

Serverless架构正变得越来越流行。的确,据MarketsandMarkets进行的研究显示,预计该行业的收入将从2020年的约76亿美元增加到2025年的约211亿美元,年复合增长率(CAGR)达22.7%。采用Serverless架构方面出现这股增长势头,归因于这种新的开发模式带来了一系列优点。具体如下:

1. 按需付费

不像基础设施即服务(IaaS)模式需要组织租用硬件资源——无论实际使用情况如何,函数即服务(FaaS)模式则基于按需付费:事件调用函数时,只需针对执行函数的那段时间为所用的资产付费。

只需为实际使用的服务付费让团队可以专注于产品的开发及其独特功能,不用操心成本或服务的实施,实际上这些服务集成起来以支持主要的功能。

2. 可扩展性

可扩展性对快速发展的公司而言是一个关键因素,因为需要纵向或横向扩展基础设施。这项任务颇具挑战性,常常需要大量的时间和精力,运营成本会相应增加。

Serverless环境消除了这些限制因素,让公司可以从小处着手,随后逐渐支持公司增长,服务不会中断,无需实施成本高昂的计划外变更。

3. 灵活性和适应性

由于计算资源的配置和管理这块扔给了云提供商,公司能够迅速采用新技术,可以迅速有效地响应业务需求和市场需求,不必担心基础设施升级及所有相关成本。

4. 高可用性和容错性

众所周知,在如今的公司中,业务严重依赖IT:这就是为什么IT服务必须保证高可用性。云提供商提供了一套精心设计的全球基础设施,能够为客户工作负载保证可用性和弹性。

5. 业务连续性和灾难恢复

当下,业务连续性是许多公司的一个关键方面;因此,业务活动必须得到可靠的灾难恢复战略和计划的支持。提供Serverless解决方案的云供应商提供了高级功能,方便用户自动恢复应用程序和底层系统,以应对各种灾难(自然灾害、网络攻击和硬件缺陷等)。

Serverless架构:需要考虑的关键方面

尽管采用Serverless架构显然有众多优点,但仍有一个缺点需要考虑。因此,不妨看看在决定采用这种新的开发模式时要注意的几个挑战和关键方面。

1. 供应商锁定

说到Serverless架构,在设计和迁移阶段必须考虑供应商锁定问题。通常,这种类型的架构在各家供应商的“带围墙的花园”(walled garden)中更容易发展起来。

这就是为什么有必要一开始就清楚地了解从一家供应商换成另一家供应商时可能会出现的关键问题:

• 并非所有供应商都一致支持运行时环境和编程语言,即使它们在慢慢调整

• 缺乏一种标准化的格式来描述触发Serverless代码执行的事件

• 一些平台使用专有或内部开发的工具来打包和部署

为了缓解这些问题,负责推广传播云原生实施开放标准的云原生计算基金会(CNCF)维护有一个观察平台,以跟踪分门别类的Serverless产品。CNCF支开发持开放标准和解决方案的工作,比如CloudEvents(事件数据的标准化格式)和 Knative之类的开放产品,用于在云端和本地实施FaaS服务。

2. 估算成本方面的挑战

由于FaaS服务的定价模式纯粹按使用付费,因此很难估算成本。没有了固定费用,只需为必要的资源付费,因此当应用程序实施到生产环境中后,公司常常遇到费用激增的惊人情况。

分析不同供应商的解决方案是好主意。有时,成本和可用免费套餐的数量方面的差异相当大。

一个不错的估算工具是Serverless成本计算器(http://serverlesscalc.com/),它让你可以模拟最流行平台的成本,比如AWS Lambda、Azure Functions、Google Cloud Functions和IBM OpenWhisk。

3. 冷启动

在Serverless模式中,我们已经看到用户只在实际使用资源时付费。这就是为什么云供应商为了使这种模式在经济上具有可持续性,对实际不使用的资源作停用处理。

这么做的缺点是,有时会出现激活延迟(冷启动)。冷启动是指从调用函数的瞬间到实例激活和响应请求所花的时间之间的延迟。

有几个因素会影响冷启动问题,包括如下:

• 使用的编程语言

• 已分配和可用的资源

• 依赖项的数量和应用程序的整体复杂性

因此,处理好这每一个参数以优化函数的启动时间很重要,可采用供应商推荐的具体技术,比如AWS推荐的Lambda函数或谷歌云平台推荐的Cloud Run函数。

4. 安全风险

虽然所有云提供商都提供先进的安全系统,但应记住:为多个客户提供服务的服务器自然比专用本地服务器更容易受到安全问题的影响。

这归因于面临更多的事件,这反过来加大了潜在的攻击面。一些最常见的风险是依赖从第三方软件(比如开源软件包和库)获得的Serverless函数导致的风险,以及分布式拒绝服务(DDoS)攻击导致的风险。

结论

尽管采用Serverless架构时可能会遇到种种挑战,但在大多数情况下,带来的优点压倒了关键问题的风险。

此外,如果采取一些措施,比如认真选择供应商技术以避免锁定,或实施上述方案以减少冷启动,很容易解决一些显而易见的问题。

参考链接:https://www.cncf.io/blog/2022/01/28/serverless-architecture-pros-and-cons/

K8S中文社区微信公众号

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址