无服务器计算,虽然神秘,但一定会成为IT行业最有力的工具之一。这种可能改变游戏规则的技术虽然不是全新的,但就像之前的容器技术一样,有一些神化和误解。
1什么是无服务器(Serverless)计算?
无服务器计算允许企业构建、运行应用和服务而不用去考虑服务器。无服务器应用不需要管理任何服务器,而且任何类型的应用或后端服务都可以构建为无服务器应用。运行应用以及应用高可用所需要的一切,都由云服务商来提供。
无服务器应用程序有四大优势:
1)不需要管理服务– 不需要提供或维护任何的服务器,不需要安装任何的软件或运行时。
2)弹性扩缩–应用程序扩缩能自动完成或是通过调整其资源使用量来调整容量,而不是通过增减服务器的数量。
3)高可用-无服务器应用程序内置高可用和容错。无需考虑高可用,运行应用的服务默认提供高可用。
4)没有闲置损耗-不需要对计算和存储之类的服务预留容量。如果代码没有运行,就不会收费。
构建无服务器应用程序意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时。
2无服务器(Serverless)计算如何工作?
与使用虚拟机或一些底层的技术来部署和管理应用程序相比,无服务器计算提供了一种更高级别的抽象。因为它们有不同的抽象和“触发器”的集合。
拿计算来讲,这种抽象有一个特定函数和抽象的触发器,它通常是一个事件。以数据库为例,这种抽象也许是一个表,而触发器相当于表的查询或搜索,或者通过在表中做一些事情而生成的事件。
比如一款手机游戏,允许用户在不同的平台上为全球顶级玩家使用高分数表。当请求此信息时,请求从应用程序到API接口。API接口或许会触发 aws 的Lambda函数,或者无服务器函数,这些函数再从数据库表中获取到数据流,返回包含前五名分数的一定格式的数据。
一旦构建完成,应用程序的功能就可以在基于移动和基于 web 的游戏版本中重用。
这跟设置服务器不同,不是必须要有Amazon EC2实例或服务器,然后等待请求。环境由事件触发,而响应事件所需的逻辑只在响应时执行。这意味着,运行函数的资源只有在函数运行时被创建,产生一种非常高效的方法来构建应用程序。
3适用于哪些场景?
无服务器计算适合于任何事件驱动的各种不同的用例。这包括物联网,移动应用,基于网络的应用程序和聊天机器人。事件是由人的动作(比如按下按钮),传感器或者系统中的数据流产生。
这方面的一个例子是,Thomson Reuters(人名)使用AWS Lambda来加载和处理数据流,而无需提供或管理任何服务器。Thomson Reuters建立了一个解决方案,使其能够捕捉、分析和可视化其产品所生成的分析数据,提供帮助产品团队不断改进用户体验的见解。
AWS Lambda只在通过与其他AWS服务、Kinesis和AmazonS3集成的新数据条目触发时运行代码。
在事件驱动下,当代码运行时,公司只收取计算处理的费用,这是非常节约成本的。
4不适用哪些场景?
对于已经构建的遗留应用程序来说,这不一定是一个完全的解决方案。如果是一个单体应用或者应用需要运行在操作系统级别,这样的应用就不适合在无服务器平台上运行。这并不意味着这样的应用没法实现无服务器架构,它只是意味着需要重新构建应用程序。
一个很好的例子是web应用程序,可以在应用程序服务器(如Tomcat)中将其作为一个大型的单体job运行。如果要将应用程序分解为复合函数集,则可以使用无服务器模型实现所有的新功能。随着时间的推移,旧版本应用程序的使用级别越来越小,这些新的无服务器组件的使用率随着使用量的增加而增加。对于这样的客户,都有一个过渡模型,客户可以遵循这种过渡模式,将传统的基于机器的应用程序架构迁移到基于功能的架构。
5无服务器(Serverless)计算贵吗?
并不贵。只需要支付企业所使用的部分,没有任何与无服务器计算相关的成本。特别对于小的用例,应用程序使用随时间变化大的企业是非常划算的。
对于希望管理工作负载和操作的客户来说,它也非常划算,因为它可以使客户避免成本,例如容量规划或部署工具。许多AWS的客户,现在正在尝试用服务器来提高敏捷度,同时也节省了成本。健康零食公司Graze有许多使用for AWS的方法,包括将分析数据实时上传至亚马逊RedShift、管理备份和检查GitHub拉请求,希望在未来几个月内将其使用量增加两到三倍。
6无服务器(Serverless)的行业炒作
无服务器计算得到了开发人员的积极响应。在以资源有效的方式交付应用程序时,它提供了更多的选项和可能性。
很多大型的企业,比如Netflix,已经在探索无服务器计算,希望解放开发人员的时间。Netflix使用AWS Lambda来构建基于规则的自我管理基础设施,并替换低效的流程,减少错误的速率,为开发人员节省宝贵的时间。
以前,云开发者必须使用那些耗费大量人力和时间的机器。无服务器技术允许开发人员在几分钟内运行测试和产品。开发人员直接控制部署时间以及如何部署,通过建模框架控制应用架构。还允许发布自己的产品并亲自体验。
2
容器和无服务器(Serverless)
无服务器计算和容器之间正在酝酿一场战斗——当尘埃落定时,谁会倒下?会是容器吗?
如前所述,无服务器具备一些明显的优势。比如节省成本,提高IT支出的效率,减少资源和维护需求,允许开发人员和IT人员专注于高价值的任务等等。这也是为什么人们会对这项技术充满热情的原因。但是,通往无服务器的路径并不轻松。
SetfiveConsulting 的合伙人 Ashish Datta 说,将基于容器的架构迁移到无服务器通常需要重新架构系统的重要部分。
“与从虚拟机到容器的转换相比,从容器到无服务器的转换更有戏剧性,因为容器和无服务器之间的计算环境发生了根本性的变化。”
相反,从虚拟机到容器的迁移更为直接,因为这实际上只是部署哲学的变化。
Stackery CEO Nate Taggart说,最大的障碍是企业无法轻易地迁移到无服务器架构上。
“(无服务器应用程序)必须是为无服务器基础设施设计的。这对于新的开发来说可能是相当经济的,但是迁移遗留应用程序将是很繁重的,在某些情况下甚至是不可能的。
今天的无服务器产品有资源的限制,Taggert解释道,包括内存、计算和时间限制;有限的语言支持;以及在请求之间管理状态的特殊考虑。所有这些都必须“从一开始就融入到应用程序设计中”,Taggert说。
PubNub的产品营销总监James Riseman说,迁移到无服务器架构还需要对现有基础设施进行重大的反思。
“无服务器计算需要一个非常现代的、组件化的架构。系统和应用程序必须被分解成离散的逻辑函数,而要保证这样的质量企业会失去控制。” JamesRiseman 表示。
无服务器的另一个问题是定价。“公司是按照每笔交易或每秒钟计费,而不是按照传统的基础设施条款,”Siseman说。“这使得定价更加难以预测。”
除了地址迁移需求之外,转向无服务器计算还会导致思维模式的改变。
“最大的障碍之一是,需要考虑在离散的单元中计算资源,而不是始终占用进行计算。”这与对内存使用量和运行时等框架的限制相吻合,比如Amazon Lambda这样的框架。“Atta说道。
1对手还是盟友?
撇开正反两方面的因素不说,在面对面的交锋中,容器和无服务器是相互排斥的解决方案。但是每个人都说这样想是错误的。
SwymSystems CEO兼首席顾问Todd Millecam 表示,这是一种苹果和橘子的比较。“两者都有使用,如果观察大多数无服务器技术的运行方式,它们只是在后台运行容器。”
无服务器和容器是互相补充而并非重叠的角色。Taggart说,虽然两者都可以用于计算任务,但每个任务都有其优缺点。无服务器是一种理想的、可预测的、具有小型资源需求和短期事务的工作负载。
容器对于长时运行的流程和可预测的工作负载具有优势。容器在应用程序设计方面也提供了更多的灵活性,但需要对底层基础架构进行更多的管理。
“作为一个无服务器操作控制台产品,我们有一个几乎完全没有服务器的后端,”Taggart补充说,但是仍然使用容器来处理某些工作负载,在这些工作负载中,它们是更好的工作工具
2 Serverless是未来吗?
看来,关于容器式微的谣言被夸大了。
Datta说,不同的架构和应用程序总是需要不同程度的抽象,同样,不同的团队也会对做出不同的权衡。
正如容器没有取代虚拟机,虚拟机也没有取代裸金属的服务器。抽象不会成为“更接近金属”的解决方案的生死存亡的威胁。
无服务器,应该被看作是技术的进化。大多数观察者警告说,无服务器仍然不成熟,还没有建立架构模型和健壮的开发工具。这意味着将企业应用程序的命运与特定的云供应商绑定,将带来自身的风险。
因此,尽管它有巨大的潜力,但可能需要数年才能在企业中获得广泛的应用。
同时,无服务器将会对创业公司产生重大影响。
“无服务器计算提供了一种托管代码的方法,并以很低廉的成本在web上可用。在拥有活跃的用户基础之前,无服务器是构建web应用程序的一种划算的方式。”Millecam说道。
不过,数字机构POP CTO Jake Bennett 表示,随着无服务计算技术的成熟,架构师会发现无服务器将越来越难以抗拒。“无服务器计算解决了太多被忽视的问题。将对可伸缩性问题的关注转移给第三方供应商,是每个开发人员的梦想,让别人关心服务器维护是IT运维人员的一种幻想。”
原文链接:
1、Everything you need to know about Serverless Computing
https://www.tuicool.com/artic...
2、Serverless and containers: Is a throw down under way?
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。