APP下载

无服务器计算的现状以及所面临的挑战

2019-12-25胡聪丛

网络安全技术与应用 2019年12期
关键词:开发人员应用程序编程

◆胡聪丛

无服务器计算的现状以及所面临的挑战

◆胡聪丛

(中国五矿集团有限公司 北京 100010)

无服务器计算已经成为应用和服务部署领域的新技术规范。它代表了云编程模型、抽象和平台的最新演化成果。本文将从技术角度阐述无服务器计算的发展现状以及其面临的诸多挑战。

无服务器计算;架构;事件处理系统

无服务器计算是一个由业界创造的术语[1]。它描述了这样一种编程模型和架构:小代码片段在云中执行,无须管控运行所需的任何资源。“无服务器”并不是不需要服务器的意思,它只是强调开发人员应该将大多数运维问题(如资源供应、监控、维护、可扩展性和容错性)留给云提供商[2]。

从基础设施即服务(Infrastructure-as-a-Service,IAAS)使用者的角度来看,这种范式转换既带来了机会,也带来了风险[2]。一方面,无服务器计算为开发人员提供了一个简化的编程模型,用于创建云应用程序——抽象了大部分(并非全部)运维操作;它按执行时间计费而不是按使用资源计费,从而降低了部署成本。另一方面,在无服务器平台中部署此类应用程序具有挑战性。应用无服务器计算需要放弃一些平台设计策略。例如,服务质量(QoS)监控,扩展和容错属性等。

从云服务供应商的角度来看,无服务器计算带了一个额外的机会去控制整个开发栈,通过优化和管理云资源来降低运营成本。无服务器计算相当于提供了一个平台并鼓励使用其生态中的其他服务,并且减少了创建和管理云规模应用所需付出的努力[3]。

1 无服务器计算的现状

1.1 无服务器计算的定义

作为一种近几年流行的新型技术,很难简单地定义术语“无服务器”,因为该定义与其他术语(如PaaS和软件即服务(SaaS))重叠[4]。阐释无服务器的一个角度是,考虑不同级别的开发人员对云基础架构的控制。基础设施即服务(IaaS)模型是开发人员对云计算中的应用程序代码和操作基础设施拥有最多控制权的模型。在这里,开发人员负责硬件或虚拟机,并可以自定义应用程序部署和执行的各个方面。另一个极端是PaaS和SaaS模型,开发者不知道任何基础设施,因此不再能够控制基础设施。相反,开发人员可以访问预打包的组件或完整的应用程序,还可以在这里托管代码,尽管代码可能与平台紧密耦合。

1.2 无服务器计算的架构

人们对“无服务器”这个名称有很多误解。服务器仍然是需要的,但开发人员不必管理这些服务器[5]。服务器数量及其性能等由平台负责决策,服务器容量依工作负载自动分配。

无服务器平台的核心功能是事件处理系统。服务必须管理一组用户预定义的函数,处理通过HTTP发送或从事件源接收的事件,确定将事件发送到哪个函数,查找函数的现有实例或创建新实例,将事件发送到函数实例,等待响应、收集执行日志、使响应对用户可用,并在不再需要时停止该函数。

各种无服务器平台之间存在许多共性。它们有相似的定价,部署和编程模型。它们之间的主要区别在于云生态系统:当前的无服务器平台只能使用它们自己生态中的服务,平台的选择可能会迫使开发人员使用该平台的原生服务。但是这种情况正在发生变化,因为开放源码解决方案也能在多个云平台上很好地工作。

1.3 无服务器计算的应用

亚马逊在2014年的Re:invent会议“AWS lambda入门”中推广了无服务器计算。其他供应商也在2016年推出了Google Cloud Function、Microsoft AzureFunction和IBM OpenWhisk。其中一些服务商甚至提供了“云函数”,即能够使移动应用程序在服务器端运行一些代码,而无须管理服务器。这种服务的一个例子是Facebook的Parse Cloud Code。然而该技术只能在移动应用程序领域实现相当有限的功能。

