无服务器架构和 Functions-as-a-Service(FaaS)是云计算的热点趋势。除了微软和亚马逊,还有许多其他供应商也提供FaaS。本文将为大家简单介绍什么是无服务器架构以及我们会需要无服务器架构。
云计算的演变
在演变过程中,云已经有了多种形式和层次。
无论是内部部署还是由供应商提供的服务,数据中心都是云计算的第一步。它抽象化了物理主机环境,我们开始用硬件单元扩展这些环境。随着虚拟化的发展,我们开始在云环境中托管虚拟机;我们抽象了硬件和使用的操作系统作为规模的单位;之后,我们为云构建了托管环境,并抽象了操作系统;再之后新的单元是应用程序;现在我们已经开始尝试无服务器架构或者是FaaS了。
不同的云模型给予我们不同的责任。将数据中心设为本地就意味着我们要对所有事务负有全部责任,当数据中心慢慢向云转变时,我们要承担的责任会越来越少。
无服务器架构实际上晚于SaaS,图中它排在SaaS前面,是因为SaaS,用户完全不能控制关于应用程序或其基础设施的任何事情。
无服务器架构
无服务器架构是指大量依赖第三方服务(也叫做后端即服务,即“BaaS”)或暂存容器中运行的自定义代码(函数即服务,即“FaaS”)的应用程序,函数是无服务器架构中抽象语言运行时的最小单位,在这种架构中,我们并不看重运行一个函数需要多少CPU或RAM或任何其他资源,而是更看重运行函数所需的时间,我们也只为这些函数的运行时间付费。无服务器架构中函数可以多种方式触发,如定期运行函数的定时器、HTTP请求或某些相关服务中的某个事件。
Mike Roberts曾在他的文中提出了有关FaaS的六点:
1.从根本上说,FaaS是运行后端代码,无需管理自己的服务器系统或自己的服务器应用程序。
2.FaaS产品不需要对特定框架或库进行编码。在语言和环境方面,FaaS函数是常规应用程序。
3.由于我们没有要运行的服务器应用程序,所以部署与传统系统也会有不同,我们将代码上传到FaaS供应商,供应商会做所有的工作。
4.水平扩展是完全自动弹性的,并由提供商管理。
5.FaaS中的函数可由提供者定义的事件类型触发。
6.大多数提供者还允许函数来触发对HTTP请求的响应。
Adrian Cockroft在文中清楚地定义了“无服务器”:如果你的PaaS可以非常高效地在20毫秒内启动实例,并将该实例运行0.5秒,那可以将其称之为‘无服务器’。从中我们可以得出这样一个结论,长时间运行的工作流和其他巨大的任务不适合无服务器架构。
功能服务
已经提供了FaaS服务的公司有:
·Microsoft – Azure Functions
·Amazon – AWS Lambda
·Auth0 – webtask
·Iron.io – IronWorker
·Planet Rational – webscript
总结
无服务器架构允许我们构建一些有用的代码,快速运行而不消耗大量的服务器资源。但这并不意味着FaaS仅在小型场景中可用,虽然函数是一个小单位,但是它可以每秒调用数百万次,现在问题的关键是我们如何将应用程序的其他组件和层转到函数。
本文转自d1net(转载)