无服务器云计算

网友投稿 526 2022-05-30

1      引言

无服务器计算是一种云计算执行模式,云提供商运行服务器,并动态管理机器资源的分配。根据应用实际消耗的资源量来定价,而不是根据预先购买的容量单位来定价,它可以是实用计算的一种形式。

无服务器计算可以简化将代码部署到生产中的过程。

在此理念下,伸缩、容量规划和维护操作会对开发人员或操作人员隐藏起来。

无服务器代码可以与以传统风格部署的代码(如微服务)结合使用。

另外,也可以将应用程序写成纯粹的无服务器应用程序,完全不使用任何配置的服务器。

这里值得一提的是,这个概念不应与不需要实际服务器来运作的计算或网络模式相混淆,例如点对点(P2P)。

2      无服务器运行时

大多数(但不是全部)无服务器厂商提供计算运行时,也就是所谓的功能即服务(FaaS)平台,它执行应用逻辑但不存储数据。

第一个 "随用随付"的代码执行平台是2006年发布的Zimki,但它并没有取得商业上的成功。

2008年,Google发布了Google App Engine,其特点是对使用定制Python框架的应用进行计费,但不能执行任意代码。

2010年发布的PiCloud为Python提供了FaaS支持。

Kubeless和Fission是两个与Kubernetes一起运行的开源FaaS平台。

AWS Lambda由亚马逊在2014年推出,是第一家提供抽象无服务器计算的公有云基础设施厂商。它还得到了AWS无服务器工具的支持,如AWS无服务器应用模型(AWS SAM)Amazon CloudWatch等。

谷歌云平台自2016年起提供谷歌云功能服务。

自2016年起,IBM在IBM公共云中提供IBM云功能服务。

微软Azure提供Azure Functions,既可以在Azure公有云中提供,也可以通过Azure Stack在企业内部提供。

3      无服务器数据库

在过去的几年里,出现了一些无服务器数据库。这些系统将无服务器执行模型扩展到RDBMS,消除了配置或扩展虚拟化或物理数据库硬件的需要。

Nutanix提供了一个名为Era的解决方案,它可以将现有的RDMS如Oracle、MariaDB、PostgreSQL或Microsoft SQL Server变成一个无服务器服务。

亚马逊Aurora提供了一个基于MySQL和PostgreSQL的无服务器版本的数据库,提供按需、自动扩展的配置。

Azure Data Lake是一种高度可扩展的数据存储和分析服务。该服务托管在微软的公共云Azure中。Azure Data Lake Analytics提供了一个分布式基础设施,可以动态分配或取消分配资源,因此客户只需为其使用的服务付费。

Google Cloud Datastore是一个最终一致的文档存储。它作为一项独立的服务提供谷歌应用引擎的数据库组件。Firebase也是谷歌拥有的,包括一个分层数据库,并通过固定和现用现付计划提供。

4      无服务器计算的优缺点

4.1    优点

4.1.1    费用低廉

无服务器比租用或购买固定数量的服务器更具成本效益,因为后者通常会存在大量的利用率不足或闲置时间的情况。 由于底层机器资源的bin-packing更有效,它甚至比配置自动伸缩组更具成本效益。

这这种模式可以被描述为现用现付计算模式,因为只根据分配给你的代码运行的时间和内存来收费,而没有相关的空闲时间费用。

直接的成本效益与操作系统成本有关,这包括:许可证、安装、依赖性、维护、支持和补丁等方面。

4.1.2    很强的弹性与可伸缩性

此外,无服务器架构意味着开发者和运营商不需要花时间设置和调整自动伸缩策略或系统,云提供商负责根据需求进行容量伸缩。

正如谷歌所说。"从原型到生产,再到星球规模"。

由于云原生系统本质上可以向下以及向上扩展,这些系统具有很强的弹性,这跟可扩展有本质的区别。

小规模的开发者团队能够自己运行代码,而无需依赖基础设施和支持工程师团队。越来越多的开发者变得可以熟练的操作DevOps任务,这使得软件开发者,硬件工程师相互之间的区分正在变得模糊。

