当前位置: 首页 > 科技观察

重新思考使用无服务器构建软件的方式

时间:2023-03-20 23:34:51 科技观察

软件的构建方式在不断变化,以满足加速上市时间和跟上竞争步伐的持续压力。软件开发行业已经从瀑布式到敏捷,从敏捷到DevOps,从DevOps到DevSecOps,从单体应用到微服务和容器。今天,一种新的方法正在进入舞台并再次改变范式。无服务器旨在利用运营工作对速度的需求。AWSLambda和AmazonAPIGateway总经理蒂姆·瓦格纳(TimWagner)表示:“无服务器在上市方面改变了游戏规则,压缩了很多人们不想做、现在也不必做的步骤。”,在接受SDTimes采访时说。亚马逊将无服务器描述为“一种无需考虑服务器即可构建和运行应用程序和服务的方法”。无服务器应用程序不需要您配置、扩展和管理任何服务器。您可以为几乎任何类型的应用程序或后端服务构建[无服务器解决方案],并且可以为您处理运行和扩展具有高可用性的应用程序所需的一切,”该公司在其网站上写道。云原生计算基金会(CNCF))及其无服务器工作组将无服务器定义为“构建和运行不需要服务器管理的应用程序的概念”。它描述了一种更细粒度的部署模型,其中捆绑为一个或多个功能应用程序上传到平台,然后执行、扩展和计费以响应当前所需的确切需求。尽管名称如此,但CNCF表示无服务器并不意味着开发人员不再需要服务器来托管和运行代码,这也不意味着不再需要运营团队。”相反,它指的是无服务器计算的消费者不再需要在服务器配置、维护、更新、扩展和容量规划上花费时间和资源。相反,所有这些任务和功能都由无服务器平台处理,并且完全从开发人员和IT/运营团队中抽象出来,”CNCF写道。这让团队可以担心他们的代码和应用程??序业务逻辑,而运营工程师更专注于业务关键任务。Wagner解释说,这是无服务器的主要好处,因为大多数公司不从事管理或配置服务器的业务。通过能够抽象出操作任务、容量规划、安全补丁和监控,企业可以专注于为客户提供重要价值。然而,Wagner表示,虽然无服务器无疑将简化操作任务,它并没有完全消除运营团队。应用程序和应用程序逻辑仍然需要moni撕裂和可观察性。“车队的无服务器部分已经消失,坦率地说,这对运营团队或DevOps团队来说并不是一件快乐的事情。现在他们将活动重点放在业务逻辑上,这对公司来说非常重要,”他说.如何成功过渡到无服务器无论是无服务器,您首先听到的都是节省成本。Serverless降低了运营成本,降低了开发和扩展成本,因为您可以将工作外包,并且只需为您需要的计算付费。“它允许以更低的成本构建应用程序,因此企业能够花更多的时间来获得他们想要的应用程序。他们可以将更多的时间用于商业价值和用户体验,而不是过去的传统。但是,Stackery的首席执行官NateTaggart该团队的无服务器解决方案提供商表示,节省成本的好处有点转移注意力。无服务器的主要好处是速度“世界上每个工程团队都在寻找提高他们创建和交付业务速度的方法价值,”Taggart说。速度是无服务器的主要优势,但是当您具有多种功能并尝试集成大型单一遗留应用程序时,当程序过渡到无服务器时,实现速度变得困难。在大多数情况下,无服务器具有较低的障碍条目。根据Taggart的说法,单个开发人员很容易启动并运行一个功能,但是当您尝试将无服务器用作团队或专业设置的一部分时,它会变得更难了。为了在应用程序中成功部署无服务器,Taggart解释说团队需要利用微服务模式。微服务是一种持续的趋势,组织一直在利用它们将一个巨大的单体应用程序分解成不同的服务。“你不能只是将整个单体应用程序提升并将其移动到无服务器。它不可互换。如果你有一个大型单体应用程序,你可能正在使用虚拟机和容器,因此向无服务器的过渡可能会很棘手。我们将微服务视为无服务器的垫脚石之一。'”他说。当将单体应用程序转换为无服务器时,亚马逊的瓦格纳建议整合它。整个应用程序不必迁移到无服务器。他解释说,最重要的是获得在服务器上的好处并将这些部分转换为优化成本和业务成果。根据瓦格纳,大多数企业已经拥有某种混合系统,因此无需在无服务器、容器和微服务之间做出选择,您可以调整计算范式此外,转向无服务器的专业工程团队需要提供一致且可靠的环境。为此,塔格特表示,组织需要制定全公司范围的标准。“作为一个组织,您希望确保任何修改或发布应用程序的人都以通用方式进行修改或发布,以便您可以提高可靠性并避免‘它可以在我的笔记本电脑上运行’问题。当开发人员发布无服务器应用程序时,有默认的一致性,”他说。“当一个团队正在开发无服务器应用程序,并且涉及多个开发人员时,一致性和标准化就变得非常重要。”在基础层面,通过集中构建过程、标准工具、用于回滚应用程序,以及架构和共享依赖关系的可见性,以实现一致性和可靠性。Taggart解释说,一种更高级的方法包括集中管理安全密钥、访问角色和策略以及部署环境。亚马逊的Wagner补充说,限制谁可以调用功能很重要,并限制权限和访问以确保应用程序安全。根据Progress的Salinger,转换应用程序的最佳实践对无服务器的理解是以应用程序无状态的方式工作。“无状态应用程序以这样一种方式完成,即您的组件可以随时扩展和缩减。你必须确保你的应用程序不依赖于特定状态,”他说。另一个设计原则是首先开发您的业务逻辑和用户体验。Salinger指出,一个常见的陷阱是,当开发人员考虑构建无服务器应用程序时,而不是考虑以易于扩展的方式构建应用程序和运行功能。“关注用户体验和应用程序的价值,而不用担心所有对开发人员及其应用程序价值较低的重复,”Salinger说。解决无服务器安全问题开源安全公司Snyk的首席执行官GuyPodjarny表示,无源服务器仍然是一项“不成熟”的技术,这意味着无服务器安全性更加不成熟。“Lambda和AzureFunctions等平台本身非常安全,但缺乏保护无服务器应用程序本身的工具和最佳实践,而且难以采用,”Podjarny说。无服务器解决方案提供商ProtegoLabs的CTOHillelSolow表示,虽然无服务器不能从根本上改变安全性,但有些事情本来就很困难。Solow说,无服务器的最大弱点包括不必要的权限、易受攻击的代码和错误配置。此外,红帽产品管理高级总监RichSharples表示,旧的应用程序安全风险再次成为新的无服务器风险。这些风险包括功能事件数据注入、身份验证失败、无服务器部署配置不安全以及功能监控和日志记录不足。索洛解释说,无服务器安全并不复杂。例如,无服务器要求团队将平台、操作系统和运行时的所有权转移给亚马逊、微软和谷歌等云提供商。“云提供商几乎总是会在修补和保护服务方面做得更好,所以你不必担心你的团队会处理这些,”他说。当团队开始考虑如何确保他们的应用程序只做他们应该做的事情时,挑战就出现了。Solow解释了安全性的位置以及实施安全性的方式必须改变。在ProtegoLabs最近的一份报告中,该公司发现98%的无服务器功能存在风险,其中16%被认为是关键功能。“当我们分析功能时,我们会为每个功能分配一个风险评分。这是基于发现的姿势弱点,不仅是因素,还有它们发生的环境,”索洛解释道。“在扫描实时应用程序中数以万计的功能后,我们发现大多数无服务器应用程序根本没有安全部署,因为它们需要将风险降至最低。”根据Podjarny的说法,serverless可以改变Prioritizesecurity并将应用程序拆分成许多小块。“未打补丁的服务器和拒绝服务攻击等威胁在转移到平台后几乎被消除,极大地改善了门口的安全态势。这种现实将攻击者的注意力从服务器转移到应用程序,因此应用程序安全性的各个方面都变得越来越重要,”他说。“每一项工作都会创造一个需要保护的攻击面,创造数百倍的机会链中的薄弱环节。此外,由于应用程序如此分散,它们很难跟踪应用程序范围内的活动,因为它们处于功能之间的反弹状态,为跨功能交互中的安全漏洞提供了机会。”RedHat的Sharples补充说,安全团队应该考虑无服务器环境中的数据,考虑最小权限控制和细粒度授权,并实践良好的软件卫生,并记住数据访问仍然是他们的责任。为了成功解决无服务器安全问题,Podjarny建议开发团队应该拥有和操作良好的应用程序安全实践,并且应该伴随大量的自动化。此外,ProtegoLabs的Solow推荐了一种更加无服务器的安全模型,该模型在资源所在的地方使用安全性。“好消息是这些都是可以解决的问题,”索洛说。“无服务器应用程序允许您为各个功能配置安全权限。这使您能够实现比传统应用程序更精细的控制,从而显着降低攻击者获得访问权限时的风险。无服务器应用程序需要做出更优化的策略决策,如果没有合适的工具,这可能具有挑战性,但如果准确地完成这些决策,这些决策可以使无服务器应用程序比非无服务器类似物更安全。”索洛建议的其他安全最佳实践包括:映射您的应用程序以查看全貌并了解潜在风险功能级别的应用程序边界安全性为每个功能开发最小的角色保护应用程序依赖性通过应用代码审查和监控代码和配置来保持对错误代码的警惕添加到CI/CDWatch的服务配置测试信息流以确保它到达正确的位置减少拒绝服务和拒绝钱包,黑客可以通过“压倒”您的应用程序来攻击您的应用程序,增加费用并考虑限制功能实例生命周期的策略无服务器的十大用例根据CNCF多媒体处理:实现执行转换过程以响应文件上传的功能的数量聊天机器人:自动扩??展以满足高峰需求批处理作业/计划任务:需要强大的并行计算、IO或网络访问作业HTTPRESTAPI和Web应用程序:传统的请求和响应工作负载移动后端:能够在BaaSAPI业务逻辑:执行一系列步骤的微服务工作负载编排持续集成管道:无需配置主机的能力无服务器的三大革命根据云计算公司的一份新报告,它是任何数字海洋。无服务器解决方案提供商ProtegoLabs的CTOHillelSolow解释说,无服务器的含义可能令人困惑,因为它具有三个截然不同的核心价值:无服务器基础设施、无服务器架构和无服务器操作。Solow解释说,无服务器基础设施是指企业如何消费和支付云资源。“你从云提供商那里租什么?它是关于‘缩放到零’、‘不要为闲置付费’、‘真正的自动缩放’等。无服务器基础设施革命提出停止租赁机器并开始为实际资源消耗付费,”他在一篇文章中写道。无服务器架构着眼于“如何构建软件以实现水平扩展”。作为其中的一部分,Solow说有一些关键的设计原则:将无服务器存储设置为文件或数据存储,以便它可以根据应用程序的需要进行扩展将所有应用程序状态转移到少量的无服务器存储和数据库中确保计算由外部驱动事件(例如用户输入和API调用)或内部事件(例如基于时间的事件或存储触发器)事件将计算机组织成无状态微服务,负责应用程序逻辑的无服务器操作的不同部分定义了您如何部署和操作软件。Solow说,运营专门研究如何编排、部署和监控云原生应用程序。“云原生意味着云平台是新的操作系统,”他说。“你正在编写你的应用程序以在AWS的这台机器上运行。正如大多数开发人员没有充分考虑确切的底层处理器架构以及他们正在运行多少个超线程内核一样,当你使用本地云时,“你真的不想再考虑这些机器,而是开始考虑服务。这就是你为Android或Windows编写软件的方式,这就是你应该为云编写软件的方式。”另外,RedHat的产品管理高级总监RichSharples说,serverless通常被称为FunctionsasaService或FaaS,因为这样更容易理解。FaaS实际上是广义的serverless的一个子集,但它是重要的一部分因为它是“将所有这些服务粘合在一起的粘合剂,”他解释说。“FaaS是一种编程模型,它真正说明了拥有小型可部署单元的能力,以及能够将其与某些特定组件分离和隔离的能力运营部分,”常务董事TimWagner说。适用于AWSLambda和AmazonAPIGateway。“当我想到无服务器时,我通常指的是一种由公共云提供商运营并提供无限规模和自动化管理的功能模型。”无服务器工具和框架ApacheOpenWhisk:ApacheOpenWhisk是一个开源的无服务器云平台,旨在执行响应事件的功能。它目前正在Apache软件基金会孵化。AWSLambda:AWSLambda可能是市场上最早、最受欢迎的无服务器计算平台之一。功能包括使用自定义逻辑扩展其他AWS服务的能力、构建自定义后端服务的能力以及使用任何第三方库的能力。此外,亚马逊解释说,开发人员可以在零管理的情况下为任何类型的应用程序或后端服务运行代码。AzureFunctions:AzureFunctions由Azure开发,旨在为开发人员提供事件驱动的无服务器计算体验。它能够管理应用程序而不是基础架构,针对业务逻辑进行了优化,并使开发人员能够使用他们选择的编程语言来创建功能。CloudEvents:CloudEvents是一项持续的努力,旨在开发一种以通用方式描述事件数据的规范。“缺乏描述事件的通用方式意味着开发人员必须不断地重新学习如何接收事件。这也限制了库、工具和基础设施帮助跨环境交付事件数据的可能性,例如SDK、事件路由器或跟踪系统。”据该网站称,我们可以从事件数据中获得的可移植性和生产力总体上受到阻碍。最终目标是最终将规范贡献给CloudNativeComputingFoundation。CloudFunctions:CloudFoundations是GoogleCloud的事件驱动的无服务器计算解决方案.主要功能包括无服务器管理、自动扩展功能、响应事件运行代码以及连接和扩展云服务Fission:Fission是由Platform9设计的Kubernetes的开源功能即服务无服务器框架,混合云和容器编排提供商。Fission是作为AWSLambda的替代品而构建的。据该公司称,Lambda在开发部署包大小、内存占用量、函数执行并发数等方面给开发者带来了困扰。Fission旨在让团队摆脱云供应商的束缚。通过使用Kubernetes,Fission可以在Kubernetes运行的任何地方运行,并删除一些使用容器创建的“软件管道”。使用Fission,开发人员不必担心构建容器或管理Docker注册表。IBMCloudFunctions:IBM提供基于ApacheOpenWhisk的多语言Functions-as-a-Service编程平台。它旨在在可扩展的无服务器环境中按需执行代码。功能包括访问OpenWhisk生态系统、加速应用程序开发、认知服务和按使用付费的能力。Kinvey:ProgressKinvey是一个无服务器云平台,用于为移动、Web和其他数字渠道构建应用程序。该平台使开发人员能够在不考虑服务的情况下构建应用程序,因此他们可以专注于应用程序的价值,而不必担心基础架构、后端代码和扩展。