无服务器架构 - CodeCraft


要定义无服务器架构(以下称SA),请考虑它不是什么。SA并不意味着没有物理基础设施或机器。SA实际上是一个从企业角度来看的术语。

建立后端基础设施需要时间和持续维护。设置物理机或虚拟设备,安装应用程序,版本控制,配置,扩展,负载平衡,故障安全机制,访问限制......列表是无止境的。一般而言,后端即服务(BaaS)或云计算通过繁重的工作来缓解大部分任务,因此,毫不奇怪,它在软件开发中的受欢迎程度。但任何问题都没有银弹。

BaaS / Cloud面临着自身的挑战。想象一下,在任何流行的BaaS平台上运行的服务每隔“M”分钟处理“N”个请求。我们假设这导致CPU使用率为5%。如果您将服务处理的时间与24小时,一周,一个月等进行比较,则使用此费率......使用成本效率极低。输入FaaS(功能即服务)或无服务器体系结构。
FaaS或SA使企业能够“按需”运行服务器组件

  1. 短暂的
  2. 无状态
  3. 自动扩展

无服务器体系结构基本上包括运行一小段时间并由事件作为公共HTTP请求或有时间限制(Timer)触发或调用的函数。当这样的请求上升时,FaaS平台启动,初始化(如果还没有)并执行该功能。执行完成后,系统将关闭,直到下一次执行。因此,与传统的BaaS“永远在线”设置不同,我们有一个“并不总是”无服务器架构。请注意,此过程因提供商而异!

无状态
SA最适合无状态执行。由于服务器配置和基础架构现在由云提供商管理,因此无法保证将保留先前调用服务所维护的状态。这并不意味着FaaS不支持有状态操作,而只是声明任何状态都需要在FaaS实例之外处理。作为无服务器的状态完整操作的一个非常好的示例是通过AWS Lambda上传到S3

自动缩放
在扩展方面,SA的好处是巨大的。水平扩展是自动的,由底层平台处理。如果在特定时间点传入流量很高,则调用FaaS的多个实例。如果流量暂停,则实例会自动减少。该平台甚至可以处理底层资源管理和分配

实施/部署
FaaS函数可以在各种语言中实现,并且不需要对任何特定框架或任何库进行编码。例如,所有主要提供商都支持JS,Go等语言。代码/功能是编写的,只需上传即可。通过AWS lambda等服务,可以在AWS控制台本身编写代码。需要零配置。对于像产品创业这样的中小型组织来说,这是一件非常重要的事情.

优点

  1. 与我们在前面的示例中看到的现有云基础架构相比,FaaS非常经济。运行FaaS设置的成本仅取决于使用频率和使用时间。
  2. 由于扩展是自动且可靠的,因此企业不必担心配置新服务器实例或删除未使用的服务器实例的经济性。一切都由服务提供商提供
  3. 随着规模经济的重视,企业或开发人员可以专注于构建更好的解决方案。此外,降低成本使企业能够以更短的开发周期进行创新和测试更新的产品

缺点
  1. FaaS完全依赖于服务提供商,因此提供商端的问题就像停电,停机,维护,安全性将对企业服务产生重大影响
  2. 由于FaaS本质上是一个无状态服务器,因此维护状态的责任落在客户端上。这可能导致多个客户端的逻辑和数据的重新填充
  3. FaaS本质上是一个时间实体。例如,Google Cloud Functions会在一分钟后超时(也可以扩展)。AWS Lambda函数持续五分钟。与“永远在线”的BaaS实例不同,FaaS只能持续很短的时间

结论
无服务器架构只是一种范式,其中设置,扩展,配置服务器端系统的责任被委托给另一个实体。它提供成本效益,更精简的开发时间,可以为企业带来连带效应。同时,它根本无法取代构建在不同架构模型上的所有现有系统。可以作为FaaS实现的是依赖于上下文的!