如何选择最合适的Serverless服务?

本文涉及的产品
简介: 本文讲的是如何选择最合适的Serverless服务?【编者的话】通过迅速灵活以及容量巨大的弹性伸缩,无服务器架构能很好地解决关键功能的性能瓶颈,但它并不是完美的:不仅需要修改设计去适应它,对熟悉的编程模型进行调整,还要解决诸如规划预算、安全等等问题。
本文讲的是如何选择最合适的Serverless服务?【编者的话】通过迅速灵活以及容量巨大的弹性伸缩,无服务器架构能很好地解决关键功能的性能瓶颈,但它并不是完美的:不仅需要修改设计去适应它,对熟悉的编程模型进行调整,还要解决诸如规划预算、安全等等问题。但总的来说,它为云上的应用提供了另一种选择——并且具有难以抵挡的诱惑:极大地简化应用从开发到部署和维护的整个过程。

【3 天烧脑式 Docker 训练营 | 上海站】随着Docker技术被越来越多的人所认可,其应用的范围也越来越广泛。本次培训我们理论结合实践,从Docker应该场景、持续部署与交付、如何提升测试效率、存储、网络、监控、安全等角度进行。

将编写代码和部署应用的整个过程简化是每个开发人员的梦想,而无服务器架构(Serverless)正是这样的解决方案,在采用这种架构的时候需要考虑它的局限,费用问题以及安全问题。

信息技术在不同领域的发展不尽相同。诚然,事实一直如此,因为人们为当下的问题所找到的可行的解决方案,通常先于这些问题本身就已经存在了。与虚拟化、云计算等技术的缓慢进步相比,编程语言几乎是原地踏步了十年。直到新一轮的编程语言和方法诸如Python,Ruby,Node,Swift的出现才打破这一局面。这两个领域看似毫无关联,然而我们即将看到二者共同演变并结合在一起开花结果。

这个新的结合领域就是无服务器计算(Serverless)。易于部署的容器实例集合、无处不在的基于REST API的外部服务、易于实现REST API的新编程语言使得以 REST API提供接口成为一种简单而可行的选择。这些技术相互结合,创造了一种全新的计算形式。 我们已经很熟悉这种新的编程形式的诸多方面(例如如何设计和实现REST API,如何设计实现微服务),但是仍有一些方面并不为人熟知。

从Node.js中学到的

我第一个Node.js程序与大多数人的并没有太大不同——设置好监听端口和路径,写好代码处理相应的执行和退出逻辑,然后使用浏览器访问对应的URI。在实现基本功能之后,我很自然地进一步利用Node的并发执行和其他新优点来改善这个应用。

但这个应用提供的并不是REST API,它只是简单地根据不同的请求内容响应包含不同内容的HTML页面。结合REST之后,Node应用便成为一个计算结点。不变的是,当收到请求时,它便执行逻辑,然后退出。同时,作为基础设施的部分,它会保持对特定端口的监听。

基础设施

然而,为了实现一个简单但完整、可运行的Node应用(或者 Python / Djang / Java / Spring / RoR 等),还需要进行网络配置,防火墙配置,操作系统配置和调整,存储配置,并且如果你使用了网络应用防火墙(WAF: Web Application Firewall),还需要配置WAF。尽管,DevOps能使所有这一切更容易一些,但请试想一下,如果你根本不需要做这些额外的配置,那将会怎样?

无服务器架构

针对这个问题,越来越多的公司不断地提出解决之道。他们思考的是能否可以做到由开发人员编写代码,部署应用,并在需要时就能轻易获取这些应用,而在不需要它们时也不需要做任何额外的工作,而且还能按需扩展? 甚至能否做到像WAF这样的配置也被自动化,并且应用的访问权限被限定在指定的人/机器的正确子集? 如果部署应用真的如同上传zip文件一样简单,或者就像在编辑器中编写代码并点击“部署”一样简单,那将会怎样? 最后,如果预先配置了数据库和存储的访问权限,那么又该如何将这些配置包含进来呢?

这对开发者无疑有着巨大的吸引力。编写代码后,无需进行那些看似必须的配置(无论是物理环境,虚拟环境的还是云端环境)就能部署,是众多开发者的梦想。这也不禁让人想起一些现实世界中的例子。首当其冲的就是应对高峰期的性能瓶颈。假设你有一个完美运行的在线订单系统,在销售高峰期(比如黑色星期五),由于验证收货地址的时间过长,系统经常陷入崩溃。

