Serverless计算虽然神秘,但一定会成为IT行业最强大的工具之一。这种可能改变游戏规则的技术虽然不是全新的,但就像之前的容器技术一样,受到一些神秘和误解的影响。一、无服务器1、什么是无服务器计算?无服务器计算使企业无需考虑服务器即可构建和运行应用程序和服务。无服务器应用程序不需要管理任何服务器,任何类型的应用程序或后端服务都可以构建为无服务器应用程序。运行应用程序和提供高可用性所需的一切都由云服务提供商提供。无服务器应用程序有四大优势:1)无需管理服务——无需提供或维护任何服务器,无需安装任何软件或运行时。2)弹性缩放——应用程序缩放可以自动完成,也可以通过调整其资源使用来调整容量,而不是增加或减少服务器的数量。3)高可用性——无服务器应用程序具有内置的高可用性和容错能力。不管高可用性如何,运行应用程序的服务默认提供高可用性。4)无闲置磨损——无需为计算和存储等服务预留容量。如果代码未运行,则不收费。构建无服务器应用程序意味着开发人员可以专注于生产代码,而无需在云端或本地管理和操作服务器或运行时。2.无服务器计算是如何工作的?与使用虚拟机或某些底层技术部署和管理应用程序相比,无服务器计算提供了更高级别的抽象。因为它们具有不同的抽象和“触发器”集。在计算中,这种抽象具有特定的功能和抽象的触发器,通常是事件。在数据库的情况下,这个抽象可能是一个表,触发器相当于对表的查询或搜索,或者在表中做某事产生的事件。例如,一款允许用户在不同平台上使用全球顶级玩家高分表的手机游戏。当请求这些信息时,请求是从应用程序到API接口。API接口可能触发aws的Lambda函数,或者serverless函数,这些函数从数据库表中获取数据流,返回一定格式的数据,包括前五名的分数。构建完成后,该应用程序的功能可以在游戏的移动版本和网络版本中重复使用。这与设置服务器不同,您不必拥有AmazonEC2实例或服务器并等待请求。环境由事件触发,响应事件所需的逻辑仅在响应中执行。这意味着运行函数的资源仅在函数运行时创建,从而以非常有效的方式构建应用程序。3、适用于哪些场景?无服务器计算适用于由任何事件驱动的各种不同用例。这包括物联网、移动应用程序、基于网络的应用程序和聊天机器人。事件是由系统中的人为操作(例如按下按钮)、传感器或数据流生成的。ThomsonReuters(姓名)就是一个例子,它使用AWSLambda来加载和处理数据流,而无需预置或管理任何服务器。ThomsonReuters构建了一个解决方案,使其能够捕获、分析和可视化其产品生成的分析数据,提供有助于产品团队不断改善用户体验的见解。AWSLambda仅在通过与其他AWS服务、Kinesis和AmazonS3的集成而被新数据条目触发时运行代码。在事件驱动中,代码运行时,公司只对计算处理收费,非常划算。4.哪些场景不适用?对于已经构建的遗留应用程序,这不一定是完整的解决方案。如果是单体应用或者应用需要运行在操作系统层面,这样的应用不适合运行在Serverless平台上。这并不意味着这样的应用程序不能是无服务器的,它只是意味着应用程序需要重新架构。一个很好的例子是Web应用程序,它可以作为大型整体作业在应用程序服务器(如Tomcat)中运行。如果您要将应用程序分解为一组复合功能,则可以使用无服务器模型实现所有新功能。随着时间的推移,旧版本应用程序的使用级别越来越小,而这些新的无服务器组件的使用量随着使用量的增加而增加。对于此类客户,有一个过渡模型,客户可以遵循该模型从传统的基于机器的应用程序架构迁移到基于功能的架构。5.无服务器计算昂贵吗?不贵啊。您只需为企业使用的资源付费,而无需支付与无服务器计算相关的任何费用。特别是对于小型用例,对于应用使用情况随时间变化很大的企业来说非常划算。对于希望管理工作负载和运营的客户来说,这也是一个很好的选择,因为它可以让客户避免成本,例如容量规划或部署工具。许多AWS客户现在都在尝试使用服务器来提高敏捷性和节省成本。健康零食公司Graze有多种使用AWS的方法,包括将分析数据实时上传到AmazonRedShift、管理备份和检查GitHub拉取请求,希望在未来几个月内将其使用量增加一倍或三倍。6.无服务器计算的行业炒作无服务器计算得到了开发人员的积极响应。它为以资源高效方式交付应用程序提供了更多选项和可能性。许多大型企业,例如Netflix,已经在探索无服务器计算,希望能腾出开发人员的时间。Netflix使用AWSLambda构建基于规则的自我管理基础设施并替换低效流程,从而降低错误率并为开发人员节省宝贵的时间。以前,云开发人员必须使用耗费大量人力和时间的机器。无服务器技术允许开发人员在几分钟内运行测试和生产。开发人员可以通过建模框架直接控制部署的时间和方式,以及应用程序架构。也允许发布自己的产品,亲身体验。2、容器与ServerlessServerless计算与容器之间正在酝酿一场较量——尘埃落定,谁将倒下?会是容器吗?如前所述,无服务器具有一些明显的优势。比如节省成本、提高IT支出效率、减少资源和维护需求、让开发人员和IT人员专注于高价值的任务等等。这就是人们对这项技术如此热情的原因。然而,通往无服务器的道路并不容易。SetfiveConsulting的合伙人AshishDatta表示,将基于容器的架构迁移到无服务器通常需要重新构建系统的重要部分。“从容器到无服务器的转变比从虚拟机到容器的转变更引人注目,因为计算环境在容器和无服务器之间发生了根本性的变化。”相反,从虚拟机到容器的迁移更直接,因为它实际上只是部署理念的改变。Stackery首席执行官NateTaggart表示,最大的障碍是企业无法轻松迁移到无服务器架构。“(无服务器应用程序)必须为无服务器基础设施而设计。这对于新开发来说可能是相当经济的,但迁移遗留应用程序将是繁重的,在某些情况下是不可能的。”和时间限制;有限的语言支持;以及管理请求之间状态的特殊考虑。所有这些都必须“内置到应用程序设计中,”Taggert说。PubNub的产品营销总监JamesRiseman表示,转向无服务器架构将还需要对现有基础设施进行重大反思。“无服务器计算需要非常现代的组件化架构。系统和应用程序必须分解为离散的逻辑功能,并确保这样的质量企业会失去控制。”詹姆斯·赖斯曼说。无服务器的另一个问题是定价。“公司按每笔交易或每秒计费,而不是按传统基础设施条款计费,”西斯曼说。“这使得定价更加难以预测。”除了满足迁移需求外,转向无服务器计算还可能导致思维方式的改变。“最大的障碍之一是你需要以离散的单位来考虑计算资源,而不是一直这样。”这与内存使用和运行时等框架的限制相吻合,例如AmazonLambda。1.对手还是盟友?撇开积极和消极因素不谈,容器和无服务器是正面交锋中相互排斥的解决方案。但是每个人都说这样想是错误的。SwymSystemsCEO高级顾问兼高级顾问ToddMillecam表示,这是一个苹果与橘子的比较。“两者都在使用,如果你看看大多数无服务器技术的运作方式,它们只是在后台运行容器。”无服务器和容器是互补的,而不是重叠的角色。虽然两者都可以用于计算任务,但各有优缺点,”Taggart说。Serverless是一种理想的、可预测的、具有小资源需求和短期事务的工作负载。容器对于长时间运行的流程和可预测的工作负载具有优势。容器还在应用程序设计中提供了更大的灵活性,但需要在底层基础设施上做更多的工作“作为无服务器操作控制台产品,我们有一个几乎完全无服务器的后端,”Taggart补充说,但仍然将容器用于某些工作负载更好的地方2。Serverless是未来吗?看来关于容器没落的传言有些言过其实。Datta表示,不同的架构和应用总是需要不同的抽象层次,同样,不同的团队会做出不同的权衡。正如容器没有取代虚拟机,虚拟机并没有取代裸机服务器。抽象不会成为“更接近于金属”解决方案。Serverless,应该被看作是技术的一次演进。大多数观察家警告说,无服务器仍然不成熟,没有架构模型和强大的开发工具。这意味着将企业应用程序的命运与特定的云提供商联系在一起会带来风险。因此,尽管它具有巨大的潜力,但可能需要数年时间才能在企业中得到广泛采用。同时,无服务器将对初创公司产生重大影响。“无服务器计算提供了一种托管代码并使其在Web上廉价可用的方法。无服务器是构建Web应用程序的一种经济高效的方式,直到您拥有活跃的用户群,”Millecam说。然而,随着无服务器计算的成熟,架构师会发现无服务器越来越难以抗拒,数字机构POP的CTOJakeBennett说。“Serverless计算解决了太多被忽视的问题。将扩展性问题的注意力转移到第三方供应商是每个开发者的梦想,让其他人关心服务器维护是IT运维人员的幻想。”
