Serverless的实现与面临的挑战

Serverless的实现与面临的挑战

译文 精选
作者: 胥磊 2023-01-11 08:00:00

云计算 在本系列的第一篇文章中,我们探讨了为什么坚信Serverless是云计算的未来,期间我们研究了云计算的演变,也列举了当前已经转向Serverless模式的一些用例。在本文中,我们将进一步阐述如何实现Serverless以及实现过程中将会遇到的挑战。最后将通过论点总结和愿景展望来结束这个系列。

​译者 | 胥磊

审校 | 孙淑娟

在本系列的第一篇文章中,我们探讨了​​为什么坚信Serverless是云计算的未来​​,期间我们研究了云计算的演变,也列举了当前已经转向Serverless模式的一些用例。在本文中,我们将进一步阐述如何实现Serverless以及实现过程中将会遇到的挑战。最后将通过论点总结和愿景展望来结束这个系列。

挑战

 转向一个更纯粹的Serverless的世界将能解决现代工作负载运行时遇到的许多问题,但同时也存在很多挑战。本文中,我们将这些挑战分为四大类:云优化、服务设计、功能和工作流以及安全问题,分别展开来进行探讨。在每个大类中我们都列出了重要的,有待彻底解决的具体问题。虽然不是很全面,但我们坚信这些将成为Serverless社区规划线路的基石。

挑战摘要

类别

挑战

应对挑战需改进的措施

云优化

减少分配和释放计算资源的开销

需要改进云系统组件的设计(主要Kubernates)

减少服务延迟

需要改进云系统组件的设计(主要Kubernates)

支持暂停工作节点

需要对使用的资源进行碎片整理(需要KNative和Kubernetes支持)

服务设计

外部化服务流事件

需要服务设计支持事件驱动

处理延时问题

需要服务设计时要考虑延时

对事件风暴,概率性的事件降低以及事件不可用的处理

需要云系统(Knative)设计和相关服务设计时考虑支持

功能和工作流

服务标准化

需要社区能满足行业标准

不同服务的工作流的通用描述

需要完整的工作流语言

安全问题

更多的权限从用户本地转移到云端自动处理

云计算需要保护可能存在漏洞的服务方面发挥更积极的作用

工作负载更细粒度的分类扩大了被攻击面

增加自动化和版本控制,以减少配置任意性,并支持频繁的服务更新

网络边界的消失

增加安全新闻的监测和控制(Knative,Kubernetes)

云计算优化

Serverless适合为服务需求分配计算资源,它在服务需求增长时分配新的计算资源,而在需求减少时释放相关计算资源。这里的分配和释放计算资源的开销问题可能是Serverless应用部署后出现的最重要的问题之一。

Serverless服务(无论函数,容器或者是工作流运行的容器组)都会产生计算资源的缩减和回升的成本,而且这种成本的量可能相当可观,因为其贯彻了Serverless服务的生命周期的各个环节。包括Kubernetes在内的大多数云技术在设计时都考虑了服务资源的预配置。在Serverless模式下,就必须要考虑通过降低运行中实例的变化而产生的开销来优化更多的动态用例。例如,Kubernetes添加一个Pod副本就必须进行优化,通过最大限度的减少开销,以便于每次服务需求变化时成本和能源消耗降到最低。

另一方面需要注意的是,应对需求增长,在增加计算资源过程中所带来的服务延迟。当你等待额外的资源被分配时,期间就会导致服务延迟的增加。极端情况下,当一个请求到达一个还没有分配资源的服务时,冷启动的时间会导致该请求受到非常显著的影响。正如在​​Knative减少冷启动时间​​所讨论的那样,最坏的情况下服务启动时间是以秒为单位,而请求的响应时间通常则只有几十毫秒。当你创建由多个独立扩展组成的Serverless解决方案时,冷启动带来的影响是非常显著的,必须考虑到这一点。进一步改善这个问题就需要对云技术进行更多优化。

最后需要对KUbernetes和Knative进行优化,以充分发掘其解决能源和资金节约的潜力。Pod分配和集群控制应发展到支持动态调整(碎片整理)到其他工作节点的子集,这样空闲的节点就可以暂停,当然当集群资源总体需求增加时还可以恢复。

服务设计

当你创建Serverless应用或解决方案时,主要挑战之一就是要以事件驱动的思维模式来设计应用和服务,也就是要去了解应用和整体方案各部分运行的事件。这些事件来自你对应用领域的业务理解,必须被明确的提取出来。例如在一个业务流程的应用中,如:假期预定系统,就有明确的事件来驱动整个应用的使用。当客户计划一个假期时,他们必须依次选择和预定一系列的选项,如地点、航班、酒店、租车、餐饮以及其他活动。整个的过程可以被分解为服务以及它们之间流转的事件,企业将其应用设计成微服务,这种分解和设计也是众所周知的。

Serverless的事件驱动架构只是简单的对不同的服务增加了事件(内部或外部)触发,如果它们没有处理任何请求时,可以缩减到零。为了充分发挥这种架构的优势,必须将驱动服务的事件外部化,这样就可以用这些事件来触发Serverless组件网中的工作流。由于服务都是可以动态扩展的,就出现了之前提到的一个问题就是需要考虑冷启动的潜在影响,同时还需要有一个显示良好且响应快速的用户界面。

事件驱动架构也有自己必须要解决的一系列挑战,大部分可以通过选择正确的事件代理、触发器和事件模型来解决。而你应用程序的部分也需要注意一些陷阱,特别是事件风暴或一段时间后可能发生事件减少或不起作用的问题。以上所有这些就是我们所说的Serverless设计。