如果你有一个无服务器函数(serverless function),它仅返回输入的地址是否有效,你就可以将地址验证交给它来处理,那该多好? 甚至,该功能还允许快速扩展到几乎无限容量(当然,网络带宽还是要考虑的)! 现在,这个瓶颈不再是问题,你只需要为这个函数实际使用的计算资源(CPU时间)付费。 这意味着调用得越多,支付的费用就越高,但是在大部分的时间里,费用都很少。 你只需要为真实使用的计算资源付费。

如果所有这一切以可接受的价格让你在你的站点上或者云端完成,那该有多好!已经诞生了这样的产品(Microsoft Functions,AWS Lambda和nanoscale.io等)都提供了上述所有功能。

并非雨后彩虹

无服务器计算也并不是完美的。在选择供应商时,需要注意的事项包括:
  1. 工具支持。

    它必须支持你的开发工具,特别是对CI / CD / ARA的支持至关重要。如果无法将无服务器计算集成到你现有的开发环境和以及整个流程中,那么说明它还不够好。
  2. 计费和收费方式。

    永远不要忘记这些服务提供商与你的商业一样,目标也是赚钱。请确保你明白他们赚到的钱是从你的预算中支出的。所有按需使用的资源都有一些附加因素,因为它依赖于不可预测的客户群和他们变幻莫测的使用情况。但要了解你将被收取哪些费用,以及供应商保留了哪些更换计费方式的权利。
  3. 安全功能。

    将大量代码从你的核心应用中分离出来,并将其放在云端,这可能需要在安全上大量投资并需要撰写一些额外的代码。确保你的供应商能够提供上述协助,抑或是允许你将你的代码保留在防火墙和WAF之后。
  4. 你的整体架构。

    虽然我们上面的例子很好地演示了“低垂的果实”(唾手可得的部分),但稍微复杂一些的案例就可能会遇到诸如数据访问,数据安全,成本问题乃至高可用性等问题。确保你的团队已经深入研究了怎样实现无服务器计算架构,并能很好地掌握这种编程模型。

构建正确的应用

将来,一些应用程序将完全采用无服务器架构,特别是对于相比使用云端实例更具成本优势的应用。即便没有这样的应用,尽可能少地在基础设施上配置资源也会变得更加划算。同时,将无服务器计算作为解决各种相对独立的功能引起的性能瓶颈的解决方案,或者用于测试在不需要增加基础设施预算的情况下,是否可以增加应用的容量。总的来说,在信息技术领域,对于如何正确地选择架构来实现业务目标,无服务器架构无疑是其中一种解决之道。

原文链接:What to Look for When Choosing a Serverless Architecture(翻译:胡应明)

译者介绍:

胡应明,趋势科技资深工程师,专注于云计算领域基础架构。

原文发布时间为:2017-05-25

本文作者:胡应明

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:如何选择最合适的Serverless服务?

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1月前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
407 3
|
1月前
|
运维 Serverless 调度
Serverless 应用引擎常见问题之资源使用完影响服务使用如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
22 0
|
29天前
|
监控 Serverless
函数计算(FC)作为一种无服务器的计算服务,在使用过程中可能会遇到各种问题
函数计算(FC)作为一种无服务器的计算服务,在使用过程中可能会遇到各种问题
21 4
|
3月前
|
JSON 安全 Serverless
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数【1月更文挑战第23天】【1月更文挑战第112篇】
222 7
|
4月前
|
数据采集 Serverless API
在函数计算FC上成功部署SD服务并能通过API进行有效调用
在函数计算FC上成功部署SD服务并能通过API进行有效调用
293 3
|
25天前
|
人工智能 监控 Serverless
如何基于ACK Serverless快速部署AI推理服务
通过上述步骤,可以在ACK Serverless上快速部署AI推理服务,实现高可用、弹性扩展的服务架构。
19 1
|
1月前
|
关系型数据库 MySQL Serverless
Serverless 应用引擎常见问题之新发布的服务 arms 没了如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
25 3
|
1月前
|
运维 监控 Serverless
一键开启 GPU 闲置模式,基于函数计算低成本部署 Google Gemma 模型服务
本文介绍如何使用函数计算 GPU 实例闲置模式低成本、快速的部署 Google Gemma 模型服务。
164778 57
|
1月前
|
关系型数据库 Serverless 测试技术
函数计算常见问题之停止服务如何解决
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
114 0
|
3月前
|
关系型数据库 Serverless 分布式数据库
碧桂园服务使用阿里云PolarDB Serverless云数据库实现降本增效。
碧桂园集团,即碧桂园控股有限公司新型城镇化住宅开发商,采用集中及标准化的运营模式,业务包含物业发展、建安、装修、物业管理、物业投资、酒店开发和管理、以及现代农业、机器人。

相关产品

  • 函数计算