无服务器架构,通常被称为“无服务器计算”,但并不像其名称所暗示的那样完全没有服务器。无服务器架构是一种基于应用的云计算服务,其中由云计算提供商管理服务器,提供更高的效率和潜在的成本节约。对于大多数云计算用户来说,这更容易和有效。
无服务器也称为功能即服务(FaaS),无需存储数据即可执行应用程序逻辑。利用FaaS的开发人员仍然需要编写服务器端逻辑,但它运行在短暂的无状态容器中。客户端应用程序(包括移动应用程序)可利用基于云计算的基础设施后端即服务(BaaS)。
“无服务器”一词的使用可以追溯到2012年。而AWS公司在2014年推出了Lambda(公共云供应商提供的第一个无服务器计算产品),加速了该术语的主流使用。2016年,谷歌云推出Google Cloud Functions,Microsoft Azure推出了Azure Functions,IBM Cloud推出了IBM Functions,而OpenWhisk开源项目则首次亮相。
无服务器有时会与云计算的平台即服务(PaaS)混淆。后端即服务(BaaS)和功能即服务(FaaS)都是云计算提供商提供的服务选项,但功能即服务(FaaS)在几个重要方面与平台即服务(PaaS)不同。例如,功能即服务(FaaS)会自动扩展,但平台即服务(PaaS)则不能。此外,功能即服务(FaaS)可以使整个应用程序上下移动,而平台即服务(PaaS)并没有这样的专门设计。
无服务器架构使用了大量的应用程序粒度;它适用于当今的微服务世界,而不是早期的单片架构。
无服务器示例
- 照片应用的用户可以在选择照片时自动调整大小。照片将发送到Amazon S3存储桶,该存储桶使用无服务器来触发相应的Lambda功能。其输出是用户选择的照片大小。
- 应用内游戏开发者希望能够使其购买变得不再繁琐,因为应用评论受到了影响。玩家现在可以将鼠标悬停在他们想要购买的产品上。例如玩家将鼠标悬停在“Neo太阳镜”上,通过API网关触发虚拟产品和购买功能。每个无服务器功能都使用一个数据库。几秒钟之内,所选的角色就戴上了太阳镜,因为现在角色就拥有太阳镜,它可能会被随意移除或重新戴上。
无服务器用例
- Web应用程序
- 异步消息处理。例如,应用程序的用户界面(UI)响应时间和准确的交易历史记录都很重要
- 需要自动扩展功能的聊天机器人
- 大规模流处理
- 移动应用程序后端
- 批处理作业
- 多媒体处理
- 数据处理
- 聊天机器人和虚拟助理
- IT自动化
无服务器的好处
- 减少开销。应用程序可以在没有使用功能即服务(FaaS)的服务器的情况下运行,因此无需配置或管理服务器。
- 自动缩放。功能即服务(FaaS)自动缩放,向上或向下扩展,因此客户无需为闲置容量支付费用。
- 高可用性。应用程序可用性不是问题,因为功能即服务(FaaS)和后端即服务(BaaS)可用性不是问题。
- 选择。功能即服务(FaaS)允许开发人员使用流行语言和库。
- 成本。与平台即服务(PaaS)和基础设施即服务(IaaS)一样,无服务器云计算提供商拥有硬件和软件元素。服务器管理成本也是外包的。
- 简单。部署功能即服务(FaaS)功能就像上传代码一样简单;部署服务器涉及脚本和面向资源的决策。
- 速度。由于无服务器无需服务器及其管理,因此节省了宝贵的IT时间。它还加速了实验和原型设计。
无服务器的缺点
- 无状态与状态。对于使用面向状态功能的应用程序体系结构来说,功能即服务(FaaS)的无状态性质可能是一个问题。
- 超时。如果应用程序包含超出超时限制的任务,功能即服务(FaaS)超时可能会影响应用程序体系结构。
- 启动延迟。功能即服务(FaaS)启动延迟可能会排除极其敏感的用例,例如算法交易。
- 服务水平协议。缺乏服务等级教育协议(SLA)一直是个问题。在2018年10月,AWS公司宣布Lambda的每月正常运行时间为99.95%。
- 功能配置。配置功能即服务(FaaS)的能力可能有限。
- 并发限制。允许的并发功能即服务(FaaS)功能的数量是有限的。如果由于同时进行测试和生产,共享企业帐户,跨多个云服务的帐户超出该数量,则生产应用程序性能可能会受到影响。
- 功能即服务(FaaS)监控。这里的两个问题是供应商提供了多少数据,以及监控临时容器的一般困难。
- 供应商锁定。云计算提供商希望难以转移到其他提供商。有两种方法可以使平台特有的工具和设计功能不同。
- 控制。供应商可以完全控制基础设施、定价和功能。
- 成本。无服务器并不总是比其他选项便宜,因此理解与其他选项相比的成本/收益权衡是明智的。使用功能即服务(FaaS),功能在调用之前不需要任何费用。
无服务器的安全性
- 攻击面扩大。生态系统中的任何新元素都会增加潜在的破坏机会。此外,与使用传统架构的应用程序相比,无服务器应用程序具有更多的组件。每个组件都是应用程序的唯一入口点。
- 功能许可。有时,当权限越窄越明智时,广泛的权限可能会应用于一系列功能。
- 多租户。其他客户不应该看到企业数据,但可能是这样。这是主要提供商主动解决的一般云计算问题。
- 第三方软件依赖性。功能可能依赖于已泄露的第三方软件。
无服务器架构入门
开始使用无服务器架构的最佳方法是完全理解文中的所有内容:它是什么,它的优点和缺点是什么,因此可以定义适当的用例。
具体来说,如果要将无服务器应用程序添加到现有应用程序或构建新的无服务器应用程序,需要考虑以下内容:
- 了解无服务器是什么或不是什么。
- 了解使用传统架构应用程序和无服务器应用程序之间的权衡。
- 确定企业是要构建无服务器应用程序还是修改现有应用程序以利用后端即服务(BaaS)、功能即服务(FaaS)或两者兼而有之。
- 选择一个提供者(可能是企业使用过的提供者)。
假设企业选择了AWS Lambda,这是一种特别受欢迎的无服务器解决方案:
- 设置Lambda功能(内存和存储要求、触发器、访问)。
- 设置Amazon API网关。
- 要适应现有应用程序,请使用AWS步骤功能进行工作流管理。
- 通过Amazon身份访问管理和Cognito服务设置访问和安全。
- 对于日志记录和监控,使用AWS Cloudwatch和X-Ray。
- 如果需要本地应用程序测试,请使用AWS无服务器应用程序模型。
- 满足合规要求。
- 将无服务器架构模式与同一类型应用程序的常见模式进行比较。
如何管理无服务器架构
顾名思义,在无服务器云服务的情况下,IT不管理服务器。对于本地功能即服务(FaaS)实施(例如由Apache OpenWhisk、Kubeless和OpenFaaS启用的实施),服务器在内部进行管理。
虽然基于应用的云计算优势不适用于本地功能即服务(FaaS)实施,但可以实现更高的服务器利用率,开发人员仍然可以从无服务器提供的抽象中受益。
但是,仍有一些操作问题需要考虑,例如权限、安全性、依赖性和其他问题,这取决于应用程序的设计,这些问题不会消失。
关键问题是:企业是否拥有管理无服务器所需的内部专业知识?直到现在,无服务器仍然是一项新兴技术,因此不要假设企业的内部人员或开发人员是专家。
无服务器计算的未来
随着无服务器选项越来越受欢迎,以下内容可能会展开:
- 更多更好的工具。这是一个市场成熟度问题,它也是受欢迎程度与其他选项的功能。无服务器变得越流行,工具和开源项目就越多。
- 最佳实践。由于无服务器是一个相对较新的概念,目前还没有很多最佳实践,但是无服务器架构模式可用于上述许多用例。
- 无服务器优先应用程序。在某些用例中,可能会出现更多的无服务器应用程序,而不是通过修改应用程序来利用无服务器选项。
- 框架。将出现额外的框架,使其更容易与一个供应商而不是另一个供应商合作。目前的例子是Fn Project,它是一个容器本地开源框架和无服务器框架,可以将无服务器应用程序部署到多个功能即服务(FaaS)提供程序。
- 私有功能即服务(FaaS)。功能即服务(FaaS)已经可以在企业内部实施。与云计算服务或混合云实施相比,时间会证明这将成为主流。
原文
http://cloud.51cto.com/art/201907/598894.htm