功能和工作流

AWS在2014年推出其Lambda服务时,介绍的第一个模型就是一个纯粹的函数式编程模型。服务是以定义在不同语言和库中的函数的形式执行。后来Knative提出了一个更通用的模型:以容器为中心,像Lambda函数一样,执行是基于事件的触发,并随着服务的需求(请求)的变化增减资源规模。随后,Knative适时推出了自己的函数式编程模型:Knative函数。

虽然不同的Serverless技术的共存对创新有很大帮助,但毕竟它们是不兼容的,因为不存在一个标准,而兼容性的挑战在网络边界得到了解决。首先,容器镜像的格式和执行正在由Kubernetes社区定义。最重要的是很多Serverless平台的事件模型是基于云事件标准,这是个非常重要的标准。它允许工作负载跨云合作,协作和执行。Kubernetes提供了通用的执行平台,以及我们需要的该平台上Serverless的通用定义。

最后一个挑战是Serverless服务之间协调流转的通用描述。创建一个简单的Serverless解决方案不仅需要触发器、事件源和不同服务的事件汇聚,还需要不同服务之间的协调。在各种流程语言中存在部分解决方案,那就是管道语言,但它不是为任意的带有同步点的复杂图设计的,更需要一种完整的工作流语言。这种语言可能是Tekton演变出来的,或者至少是其一个超集。

安全问题

伴随每一项新技术的出现,新的网络安全挑战往往也随之而来。而Serverless技术的出现改变了这种格局,因为更多的控制权从用户端转移到云端自动化,特别是对在何处使用多少计算资源来满足需求的控制。由此伴随网络边界逐渐消失,许多相关的安全控制也随之消失。此外,伴随Serverless带来的低成本和简化操作,许多的工作负载将被划分为更细的自助服务,而工作负载的片段越来越多,攻击者也会看到更大的攻击面。

Knative社区应对新的网络安全挑战的措施

  • 对已部署的服务提升更新的效率和速度

Knative提供了协助服务修正的基本功能,支持在服务修正过程中进行流量切分,从而使服务在修正版本的迭代期间能平滑、无风险的过度。支持更高频率的更新,以降低不断变化的威胁和新发现的漏洞所带来的风险。

  • 避免服务配置的任意性

Knative自动化部署确保服务所需的所有Kubernetes资源都出自单一的服务资源。违规者或内部人员对任何资源的手动修改,无论有意还是无意都会被Knative自动化覆盖,避免配置任意修改。

  • 避免基础设施配置的任意性

Knative使用Kubernetes来协助管理Knative的底层组件,但并不支持对Serverless的基础设置进行手动更改。

  • 安全行为的监控和控制

Knative社区正在引入新的技术来监控已部署服务的行为以及发送到这些服务的事件的行为。安全卫士是一种为每个服务量身定制的、运行时的安全保障,用于防护脆弱的服务免受0-day或已知漏洞的威胁。该技术还为你提供机制以应对服务被利用的情况。

总结

随着云计算的不断发展,它已成为全球能耗的一个重要角色,据国际能源署的估计其已经占了2021年全球能源消耗的1-1.5%和二氧化碳排放量的1%!Kubernetes规范了工作负载的部署和管理方式。而Knative凭借Serverless和高效性向前更进一步,它有助于实现更环保的云计算,并为云服务商和云用户节省大量成本,这种Serverless模式适用于所有的工作负载。更高的效率不仅仅是对单个工作负载来说的,还包括底层云资源和每个工作负载的执行所消耗的能源。

除了效率之外,Serverless还为云用户带来别的额外好处,包括简单化、自动化、版本修正管理和网络安全的改善。然而这些也同样存在挑战,Kubernetes需要更进一步优化基于实际负载自动扩展服务的动态特性。为了使Serverless更加通用,并涵盖更多的用例场景,还有许多工作需要做。同样为了使用Serverless模式,用户也必须改进他们的工作负载和部署的策略,当然这些都需要时间。

随着我们逐渐转向Serverless模式,适用的新的工作负载和用例场景也是我们需要考虑的。人工智能,数据和机器学习社区在认知这种按需分配计算资源模式的价值方面取得先机,Kubeflow和Tekon都是以Serverless模式设计和执行数据密集型AI管道以及工作负载的很好的例子。其他未来可用的工作负载和用例场景还包括量子Serverless,通过它可以在量子计算机上按需使用或执行量子算法。

Serverless模式代表了成本节约和分配资源的经济性,应用是为这而设计的,而平台对于运行Serverless解决方案也是高效和经济的,所以对各方都是有意义的。另外作为额外的奖励,对环境也是有好处的。

鸣谢

感谢Paul Schweigert和Lionel Villard的反馈和意见。此外还要感谢整个Knative社区,感谢他们为创建Kubernetes的Serverless平台所做的贡献和努力,在不到两年的时间里,社区已经发布了十几个版本,改进了各个方面并保持与Kubernetes的兼容,且允许扩展和实验各种创新。

译者介绍

胥磊,51CTO社区编辑,某头部电商技术副总监,关注Java后端开发,技术管理,架构优化,分布式开发等领域。

原文标题:​​How do we make the future serverless?,作者:Michael Maximilien​​, David Hadas, Angelo Danducci II, Simon Moser

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/277184.html<

(0)
运维的头像运维
上一篇2025-05-11 00:22
下一篇 2025-05-11 00:23

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注