云计算已经对数据中心的运行方式产生了深远的影响,但是云计算的最新趋势可能会以无服务器计算的形式提供另一个改变,这将有助于使客户更加靠近效用计算。
无服务器计算实际上是一个误称,因为它绝对不会消除服务器。相反,它消除了云计算消费者直接处理服务器的需求,无论是配置或管理这些服务器,使用户专注于开发和部署业务逻辑,而不是专注于自己的应用程序或服务。
这听起来很像平台即服务(PaaS),这是一个久经考验的云服务模型,但是无服务器的方法将应用程序和服务分解成更小和更离散的功能。一些无服务器的支持者甚至创造了术语“即服务”(FaaS)来描述它。
亚马逊的做法
目前无服务器计算的热潮可以追溯到亚马逊在2014年将其纳入其Amazon Web Services(AWS)云组合中的Lambda服务。Lambda是一个事件驱动的函数,使开发人员能够创建将运行的代码响应某些事件或触发器。
然而,Lambda的一个关键方面是它自动管理运行和扩展代码的高可用性所需的计算资源,客户仅支付代码实际运行时占用的CPU计算时间。
例如,Lambda可以用于驱动Web服务器,并且将消耗很少的资源或没有资源。AWS已经在Github上发布了一个参考架构,以及其他一些例如物联网后端。
开发和运营基于云计算的服务的传统方式是提供足够的服务器和存储资源来运行代码和处理数据,客户负责提供正确的容量,监控性能,以及容错和可扩展性设计。
此外,经营这种服务所需的资源通常必须持续可用的,并且随时可以使用,这意味着客户无论使用何种方式都为他们付费,除非他们开发自己的系统来按需提供资源,并在不需要的时候释放它们。
所有这些意味着构建基于云计算的基础设施来提供应用程序和服务可能被证明是比云计算提供商承认的更复杂和耗时的任务,这是无服务器计算寻求解决的问题的一部分。
分析机构Quocirca公司的Clive Longbottom表示:“无服务器计算确实具有更高的云计算水平。之前已经评论过用户对AWS和Azure的依赖,用户在建立顶层的任何软件堆栈之前,仍然依赖于拥有非常聪明的系统架构师,可以构建基本的基础资源。”
他补充说:“转向一个可以得到期望结果的平台,这意味着人们开始有更多的能力,这是人们想要做的,那么让它发生。”
换句话说,无服务器计算代表了旨在隐藏底层基础架构的另一个抽象级别。而且,尽管AWS可能是此方法最明显的支持者,但其他来源(例如Google Cloud Functions,Windows Azure Functions或IBM OpenWhisk)也开始提供类似的服务。Iron.io公司的一个开发人员有一个名为Iron Functions的无服务器应用平台,它是开源的,可以在公有云或私有云上运行,并且与AWS公司的Lambda兼容。
预测成本
虽然无服务器计算可能从客户的角度来看有一些优势,但它也可以为实现这些功能的服务提供商带来一些好处。如果采用像AWS Lambda这样的无服务器计算函数,那么在任何给定的时刻可能会导致更少的资源被捆绑,以便操作客户的基于云计算的应用程序,这样可以使服务提供商减少他们需要随时可用的剩余容量。
然而,为了摆脱这个可能需要更复杂的数据中心监控和编排工具的伎俩,如果客户更多地利用能够自动扩展以满足需求峰值的Lambda等功能,预测需求就会变得更加复杂。
无服务器计算可能对客户有一些优势,也可为服务提供商带来一些好处。在任何特定的时刻,它可能导致资源减少,以便操作客户的基于云计算的应用程序。
同时,根据Long bottom的说明,无服务器计算不能解决客户云服务的主要难题,该公司正在能够准确地预测运营应用程序和服务需要多少费用,以满足可接受的服务质量需求所需的水平。
他说:“真正地让客户了解定价是如何随着使用情况而变化的,这是AWS最黑暗的地方之一,”尽管这同样适用于许多其他云提供商。“虽然AWS公司公布了费用,就像说开车的成本一术很容易解决,而这是基于每加仑的里程,加上轮胎的磨损,这取决于开车和道路的类型等因素,无服务器应该隐藏一些这样的黑暗。但是只有当客户可以让AWS在其收费方式上得到公开的时候。”Long bottom补充道。
锁住恐惧
这就是为什么企业客户更喜欢谈判合同,详细规定他们需要什么能力,以及他们要支付多少费用的原因。
然后是供应商锁定的传统套路。使用基于专有功能的无服务器计算,如果客户需要执行此操作,可能难以将服务从一个云提供商迁移到另一个云服务器。
“对于那些仍然提供自己的代码,编排系统可能能够在硬件层面处理各个系统的变幻莫测。但是如果使用无代码方法,客户将更加信任服务提供商。”Long bottom评论道。
“对于那些系统架构师和大型编程人员比较罕见的小型机构来说,这可能是正确的。”
使用AWS Lambda进行无服务器开发
亚马逊公司的Lambda也许是无服务器计算的典型例子。AWS Lambda于2014年推出,允许开发人员创建代码,作为响应某些事件或触发器运行的“Lambda函数”。
其他AWS服务通常将是这些事件的来源,例如出现在亚马逊S3存储服务的特定存储区中的新对象,对Amazon Dynamo DB数据库表进行的更新或Amazon Kinesis Stream中提供的新数据。
因为Lambda函数仅在需要时运行,所以用户应该仅在代码实际运行时为计算资源支付费用。因此,AWS为客户以仅仅100毫秒的增量计费用量,而不是按小时计费,这通常是虚拟机实例的最低费用单位。
AWS公司现在有一个无服务器应用程序模型(AWS SAM),用于开发人员创建无服务器应用程序。这由AWSCloudFormation本机支持,并使用简化的语法来指定资源。
开发人员使用AWS Serverless应用程序模型(使用Cloud Formation模板的简化版本定义)部署应用程序,并可以使用多种编程语言(如Node.js,Python,Java和C#)创建代码。
本文转自d1net(转载)