你的企业是否已经为迎接无服务器的到来做好了准备?无服务器计算如今正在迅猛发展,但是这并不意味着它们适用于所有的场景或企业。

无服务器计算是一种软件架构模型,即云计算服务提供商为客户运行服务器并动态管理计算资源的分配。“无服务器”这个术语是一个误称,因为在某种意义上,服务器仍然参与到计算过程中。这种类型服务的价格是根据应用程序实际消耗的资源量而不是预先的购买量。

市场调研机构Markets and Markets 2018年发布的调查报告称,无服务器架构市场规模在2018年估值为42.5亿美元,预计到2023年将达到149.3亿美元,期间将以复合年增长率29%的速度增长。北美地区在预测期内将占据最大的市场份额,部分原因在于这个地区采用云计算服务比较早。

预计推动市场增长的主要因素包括消除对管理服务器的需求,降低基础设施成本、简化部署、管理和执行。微服务架构的广泛应用也为增长起了推动作用。

Markets and Markets表示,自动化和集成服务在无服务器架构的部署中发挥了重要作用。自动化服务可有效地帮助管理部署在混合IT平台上的微服务,以提供更快的响应速度,以及对计算资源的优化使用。

Gartner也很看好无服务器计算的增长。该研究机构将无服务器计算列为2019年能够影响基础设施和运营的十大趋势之一,并指出这一新兴的软件架构模型可能会消除企业对基础设施供应和管理的需求。

无服务器计算对IT管理员的吸引力

德勤咨询公司负责云计算实践的主管Ken Corless表示,无服务器不仅对应用程序开发人员很有吸引力,而且对系统运营人员也很具吸引力。

无论是由大型云计算提供商提供,还是从市场上采购解决方案来实现内部部署,无服务器计算的目标都是一样的。Corless称:“企业采用自动化和自助服务可以加快软件开发生命周期。”

对于IT管理员来说,无服务器可以减少基于标签的工作负载的“请求-响应”周期,允许管理员将精力放在更高级别的任务上,例如基础设施设计或创建更多的自动化。

Corless举了两个主要用例。一个是在应用程序开发中创建基于服务的现代松散耦合应用程序。功能即服务(FaaS)和后端即服务(BaaS)这两种支持无服务器计算的云服务都可通过保持小型化团队来提高软件交付团队的生产力。

另一个重要的用例是针对系统管理员的。Corless说:“他们追求的自动化可通过无服务器技术快速轻松地逐步实现。”例如,德勤公司在云计算管理业务中广泛使用了无服务器来实现产品的自动化运营。

与云计算服务一样,无服务器在某些情况下可能比支付虚拟机的费用更高。目前在虚拟机上使用率始终在80%的应用程序在无服务器环境中费用可能会更高。

Corless说:“无服务器的真正优势在于更少的人即可完成IT业务中的一些例行任务,例如软件修补和备份。”这有两个好处。首先,执行这些例行任务的人员可以将更多精力放在IT或企业中可以创造更多价值的地方。

“没有人会为做DNS域名系统调整的工作而感到高兴。这些人可以被重新分配参加新功能的开发工作。在我看来,推动实现更高程度的自动化是最重要的事情。”

第二个好处是,让小型化的团队有了更强的自我决定能力。Corless说:“随着基础设施管理的专业知识和指南的自动化,团队可以自我服务,并安全地做到这一点。不过,实现标准和指导的自动化通常需要一些投资,因为无服务器解决方案通常不够安全,需要某种类型的限制才能使用。”

市场调研机构IDC的平台即服务研究主管Larry Carvalho称,应用程序随时都能够利用事件驱动的计算和解耦服务,这对于无服务器平台来说非常理想。

Carvalho说,常见的用例是物联网(IoT)应用程序和需要事件驱动处理的移动后端。其他用例是针对事件实时反应的批处理或流处理。

无服务器计算的最佳实践

那么企业如何确保无服务器取得成功呢?以下是专家给出的一些建议和做法。

01

在设计过程中就要考虑到服务器产品的限制条件

市场营销技术提供商Cordial的物联网平台架构师Daniel Smith称,负责处理向无服务器过渡工作的工程团队常常会忽略“即使是很灵活的产品也存在严格的限制条件”这一问题。

Smith说:“无服务器是其他人的服务器或容器,它们有着自己的设计限制。记住这一点对无服务器的成功会有很大的帮助。在无服务器的堆栈中要划分清楚责任,因此在设计和实现过程中需要考虑总运行时间、CPU使用时间或需要使用的内存总量等问题。”

