关于无服务器计算首先要知道的是,“无服务器”是一个非常糟糕的名称。
与其名称相反,过去两年来这一在云计算领域实现了突破的技术实际是在服务器上运行的。无服务器这一名称只是体现了最终用户不必管理运行其代码的服务器这一事实。
这听起来可能很熟悉。技术上,在公共基础设施即服务(IaaS)中,最终用户也不用实际去管理服务器——这涉及到遍布全球的亚马逊网络服务(Amazon Web Services) 和 微 软Azures。
而所谓的无服务器计算将这一概念进一步推进,仅使用完成任务所需的非常精确的计算资源来执行开发人员编写的代码,不多也不少。当触发代码的预定义事件发生时,无服务器平台执行任务。最终用户不需要告诉无服务器提供商事件或者函数将发生多少次。函数每执行一次,客户就付一些钱。有些人认为函数即服务(FaaS)或者事件驱动的计算是更好的名称。
IBM的云计算产品管理副总裁Damion Heredia负责管理IBM无服务器计算产品OpenWhisk,他解释说:“从基础架构角度看,我们认为它有不同的抽象层,而开发人员可以和这些抽象层进行互动。有裸机、虚拟机和容器。对于某些工作负载,我们要抽象出所有的管理,以便您可以执行代码,而不用担心服务器的基础架构或者管理。这就是无服务器。”
现在,行业分析师、支持者和怀疑者正在辩论这项技术有多重要。是演进还是革命?它将用于未来的大多数应用程序,还是只有一部分用例?目前的答案是,市场还处在最早的时期,所以很难说。但不能忽视对这一技术的宣传、兴趣和潜在的优势。
无服务器的优点 亚马逊网络服务在2014年推出了无服务器计算产品Lambda,掀起了无服务器市场热潮。
AWS战略总经理Matt Wood说,该产品源自公司最受欢迎产品的灵感:简单存储服务(S3,Simple Storage Service)。
Blogger Sam Kroonenburg 认 为 S3 和Lambda之间的关系是很重要的类比。Kroonenburg在他的云导师博客中解释说:“S3处理存储对象。您提供一个对象,S3存储它。您不知道怎么存储,也不知道存在哪里。您不必在意。您不用关心有没有硬盘。没有硬盘空间这样的东西...所有这一切都被抽象出来了。在S3中您不能让存储容量过度配置或者配置不足。就是这样。”
Wood说,“AWS希望采用同样的理念来进行计算。Lambda处理函数。您提供函数代码,Lambda按照需要执行它...。在Lambda中,您不能过度配置执行容量,也不能配置不足。就是这样。”
在传统的IaaS云环境中,客户提供虚拟机、存储、数据库以及所有相关的安全和管理工具。他们将应用程序加载到这些虚拟机上,然后使用负载平衡器等工具来扩展它们。他们使用管理软件优化他们的用例大小,并找到偶然没有使用的虚拟机。Lambda和其他FaaS平台提供了不同的模式。代码是用函数编写的。当事件发生时,触发Lambda运行函数。就这么简单。没有容量规划,没有负载均衡;只是任务被执行。
AWS总经理Wood说,这有助于实现各种用例。例如,可以编写Lambda函数,每次将照片上传到S3时,Lambda会创建大小不同的副本,分别适用于桌面、移动设备和平板电脑。或者,每当将条目上传到数据库中时,可以编写Lambda函数将数据加载到Amazon Redshift之类的数据仓库中,以便以后进行分析。Wood说,许多客户使用Lambda把AWS服务“胶合”在一起,执行报告、调度和更改数据等任务,以便准备分析。
Wood说,另一个重要的用例是在物联网领域,这一领域需要大规模的实时响应。AWS 最近推出了Greengrass平台,能够在物联网设备上运行Lambda函数,该平台可以在低连通区域的设备上执行Lambda函数,在这些区域中,不需要和云端数据中心来回的传送数据。安防摄像机可以运行Lambda,并且每次检测到运动时,记录数据并将其发送到数据库。不会有虚拟机服务器一天24小时处于空闲状态;事件驱动的代码只是在被触发时才运行。AWS客户FireEye说,通过使用Lambda而不是EC2用例,可以节省高达80%的虚拟机支出。
无服务器是最简单的一个外包解决方案。Martin Fowler的博客非常深刻的解释了什么是无服务器,您给某人付费,让他来管理服务器、数据库甚至应用逻辑。无服务器的巨大差异在于,您只需支付所需的计算,最短可以直到100ms。
不用等待服务器启动或者配置负载平衡,任务只是无限地执行。Fowler认为,这种模式允许开发人员和公司试验一下想法,能够比其他模式更快的把想法推向市场。
缺点
无服务器计算不是灵丹妙药,也有缺点。首先,这是一个非常不成熟的市场。Gartner研究总监Craig Lowery说,很难管理无服务器的大规模用例。用于协调函数组的管理工具也很少。支持这一技术的安全、监控和优化软件还在开发中。也许最重要的是,它要求开发人员以不同的方式编写应用程序。他解释说:“很多限制与对软件设计的架构约束有关。”
无服务器函数也是无状态的。它们可以被重新使用和重新执行,但是它们不存储状态,它们执行它们的任务,就是这样。供应商在FaaS平台上收费,每执行100万个函数收取不到一分钱,因此,供应商鼓励开发人员计划好运行其函数。Lowery说:“当您有很多函数时,管理会变得很混乱。”
还有一个关于锁定供应商的问题。Lowy指出,使用FaaS内置的应用程序并将其移植到另一个平台上,不管是在内部还是在另一个公共云中,都不容易实现。由于市场还很年轻,无服务器平台的工具是针对它们所在的环境而定制的。AWS Lambda与许多其他AWS产品深度融合在一起。Wood说,由于Lambda支持常见的编程语言,例如Node.js、Python和Java,因此,能够把代码转出来。他指出,没有专门的Lambda语言。
Lowery说,“总体上,无服务器计算或者FaaS是虚拟机和容器现有计算范例非常强大的版本。Lambda是一个全新的东西。我想我们会看到很多人能够成功地创建基于无服务器的整套应用程序。同时,它不太适合每一个应用程序。数据库不会在Lambda或者需要维护状态的任何其他应用程序中运行。”
无服务器计算市场 AWS 最先把无服务器计算平台推向市场,其他主要的IaaS公共云提供商紧随其后。Wood甚至提出很多AWS服务是“无服务器”的论点,包括Lambda、S3以及其NoSQL DynamoDB数据库和支持SQL的Aurora数据库平台。这些产品中的每一种都不需要预先规划资源使用,也不需要持续的管理基础设施。
Lambda每个月可免费处理100万个请求;其后每100万个请求的费用是0.20美元。Lambda还根据计算过程花费的时间进行收费,以平台每秒每千兆0.00001667美元收费,四舍五入到最接近的一百毫秒。
微软 Azure 与 Azure Functions产品的价格相同,该公司的产品在2016年11月份正式上市。Google Functions处于测试状态,每个月可免费提供200万个请求,每笔交易成本稍高一点,计算速度较低。IBM没有明确给出OpenWhisk的定价,但OpenWhisk执行官Heredia说,IBM无服务器计算平台的最大区别在于它采用了Apache软件基金会的开放源代码。从理论上讲,这使得客户能够随时随地运行OpenWhisk代码。
市场上还有少数几家创业公司提供无服务器的计算平台、组件和管理工具。也许最知名的是Iron.io,它提供了一个基于Docker容器的无服务器计算平台。
Gartner分 析 师Lowy说,市场还很年轻,没有赢家和输家。但是,AWS的产品占有市场的时间最长。他说,真正的关键在于确定无服务器系统用来干什么。FaaS可以成为一个强大的工具,用于在某一供应商的云中把各种服务“胶合”在一起。另一方面,其他物联网事件驱动用例不一定非要采用该供应商的云。
Brandon Butler——高级编辑
高级编辑Brandon Butler为《计算机世界》的云计算领域撰写文章,专注于业界主要厂商的发展,跟踪最终用户部署,以及最热门的初创公司。
原文网址:http://www.networkworld.com/article/3187093/cloud computing/serverless explainer-the-next generation-of-cloud infrastructure.html