无服务器计算已经被用来支持更广泛的应用程序[6]。从功能视角来看,无服务器和更传统的架构可以互换。决定何时采用无服务器可能会受到非功能性需求的影响,例如运维量、成本以及应用负载等特性。从成本视角来看,无服务器架构的最大优势展现在高并发、计算密集场合。从编程模型的视角来看,无服务器函数的无状态特性使其自身结构类似于函数式反应编程。主要用于事件驱动和流式处理模式的应用程序。

2 无服务器计算所面临的挑战

无服务器计算作为一种新兴技术,在实践的过程中仍然面临诸多挑战。本文将重点从“系统层面的挑战”以及“编程模型和DevOps挑战”两个方面进行阐述。

2.1 系统层面的挑战

无服务器计算面临的系统层面挑战主要来自成本、冷启动、资源限制、可扩展性等几个方面。成本是无服务器计算当前最基本的一项挑战。包括最小化无服务器函数的资源消耗(包括在执行时和在空闲时)。无服务器的一个核心能力是能够支持零扩展(Scaling to zero),或者在空闲时间不向客户收费。然而,零扩展会带来冷启动的问题,导致需要花费代价来使无服务器代码做好运行准备。在零扩展的同时最小化冷启动的技术是非常重要的。无服务器系统需要资源限制来确保平台能够处理负载峰值和应对攻击。无服务器函数上能够设置的资源限制包括内存、执行时间、带宽和CPU使用率。最后,随着无服务器越来越受欢迎,可能有多个无服务器平台和多个无服务器服务需要协同工作。如何在系统层面对各个系统进行调整也是无服务器技术发展不得不面临的问题。

2.2 编程模型和DevOps挑战

无服务器计算面临的编程模型和DevOps挑战来在于调试、工具、部署、以及可组合性等多个方面。由于开发人员不再能够访问服务器,无服务器服务和工具需要关注开发人员的生产效率。无服务器函数运行的时间较短,相应它们的数量级会较多,这使得定位问题和瓶颈变得更困难。当函数执行完毕时,它们留下的唯一跟踪就是无服务器平台监视记录的内容。传统的开发工具并不适合于无服务器架构,目前急需全新的开发方法。无服务器计算需要更高的开发技能,如重构功能(如拆分和合并功能)、版本恢复等,并且需要与无服务器平台完全集成。开发人员需要能够使用声明性方法来控制部署和支持工具。

3 总结

本文探讨了无服务器计算的模式架构和它的发展历史。虽然无服务器计算的发展面临许多挑战,但是大多数大型云计算服务提供商已经发布了他们的无服务器平台,并且在这个行业中进行了大量的投资和投入。无服务器体系的广泛应用最终会推动新的编程模型、语言和架构的出现,它将给软件工程领域带来令人振奋的提升。

[1]Bryan,D.A.,B.B. Lowekamp,and C. Jennings. SOSIMPLE:A Serverless,Standards-based,P2P SIP Communication System. in International Workshop on Advanced Architectures & Algorithms for Internet Delivery & Applications. 2005.

[2]Jia,A.L.and D.M. Chiu,Designs and Evaluation of a Tracker in P2P Networks. 2008.

[3]Nastic,S.,et al.,A Serverless Real-Time Data Analytics Platform for Edge Computing. IEEE Internet Computing,2017,21(4):64-71.

[4]Lara,E.D.,et al. Poster Abstract:Hierarchical Serverless Computing for the Mobile Edge. in Edge Computing. 2016.

[5]érez,A.,et al.,Serverless computing for container-based architectures. Future Generation Computer Systems,2018(83):50-59.

[6]Douceur,J.R. and R.P. Wattenhofer. Optimizing file availability in a secure serverless distributed file system. in IEEE Symposium on Reliable Distributed Systems. 2001.

猜你喜欢

开发人员应用程序编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
删除Win10中自带的应用程序
Semtech发布LoRa Basics 以加速物联网应用
谷歌禁止加密货币应用程序
后悔了?教你隐藏开发人员选项
三星电子将开设应用程序下载商店
三星SMI扩展Java论坛 开发人员可用母语