Cordial从2015年就开始探索无服务器技术,其目标是在资源使用量不可知的情况下建立可预测的成本模型。Smith说:“作为一家初创企业,可预测的、基于需求的成本结构很有吸引力。”

2018年5月,该公司开始使用Cloudflare的Workers技术作为其部分系统的替代品。作为一家为消费者服务的B2B企业,Cordial需要尽快与消费者实现互动。

Smith说,“这通常需要在地理位置上尽可能地将工作负载靠近消费者。”

由于Cordial已经能够减小微服务的规模,因此他们愿意尝试还未在其他地方部署的编程语言,以让公司能够更快、更自信地提供更高效的产品。

02

设计有限的工作负载

Smith指出,企业应该将无服务器架构视为一种方法或一种功能的执行引擎。

他说:“为了进一步细化这个目标,功能的输入和输出应该是可以被处理的小数据。不要使用无服务器功能处理一个数据文件,而是要将每行数据单独地执行。”

减少每个工作单元的大小可以加快开始转向网络在服务之间移动数据的速度。Smith表示:“对于移动中的数据,人们可以从一开始就将网络视为一种易变的存储设施,每秒为每个网络接口可提供10GB的存储。硬盘是速度很慢的系统组件,除了最终输出可长期存储外要避免使用。”

03

让函数尽可能处于无状态下

应用程序性能软件提供商Dynatrace的软件工程师Daniel Dyla表示,整体应用程序中常见的全局变量不适用于无服务器应用程序,因为调用间的全局状态可能不会持久。

Dyla称:“为了解决这个问题,无服务器函数应尽可能是无状态的。如果需要状态,最好是从外部数据库收集的状态,并调用另一个无状态函数来执行实际的数据处理的工作。通过这种方式,企业可以将状态隔离到指定的位置,以便更容易管理。”

 

Dyla介绍说,受到低成本、扩展能力、事件驱动调用的吸引,Dynatrace在过去几年中一直使用无服务器技术。目前该公司正在轮询系统中使用无服务器计算,因为这一系统需要持续运行进行批处理。

Dyla称:“我们看中的主要好处是成本低,我们的无服务器函数往往只是一小段代码,突发负载可以从零开始迅速扩展。”

04

自动化部署和测试

电子发现软件提供商Relativity的高级软件工程师Hristo Papazov表示,虽然有些工具可以轻松实现无服务器计算的人工部署,但是自动化部署可让企业保持良好的一致性,不会出现人为的错误。

“自动化还允许企业内部的其他团队轻松采用这些技术,”Papazov说。

Relativity正在使用微软Azure云服务的无服务器技术,并通过确保其核心组件正常运行来改善其电子发现平台的客户体验。Papazov说,通过无服务器的内部监控工具,企业可以让用户有能力处理大量的遥测数据,以快速检测和解决问题。

Papazov表示,随着无服务器应用程序日益复杂,单元测试成为了开发周期的一个关键部分,同时自动化也可以为此提供帮助。“在微软推出Azure Functions时,进行单元测试是非常困难的。经过了较长一段时间的发展,现在在项目中添加单元测试已经变得非常容易了。”

05

了解现代应用程序架构

管理者应该将应用程序分解为短期运行、独立、分离的服务。Carvalho称:“构建一个无状态应用程序的同时还要利用API管理等支持服务来实现通信和确保用户身份安全。”

他举例说,“可以通过提取业务逻辑和在无服务器框架中将其作为微服务运行来分解为处理外来交易而持续运行以的Web应用程序服务器。这样可以基本消除持续运行服务器的成本,同时将故障备援的难题交给云计算提供商。”

06

让网络安全成为优先事项

部署了无服务器技术的企业或许不必担心修补服务器或运行防病毒软件,但是基于应用程序编程接口(API)的无服务器解决方案极大地增加了端点的数量。Corless指出,“如果这些API被公司的客户或合作伙伴使用,那么风险将会更大。”

企业可能需要重新考虑防火墙规则的处理方式。Corless告诫道:“因为对防火墙的修改会迅速造成一场混乱。”

作者:Bob Violino 为 Computerworld、CIO、CSO、InfoWorld 和 Network World 网站的特约撰稿人。

编译:陈琳华

原文网址:https://www.networkworld.com/article/3390116/how-and-where-to-use-serverless-computing.html

信息化和软件服务网 - 助力数字中国建设 | 责编:左右