无服务器计算?听到这个名词,有些人不禁要问“没有服务器怎么计算?”就好像没有煮饭的工具,你怎么煮?其实,这里所说的“无服务器计算”,并不是说没有服务器这种设备,而是这些服务器对于它的用户来说是缺失的。在我看来,相比于“无服务器计算”的定义,“隐形服务器计算”可能更合适。2016年6月,MikeRobers在MartinFowler的博客网站上发表了一篇名为《ServerlessArchitecture》的文章,引起了业界的广泛关注。在那篇文章中,他指出:“无服务器最初用于描述显着或完全依赖第三方应用程序或服务(“在云端”)的应用程序。这些应用程序依赖第三方来管理服务器端逻辑和状态,它们都是典型的“富客户端”应用(你可以想象成一个单页的web应用或移动应用),使用云平台提供的生态系统,包括可访问的数据库(如Parse、Firebase)、认证服务(Auth0,AWSCognito)等等……无服务器还意味着具有服务器端逻辑的应用程序仍然需要由开发人员编写。”但是,对于用户来说,他不需要直接购买真正的服务器等基础设备,也不需要部署、维护和管理,所以是“无服务器计算”。市场上也有很多云服务提供商提供无服务器计算。一起来看看:AWSLambdaAWSLambda无疑是业界最知名的无服务器计算实例。那么,什么是AWSLambda?在AWS官网的视频中,亚马逊首先给出了这样一个场景:企业在构建应用的时候,肯定希望这些应用能够给用户带来最好的体验。您可能希望您的应用程序在游戏会话期间快速生成应用程序内购买选项;您可能想要验证街道地址是否已更新,或者您可能想要在用户上传照片后立即生成图像缩略图。为了实现这些神奇的操作,您的应用程序需要有后端代码来响应图像上传、应用程序活动、网站点击和传感器输出等事件,但要管理托管和执行后端代码的基础设施,需要您准备大量产品和相当数量的服务器,管理系统更新,应用安全补丁,并监控所有这些基础设施的性能和可用性。在视频的最后,亚马逊问道,如果你只需要专注于构建优秀的应用程序而不用在服务器管理上浪费大量时间,那不是很有趣吗?引出AWSLambda的定义和功能:AWSLambda运行在企业后端代码的Compute服务上,响应对象上传到S3、AWSDynamoDB表格数据更新、AmazonKinesisStreams等事件。借助AWSLambda,您无需预置或管理服务器即可运行代码。只需为您消耗的计算时间付费——当您的代码未运行时不收费。借助Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码,而无需管理。只需上传您的代码,Lambda将处理运行和扩展您的高可用性代码所需的一切。用户可以将代码设置为从其他AWS服务自动触发,或直接从任何Web或移动应用程序调用。最后,所需要的只是编写代码,一份工作。MicrosoftAzureFunctionsMicrosoft的无服务器计算称为AzureFunctions。AzureFunctions提供无服务器开发体验,支持一组强大的事件触发器和数据绑定。它基于AzureAppServicePaaS中使用的WebJobsSDK。帮助用户将应用程序或脚本作为Web或移动应用程序的一部分运行,甚至将它们公开为可调用的API。因此,MicrosoftAzureFunctions可以使用WebJobs的功能,更容易使用AzureStorage和AzureServiceBus(后者是一个发布和订阅消息队列)。能力包括以支持的语言开发的部分执行逻辑和描述功能绑定的JSON配置文件,例如名称、数据类型以及绑定是否发送或接收数据。同时,作为一种事件驱动的服务,MicrosoftAzureFunctions非常适合处理数据,包括来自物联网(IoT)设备的数据、开发微服务、开发和集成其他代码模块或云服务,或者API开发。AzureFunctions使用计划根据资源使用情况和执行时间计费。使用计划定价包括每月免费授予100万个请求和每月400,000GB的资源使用量。用户还可以在其AppService计划中运行Functions,按常规AppService计划费率计费。GoogleCloudFunctionsGoogleCloudFunctions是一个用于构建和连接云服务的无服务器执行环境。借助GoogleCloudFunctions,用户可以编写简单的单一用途函数,附加到从云基础设施和服务发出的事件上。当某个事件发生时,会触发CloudFunctions。代码在完全托管的环境中执行,用户无需搭建任何基础设施和管理服务器。CloudFunctions使用Javascript编写,并在GoogleCloudPlatform的Node.jsv6.9.1环境中执行。借助CloudFunctions,用户可以在所有标准Node.js运行时中运行,从而轻松实现可移植性和本地测试。GoogleCloudFunctions根据调用、计算时间和出站数据收费。每月200万次以内免费,超过每100次收费0.4美元;每月400,000GB秒是免费的,超出之后每GB秒0.0000025美元;每月5GB出站流量免费,超过每月0.0000025美元;GB为0.12美元;所有入站数据都是免费的,并且此服务在入站和出站数据以及与其他GoogleAPI在同一区域时也是免费的。阿里函数计算阿里函数计算是一个事件驱动的全托管计算服务。通过函数计算,用户无需等待基础设施,只需要编写代码并上传即可。函数计算将为用户准备计算资源,弹性可靠地运行代码,并提供日志查询、性能监控、告警等功能。2017年4月,在南京阿里云大会上,阿里云宣布启动函数计算邀请测试。这是国内首个事件驱动的无服务器计算平台。用户按需调用、按需付费,无需管理服务器等基础设施,特别适合应用场景波峰波谷明显的企业。而且,用户只需为代码实际运行所消耗的资源付费——代码不运行则不收费。目前,大多数企业已经接受并实现了基础设施云化的目标。但未来,是否会有更多企业放弃基础设施,只让基础设施掌握在少数云服务商手中,进而进入“无服务器计算”的云世界,还需观察。
