基础设施满足应用程序的需求。适当的计算抽象的选择最终应该由应用程序架构和定义好的度量来定义,这些度量分析每种方法的优缺点。下图总结了计算抽象如何发展以迎合不断变化的应用程序架构需求。
1.无服务器计算的优势
低运营成本。采用无服务器计算与云服务器最大的不同之处在于:云服务器需要一直运行,而函数计算是按需计算,这意味着在请求到来的时候,才运行函数,才计费,而没有请求的时候不算钱。
更快的开发速度。在Serverless架构中,底层硬件已透明化了,开发人员无需再关注运维工作,只需要专注于应用系统开发,能够加快产品开发的速度,把工作重点放在业务实现上,把产品更快的推向市场。
提升应用可维护性。Serverless架构中,应用程序将调用多种第三方功能服务,组成最终的应用逻辑。目前,例如登陆鉴权服务,云数据库服务等第三方服务在安全性、可用性、性能方面都进行了大量优化,开发团队直接集成第三方的服务,能够有效的降低开发成本,同时使得应用的运维过程变得更加清晰,有效的提升了应用的可维护性。
2.无服务器计算的缺点
厂商平台绑定。平台会提供Serverless架构,比如AWSLambda,运行它需要使用AWS指定的服务,一旦在这些服务上开发一个系统,就会被AWS所捆绑,不能进行随意的迁移或者迁移的成本比较大,同时不可避免带来一些损失。
监测和可观察性。由于容器的短暂性,监控是FaaS的一个棘手问题。大多数云供应商提供了一些监控支持,监控也取决于供应商所提供的基本数据。在这方面真正需要的是开放API和第三方服务提供更多的能力。
没有服务器内状态。当涉及到本地状态时,FaaS功能有很大的限制。您不应该假设一次函数调用的状态可用于同一函数的另一次调用。这种假设的原因是在使用FaaS时通常无法控制函数的主机容器何时启动和停止。任何需要持久存储的数据必须存储在有状态的后备服务中,通常是数据库。
成功案例少,行业标准缺位。目前情况也只适合简单的应用开发,缺乏大型成功案例的推动。对于Serverless缺乏统一的认知以及相应的标准,无法适应所有的云平台。
在无服务器的场景中,开发人员将应用构建为小块代码(或者功能)的集合,这些代码或功能以协调的方式即时调配。这意味着没有浪费、低开销、快速可扩展来满足容量需求。无服务器计算主要适用的场景包括:
事件驱动场景。对于事件驱动型请求,意味着会对用户或程序生成的动作做出响应,事件可能包括查询本地当前温度的请求、搜索引擎查询或数据库记录更新。事件驱动的应用是非常高效的,因为在不使用的时候不会消耗资源,这种应用编程简单,易于扩展。包括物联网,移动应用,基于网络的应用程序和聊天机器人。事件是由人的动作(比如按下按钮),传感器或者系统中的数据流产生。
低频请求场景。物联网行业中,由于物联网设备传输数据量小,且往往是固定时间间隔进行数据传输,因此经常涉及低频请求场景。例如:物联网应用程序每分钟仅运行1次,每次运行50ms,这意味着CPU的使用率为0.1%/小时,这也意味着其实有1000个相同的应用可以共享计算资源。而Serverless架构下,用户可以购买每分钟100ms的资源来满足计算需求,这样就能够有效解决效率问题,降低使用成本。
流量突发场景。移动互联网应用经常会面对突发流量场景,例如:移动应用的通常流量情况是QPS(每秒查询率)20,但每隔五分钟会有一个持续10s的QPS200流量(10倍于通常流量),传统架构下企业必须扩展QPS200的硬件能力来应对业务高峰,即使高峰时间仅占整个运行时间的4%;而在Serverless架构下,用户可以利用弹性扩展特性,快速构建新的计算能力来满足当前需求,当业务高峰后,资源能够自动释放,有效节省成本。
虽然FaaS作为新生事物,仍然面临工具链、生态成熟度方面的挑战,但也已经体现出了较大的潜力。金融行业是非常注重稳定性的,建议在金融行业应用可采取以下三个步骤。
步骤一:了解使用无服务器架构的最佳实践。本文对无服务器计算进行了一定的研究,后续可以跟踪无服务器计算的最佳实践,为后续真正在银行实践做准备。
步骤二:确定适合无服务器计算的应用。根据无服务器计算的特点,寻找适合无服务器计算适合的场景,且不是很重要的应用,最好是新应用。因为老应用一般是单体应用,改造工作会很复杂。
步骤三:随着无服务器技术的不断成熟,可以在低风险环境中尝试无服务器功能,为以后的推广做好技术准备。一些移动应用非常适合无服务器设计。
无服务器技术在快速发展中,但仍然不成熟,还没有建立架构模型和健壮的开发工具。这意味着将企业应用程序的命运与特定的云供应商绑定,将带来自身的风险。因此,尽管它有巨大的潜力,可能需要数年才能在企业中获得广泛的应用。
随着无服务计算技术的成熟,无服务器计算的优点显现,开发人员会发现无服务器将越来越难以抗拒。但正如容器没有取代虚拟机,虚拟机也没有取代裸金属的服务器,将来无服务器计算也会和其他技术一起共存,而非取代其他技术。