据IBM最近的一项调查显示,无服务器的采用正在逐年增加,68% 的用户表示他们可能会在未来两年内采用无服务器架构。
乍一看“无服务器”一词可能带有一定的误导性。这并不意味着服务器不存在,而是用户不必担心后端架构或服务器,因为管理它的这部分工作转移到了服务提供商身上,它将员工从服务器管理工作和基于架构的任务中解放出来。无服务器计算和无服务器架构概念经常互换使用。
无服务器计算如何工作?
管理服务器是一个复杂的过程,通常涉及大量的工作。设置服务器并将服务器部署应用只是第一步,后续还必须对其进行监控、定期维护、配置、更新、扩展等等。
相比之下,无服务器可以摆脱所有繁杂的工作。开发人员可以专注于业务需求,而无需担心管理任何底层基础设施。通过编程语言(最常见的是 Python 和 Node.js),开发人员可以使用第三方资源来托管应用,从而变得更加快速且高效。
从开发人员的角度来看,这就好像服务器不存在一样。因此才有了“无服务器”这个术语。事实上,服务器仍然提供后端服务,只是由服务提供商处理所有事情。
无服务器计算的特点
无服务器计算的显著特点包括:
- 抽象出服务器和维护它们的复杂性。
- 提供即用即付(pay-as-you-go)成本模式,仅对使用的资源收费,减少了闲置资源或未使用空间的成本。
- 可以根据需求的变化快速、自动地扩展。
- Serverless是事件驱动的, 因此它仅在特定事件触发时运行。一旦触发事件,它就会执行任务,然后在几分钟后终止。
- 开发人员可以专注于构建代码,而不是浪费时间维护基础设施。
无服务器计算的好处
无服务器计算有几个优点:
- 更快的上市时间:使用无服务器无需担心设置后端基础架构,可以轻松设置开发环境,快速进入市场。
- 没有服务器管理:无服务器计算依旧在服务器上运行,但是由云服务提供商 (CSP) 管理这些服务器。因此,开发人员不必担心服务器的管理工作,他们需要做的就是运行和执行代码。
- 更低的成本:对于传统系统,通常需要购买容量过剩的服务器以避免出现宕机等情况。但是在无服务器的情况下,只需为所使用的资源和它们运行的时间付费。因此,无服务器计算的成本更低。
- 高度可扩展性:无服务器的最大优势之一是它可以自动、轻松地扩展以适应需求,而无需用户干预。
无服务器计算的缺点
虽然无服务器计算对特定用例极具优势,但它也有一些缺点。
- 厂商锁定:无服务器平台大多由云服务提供商提供,因此企业会面临厂商锁定问题。
- 运行时间有限:无服务器的一个缺点是它只能在有限的时间内运行。因此,长时间运行的工作负载不适合部署在无服务器上。
- 调试很困难:在无服务器环境中调试应用是一项挑战,因为它是在分布式网络上进行的,几乎没有时间来确定问题的根本原因,而且日志记录能够提供的帮助也很有限,所以需要更先进的工具方法来进行准确的调试。
- 延迟更高:通常,当无服务器功能长时间处于空闲状态时,供应商会将其关闭。因此在下一次调用时可能会遇到更高的延迟或冷启动问题,这对于时延敏感型应用来说很不友好。
无服务器平台
目前市面上主流的无服务器平台包括 AWS Lambda、Azure Functions、Google Cloud Functions 和 IBM OpenWhisk。下面一起来看一下。
(1) AWS Lambda
无服务器计算领域的“大腕”之一 ,AWS Lambda ,于 2014 年推出,被誉为无服务器概念的引领者。它与其他 AWS 服务无缝集成,是AWS产品用户的首选。
特征:
- 它原生支持 Node.js、Python、Ruby code、Java、Go、.Net Core、PowerShell 和 C# 等语言。
- 涵盖每月 100 万次的免费执行套餐。
- 最长执行时间为 15 分钟。
- 可以同步、异步地调用函数,或者使用基于轮询的调用模型。
(2) Azure Functions
Azure Functions 是微软 Azure 的无服务器计算服务,可让开发人员运行事件触发代码。
特征:
- Azure Functions 提供三种托管计划以满足用户需求。免费套餐同样包括每月 100 万次执行。超过之后针对不同的需求提供分层定价。
- 支持 JavaScript、C#、PowerShell、F#、JAVA、Python 和 TypeScript。
- 最长执行时间为 10 分钟。
(3) Google Cloud Functions
Google Cloud Functions 作为谷歌云平台的一部分,于 2016 年发布,可以与谷歌的其他产品很好地集成,对于已经使用 Google 产品的用户来说,它是一个不错的选择。
特征:
- 免费处理前200万个请求。
- 与 Azure Functions 和 Lambda 相比,它更便宜。
- 支持多种基于事件的触发器,例如 Cloud Pub/Sub 触发器、HTTP、Cloud FireStore、Firebase 实时数据库、Firebase 身份验证等。
(4) IBM Cloud Functions
IBM Cloud Functions 是基于 Apache OpenWhisk 的一个开源无服务器平台,允许用户按需执行代码。
特征:
- 支持 PHP、Swift、Node.js runtime、Java 和 Python。也可以将其他编程语言与 Docker 容器集成。
- 最长执行时间为 10 分钟。
- 提供99.95% 的 SLA。
- IBM Cloud Functions 与 IBM Monitoring Service 集成可以提供更好的可见力。
无服务器的未来
全球无服务器市场预计将以 30% 的复合年增长率增长,到 2026 年市场将达到 160 亿美元。对于不能够承担额外的容量规划和资源供应负担的企业来说,无服务器计算是一种经济高效的选择。同样,对于寻求低运营成本和更快上市时间的公司来说,事件驱动的方法也极具吸引力。
但是,无服务器计算也有自己的缺点,它并不适合所有场景,因此企业在选择无服务器之前需要作出充分的考虑和规划。