Serverless笔记

84 阅读5分钟

什么是无服务器?

  1. 无服务器是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器。
  2. 无服务器方案中仍然有服务器,但它们已从应用开发中抽离了出来。云提供商负责置备、维护和扩展服务器基础架构等例行工作。开发人员可以简单地将代码打包到容器中进行部署。
  3. 无服务器架构与基础架构服务相反,应用仅在需要时启动。有事件触发应用代码运行时,公共云提供商才会为这一代码分配资源。该代码执行结束后,用户便不再付费。除了成本与效率上的优势外,无服务器也能将开发人员从应用扩展和服务器置备相关的琐碎日常任务中解放出来。

    在标准的基础架构即服务(IaaS)云计算模型中,用户需要预先购买容量单元;也就是说,您要先向公共云提供商支付始终可用的服务器组件的费用,才能运行您的应用。  用户自行负责在需求高时扩展服务器容量,并在不再需要时缩减容量。即使在应用闲置不用期间,运行该应用所需的云基础架构也要保持就绪。

云提供商在无服务器计算中有什么作用?

  1. 无服务器计算产品通常分为两类,分别是后端即服务(BaaS)和功能即服务(FaaS)
  2. BaaS 可让开发人员访问各种各样的第三方服务和应用。例如,云提供商可以提供认证服务、额外加密、云访问数据库以及高置信度使用数据。在 BaaS 中,无服务器功能通常通过应用编程接口(API)调用。
  3. 在大多数情况下,当开发人员提到无服务器时,他们所指的基本是 FaaS 模型。在 FaaS 下,开发人员仍然要编写自定义服务器端逻辑,但它可以在完全由云服务提供商管理的容器中运行。

什么是功能即服务 (FaaS)?

  1. 功能即服务(FaaS)是一种事件驱动计算执行模型;开发人员编写逻辑,部署到完全由平台管理的容器中,然后按需执行。
  2. 与 BaaS 不同,FaaS 可让开发人员拥有更大的掌控权力,他们可以创建自定义应用,而不依赖于包含预编写服务的库。
  3. 代码则部署到云提供商管理的容器中。具体而言,这些容器具有以下特点:
    • 无状态 - 让数据集成变得更加简单。
    • 寿命短 - 可以只运行非常短的时间。
    • 由事件触发 - 可在需要时自动运行。
    • 完全由云提供商管理;这样,您只用为所需的计算能力付费,而不必管"闲置"的应用和服务器。
  4. 使用 FaaS 时,开发人员可以通过 API 调用无服务器应用,FaaS 提供商则通过 API 网关来处理 API。

无服务器用例有哪些?

  1. 对于能够瞬时启动的异步、无状态应用,无服务器架构是十分理想的选择。同样,无服务器适合那些有不频繁、无法预知的激增需求的用例。
  2. 比如有一个批处理传入图像文件的任务,它的运行频率也许并不高,但时不时就会有大量图像一次性到达。或者例如监控数据库传入的更改,再应用一系列功能,比如对照质量标准检查更改或进行自动转换。
  3. 无服务器应用也适合涉及传入数据流、聊天机器人、计划任务或业务逻辑的用例。
  4. 其他一些常见的无服务器用例有后端 API 和 Web 应用、业务流程自动化、无服务器网站,以及跨多系统集成。

无服务器计算的优缺点

优点

  • 无服务器计算可以提高开发人员的工作效率,降低运营成本。通过摆脱诸如服务器置备和管理等例行任务,开发人员就会有更多的时间专注于自己的应用。 
  • 无服务器有助于 DevOps 的采用,可以减少开发人员明确描述基础架构(需要相应的置备操作)的需要。  
  • 可以通过整合第三方 BaaS 产品的完整组件来进一步简化应用开发。 
  • 在无服务器模型中,由于您只需为所需的云计算时间付费,而不用全程运行和管理自己的服务器,因此大大降低了运营成本。

缺点

  • 不运行自己的服务器或控制自己的服务器端逻辑也有弊端。
  • 云提供商可能对其组件的交互方式有着严格的限制,从而影响您系统的灵活性和定制能力。采用 BaaS 环境时,开发人员可能要为代码不受其控制的服务负责。
  • 放弃对 IT 堆栈这些方面的控制,也同时意味着您会受制于供应商技术锁定。即便您决定要更换提供商,也可能需要升级系统以符合新供应商的规范,而这无疑会增加成本。

本文是在阅读Redhat文章时做的笔记,文章地址:什么是无服务器?