背??景介绍2009年,业界提出了DevOps的概念。维基百科上给出的定义是“DevOps是软件开发、运维和质量保证三个部门之间进行沟通、协作和集成所采用的流程、方法和系统的集合”。2011年,Forrester发布一份报告《ExpandingDevOpstoNoOps》预测,在不久的将来,一些企业将越来越依赖云,开发人员将能够更加自动化地进行程序构建(building)等运维操作,测试、部署,最终实现NoOps。虽然该术语表明这些公司将不再需要运维人员,但该报告正在谈论开发人员使用更多自动化工具,需要更少的人为干预。然后PaaS被视为实现的最佳方式NoOps。2014年,云厂商AWS推出了“serverless”范式服务。“serverless”最初的意思是让开发者免于设置和管理运行后端应用程序所需的服务器设备。这项技术的目标不是实现真正意义上的“无服务器”,而是指第三方供应商负责维护后端基础设施,为开发者提供智慧h以服务的形式提供所需的功能,例如数据库、消息和身份验证等。这种服务基础设施通常可以称为后端即服务(BaaS),或移动后端即服务(MBaaS)).但亚马逊在2014年发布的AWSLambda将“无服务器”范式提升到了一个全新的高度,为运行在云端的应用程序提供了全新的系统架构。此时,不再需要在服务器上不断运行进程等待HTTP请求或API调用,而是通过某种事件机制来触发代码执行。通常,这只需要在AWS的服务器上运行一个简单的功能。有人将此模型称为功能即服务(FaaS)。无服务器架构(也称为FaaS)是指企业或个人不需要购买、租赁或配置物理或虚拟服务器来支持后端代码的运行。无服务器解决方案通常由Web服务器、FaaS层、安全令牌服务(STS)、用户身份验证和数据库等元素组成。无服务器代码可以与传统的服务器式代码(如微服务)结合使用。例如,我们可以将Web应用程序中的一部分代码编写为微服务,而另一部分代码可以编写为无服务器代码。或者,完全没有任何服务器配置元素编写的应用程序可以是无服务器的。FaaS提供了一个平台,允许开发人员执行代码以响应事件,而无需构建和维护复杂的基础设施,只需要通过第三方应用程序或服务来管理服务器端逻辑和状态。Serverless计算的四大劣势1.第三方API系统带来的问题供应商控制、多租户问题、供应商锁定、安全漏洞等,都可能是第三方API造成的。在实施API时放弃系统控制可能会导致系统停机、强制API升级、功能缺失、意外限制和成本变化等后果。此外,其他云计算框架也存在多租户问题。Salesforce(PaaS)由于其多租户的云结构而受到一些监管限制,开发者在使用Salesforce时必须尽可能避免相关问题。具体来说,多租户解决方案往往在安全性、稳定性和性能方面存在问题。2.缺乏运维工具开发者依赖供应商提供调试和监控工具。一般来说,调试分布式系统的任务很困难,通常需要访问大量相关指标才能确定问题的根本原因。3.架构的复杂性开发者通常需要花费大量时间对具体的功能进行评估、实现和测试,最终决定这些功能应该如何细分。应用程序调用操作中涉及的函数数量应该是平衡的。管理过多的功能无疑会使问题复杂化,忽视粒度最终会导致微服务架构成为“迷你单体”架构。目前,Lambda(AmazonWebServices(AWS)提供的一种计算服务,以大规模并行方式执行代码以响应事件)对用户可以在所有lambda表达式上运行的并发执行总数有限制。问题是这个限制适用于整个AWS账户。一些组织使用相同的AWS账户进行生产和测试。这意味着,如果组织中有人开始新的负载测试并尝试执行1,000个并发Lambda函数,生产应用程序将立即遇到拒绝服务(DoS)。4.实现难度Serverless应用的集成测试非常困难。相比其他架构,serverlessFaaS(即每个功能)集成的单元要小得多,所以我们需要集成大量的单元才能正常测试。此外,还有一些与部署、版本控制和打包相关的问题。您可能需要为整个逻辑应用程序中的每个功能部署相应的FaaS组件。这意味着您不能以原子方式统一部署一组功能,并且由于没有版本化应用程序的概念,原子回滚也是不可能的。在这种情况下,您可能需要关闭任何触发相应功能的事件源,部署整个功能集,然后重新启动事件源。摘要无服务器架构是架构领域令人兴奋的新变化,随着开发人员积极采用AWSLambda等计算服务,它的发展速度会更快。如今,一些无服务器应用程序支持成千上万的用户并执行复杂的操作,包括处理繁重的工作,例如视频编辑和数据处理。在很多情况下,Serverless架构可以取得比传统模型更好的效果,而且实施起来更便宜、更快。但是,我们也必须高度重视上述这种架构的弊端,并努力寻找应对上述弊端的解决方案,以促进Serverless架构更加安全稳定的发展。