4.1.3    生产效率高

通过函数即服务,对外暴露的代码单元是简单的事件驱动函数。这意味着,通常情况下,程序员不必担心多线程或直接处理代码中的HTTP请求,从而简化了后端软件开发的任务。

4.2    缺点

4.3    性能相对下降

与专用服务器、虚拟机或容器上持续运行的代码相比,不经常使用的无服务器代码可能会出现更大的响应延迟。这是因为,与自动伸缩不同,在不使用代码程序时,云提供商通常会完全 "关闭"无服务器代码。这意味着,如果运行时(例如,Java运行时)需要大量的时间来启动,就会产生额外的延迟。

4.4    资源限制

无服务器计算并不适合某些计算场景,例如高性能计算,因为云提供商在此中环境下会施加资源方面的限制,另一方面,在给定的时间点批量提供所需的服务器数量可能比云计算场景会更便宜。

4.5    监控和调试

与传统的服务器代码相比,诊断无服务器代码的性能或过度使用资源问题可能更加困难,因为虽然可以对整个函数进行计时,但通常无法通过附加剖析器、调试器或APM工具来挖掘更多细节。

此外,代码运行的云计算环境通常不是开源的,所以它的性能特性无法在本地环境中精确复制。

4.6    安全

无服务器有时被误认为比传统架构更安全。

这在一定程度上是正确的,因为操作系统的漏洞由云提供商处理。

但是,一个现实情况是,云计算总的攻击面要大得多,因为与传统架构相比,应用程序会有更多的组件,而且每个组件都是无服务器应用程序的入口点。

此外,客户过去用来保护云工作负载的安全解决方案变得无关紧要,因为客户无法在端点和网络层面控制和安装任何东西,例如入侵检测/预防系统(IDS/IPS)。

整个服务器网络的单一文化属性更加剧了这种情况。

根据protego的说法,"

1.         安全无服务器应用的解决方案是开发者、DevOps和AppSec(也就是DevSecOps)之间的紧密合作。

2.         主要的目标是找到平衡点,开发人员不拥有安全,但也不能免除责任。

3.         因此需要采取措施让安全成为每个人的问题。

4.         创建跨职能团队,并努力实现安全专家和开发团队之间的紧密整合。

5.         亲密无间的协作可以确保既能享受无服务器的速度,又能解决可能的安全风险。

"。

4.7    隐私保护

许多无服务器功能环境都是基于专有的公共云环境。在这里,必须考虑到一些隐私问题,比如共享资源和外部员工的访问。

然而,无服务器计算也可以在私有云环境甚至内部进行,例如使用Kubernetes平台。

这样企业就可以像传统服务器设置中的托管一样,完全控制隐私机制。

4.8    标准

无服务器云计算

国际数据中心管理局(IDCA)在其框架AE360中涵盖了无服务器计算。然而,当把业务逻辑从一个公有云转移到另一个公有云时,与可移植性相关的部分可能会成为一个问题,而Docker解决方案正是为此而创建的。

云原生计算基金会(CNCF)也在与甲骨文一起制定规范 。

4.9    供应商锁定

无服务器计算是作为第三方服务提供的。在无服务器环境中运行的应用程序和软件默认锁定在特定的云供应商上。 因此,无服务器在迁移过程中可能会造成多种问题。

5      参考

https://www.cloudflare.com/learning/serverless/what-is-serverless/

https://azure.microsoft.com/en-ca/overview/serverless-computing/

https://aws.amazon.com/serverless/

https://en.wikipedia.org/wiki/Serverless_computing#:~:text=Serverless%20computing%20is%20a%20cloud,pre%2Dpurchased%20units%20of%20capacity.

软件开发

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《OpenStack高可用集群(上册):原理与架构》—2.4 Mirantis OpenStack高可用部署架构
下一篇:云原生到底是什么?带你了解云原生的那些事儿
相关文章