共计 8105 个字符,预计需要花费 21 分钟才能阅读完成。
2022 年 9 月 24 日,阿里云用户组(AUG)第 12 期流动在厦门举办。流动现场,阿里云高级技术专家史明伟(花名:世如)向参会企业代表分享了《将来已来——从技术升级到降本提效》。本文依据演讲内容整顿而成。
从技术升级到降本提效
大家好,非常高兴能和大家一起分享明天的 Serverless 议题。
在后面的解说中,我看到到很多同学也是明天来到现场才有这个机会理解 Serverless。作为 Serverless 事件驱动生态、异步零碎和 Serverless 工作流的研发负责人,我心愿通过明天的分享,可能帮忙大家深刻理解 Serverless 背地的技术原理、Serverless 如何帮忙企业实现技术升级到降本提效的指标。
同时,我也会分享一些最佳实际领导,当企业还处于容器化到 Serverless 的过渡阶段,如何利用 Serverless 进行技术升级,实现架构革新,达到降本提效的目标。最初,还会分享一些利用于理论生产的 Serverless 客户案例,帮忙大家了解 Serverless 在理论生产过程中如何应用并解决业务的痛点问题。
企业技术升级外围驱动力及痛点
企业技术升级外围驱动力
首先,让咱们来理解下企业生产过程中技术升级的三个外围驱动力:
- 第一个就是业务快速增长和 IT 能力有余之间的矛盾带来的驱动力。当一个新兴业务到来的时候,因为业务的不可预期性,实际上咱们很难提前对业务进行预测和布局并做好 IT 层面的根底筹备,企业须要在很短的工夫内具备与之匹配的 IT 能力撑持业务快速增长。
- 第二个就是研发提效。能够通过技术手段晋升研发效率,也能够通过人员优化实现目标。
- 第三个就是企业 IT 老本优化的诉求。无论是处在一个倒退的绝对晚期阶段,还是处在一个业务稳定增长的阶段,为了活下来,亦或是为了实现收支平衡,企业都会非常重视老本,在降本诉求的驱动下,寻求技术上的降级实现这一指标。
企业应用开发之痛
《Serverless 的前世今生》这篇文章给大家做了一个很好的铺垫,帮忙大家了解为什么 Serverless 要呈现?它到底想解决的外围问题是什么?回到企业开发谋求的外围指标:更快地实现业务逻辑,缩小在环境搭建和零碎连贯上的开发工夫,将更多的工夫聚焦在业务开发上。
实现开发之后,你须要一个运行环境,将开发的业务代码部署起来提供服务,还包含运行过程中波及的相干保护工作,也就是咱们通常所说的运维。整个过程(即咱们常常所说的 DevOps)大家所面临的痛点,我想各位研发运维同学都有显著体感,总结起来也就是企业研发效率的问题。
除了研发效率,对于企业来说十分重要的另一件事就是研发老本的问题。当然,这里咱们只探讨企业研发中的 IT 老本问题,现实的模型当然是只为那些真正产生业务价值的计算去付费,但通常状况下,真正产生业务价值的计算是和业务申请生命周期统一的,真正业务申请到来之前,或者说在申请的间歇期,咱们依然须要在这些工夫为持有的计算资源付费,只管对于业务而言这些工夫计算资源都是处于闲置状态的,这也是 Serverless 心愿可能实现按申请付费实现客户降本的诉求。
为了帮忙大家更好了解依照申请付费,这里举一个 K8s 或者 ECS 的免费模式。当你购买了 K8s 之后就要付费,当你创立了 Pod 之后,集群给你调配了资源,你的申请流量并没有来的时候,依然须要为 Pod 资源付费;
而 Serverless 是说明天你提供了代码,并在平台上部署了它,你的代码包,你的容器镜像曾经部署在了 Serverless 平台上,实际上可能曾经在预热或者运行,或者在处于一个 Standby 状态,但在你的申请真正到来之前的这段时间,或者在两次申请调用的间隙期,都是不会产生任何计算费用的。
企业业务零碎研发之痛
对于企业,咱们通常所谓的利用,不仅仅是单纯意义上的一个程序,而是承载了整个企业业务能力的信息系统。
当咱们要构建一个业务零碎的时候,通常都会经验几个阶段的零碎架构选型,首先在于技术架构的选型。很多企业的零碎并不是从零开始建设的,是在一直的业务积淀中逐步迭代演进的,但当你面对新的业务零碎,同时还要针对那些不得不须要重构的业务零碎,抉择什么样的架构,选用什么样的开源框架,就须要既思考架构的可扩展性,也思考框架的前期维护性,社区成熟度,技术获取门槛,以及后续业务开发人才招聘等因素。
自建零碎,尤其互联网环境下,分布式系统带来的运维累赘和稳定性挑战会让研发团队不堪重负,技术整合更是难点重重,这给企业自建分布式业务零碎带来了微小挑战。
分布式系统研发之痛
典型分布式系统的次要形成,须要思考包含负载平衡,流量管制,资源调度,零碎观测性,零碎稳定性,高可用需要,以及服务治理相干的一系列问题。一直的研发投入和运维累赘成为自研的次要痛点。
Serverless 函数计算助力技术升级到降本提效
面对所有的这些诉求和挑战,在探讨 Serverless 技术如何在产品层面使得这些诉求和问题得以满足和解决之前,咱们无妨来回顾下 Serverless 的初心是什么?Serverless 作为云计算的一个前沿技术畛域,“极致弹性,无服务器运维,按需付费”是其一开始便要实现的指标。从这个指标来看,Serverless 一开始就是要从技术升级的角度解决咱们面临的老本和效率问题,也就是那句“路走对了,就不怕远”。
函数计算外围指标
“按需付费,无服务器运维,极致弹性”,这三个概念在客户视角和技术术语之间很好地找到了一个均衡的表白,不论是负责 Serverless 技术的研发人员还是负责企业技术升级的决策者,都可能直观了解 Serverless 要实现的价值。围绕这三个概念要实现的是两个外围指标:效率晋升指标,老本优化指标。
按需付费更多是从业务视角,大家很容易了解,就是依据申请按需执行付费。无服务器运维,从运维或者研发的角度去了解,就是不心愿花更多的工夫在服务器的购买;运维上,包含资源的弹性伸缩,衰弱度查看等一系列运行保护的事件。承载这两个货色,就要具备根底的产品能力,最简略的就是极致弹性,就是说我须要用的时候就用,不必的时候就回收掉,这样的话能力撑持按需付费的逻辑。
对于真正有业务价值申请计费,升高用户老本,通过弹性能力升高客户资源的保有老本,实际上就是说力度越细,保有它的工夫能够越短,越靠近实在计算的工夫,这样能力降本。效率指标首先开发方式上肯定要简略,如果很简单,研发人员很难承受它,也就并没有起到增效的作用。另外在开发简略根底上,疾速部署缩小研发人员参加公布扩容的工夫,这就是所谓的老本跟效率层面的指标。
函数计算编程模式让 [利用开发] 更简略
理解了 Serverless 的根本指标之后,咱们须要来探讨 Serverless 函数计算如何实现这两个指标。首先咱们必须从函数计算的编程模式来评估函数计算可能实现的指标,函数计算是事件驱动的全托管计算服务。
应用函数计算,用户无需洽购与治理服务器等基础设施,只需编写并上传代码。函数计算为你筹备好计算资源,弹性地、牢靠地运行工作,并提供日志查问、性能监控和报警等性能。
依照函数粒度进行独立的性能单元开发,疾速调试,疾速的部署上线,省去了大量资源购买,环境搭建的运维工作;同时函数计算是一个事件驱动的模型,事件驱动,意味着用户不须要关注服务产品数据传递的问题,省去了咱们在编写代码中波及的大量服务拜访链接的逻辑;“事件驱动”+“函数粒度开发”+“免服务器运维”等几个维度特色帮忙函数计算撑持更聚焦业务逻辑开发的底层逻辑,实现真正的技术升级,晋升研发效率的目标。
函数计算编程模式让 [利用运行老本] 更低
除了开发模式带来的研发效力晋升之外,咱们再来看函数计算如何实现帮忙客户降本的底层逻辑。按用户的申请,依据用户流量的模型付费是最现实的状态,但按用户申请付费存在技术上微小的挑战,要求函数计算实例的启动小于用户的 RT 要求,冷启动性能尤为重要,这时候极致弹性成为了 Serverless 按需付费,业务降本的底层技术撑持。函数计算通过“极致弹性”+“按需付费”的模型帮忙 Serverless 函数计算实现真正的底层降本逻辑。
函数计算产品开箱即用的原子化能力
无论是对于云的开发者,还是尝试业务降级的企业客户,Serverless 的三个概念“按需付费、无服务器运维、极致弹性”简直曾经深入人心。但对于 Serverless 能做什么、怎么做,却依然是围绕在大家身边最广泛的声音。
在 Serverless 研发的初期阶段,技术团队通常会更多聚焦于弹性,冷启动减速,心愿通过弹性能力凸显产品技术竞争力,确立产品在市场上的领先地位,并依赖这些能力践行 Serverless 极致弹性的技术指标,吸引开发者和企业客户应用 Serverless。这个阶段,更多的是依附技术影响力疏导大家摸索 Serverless。
随着咱们对 Serverless 了解的不断深入,同时弹性能力的晋升进入深水区,相对来说没有实质扭转的状况下,当客户须要在生产环境应用 Serverless 的时候,咱们将更多地思考涉及 Serverless 弹性以外的其余价值。这个时候,弹性覆盖范围将不再仅仅局限于计算资源,也包含网络,存储等相干资源,弹性将作为零碎的根底能力浸透在产品的各个方面,须要更多从系统性的角度思考 Serverless 能做什么,能给客户带来什么,如何让业务聚焦那些不得不须要定制化的局部。
在答复 Serverless 能做什么,怎么做之前,让咱们先理解下 Serverless 到底做了什么,能给咱们提供哪些开箱即用的能力。
函数计算——云产品的连接器
Serverless 函数计算(FC)作为一个计算平台,它并不是一个孤岛,只有和整个云计算生态的其它产品进行联动,独特形成一个分布式的云上开发环境,能力最大水平施展函数计算的价值,满足企业客户基于其构建业务零碎的需要。
联动的最大价值在于解决云产品背地服务的连贯问题,同样也是 Serverless 函数计算事件驱动架构的根底,事件驱动的价值在于帮忙用户用一种更直观的了解暗藏背地的调用逻辑,这些调用并不需要反映在用户的业务逻辑中。而连贯同样意味着零碎之间的依赖关系,这种依赖关系最终会通过耦合度来体现,耦合并不能示意性能依赖的强弱,更多体现在软件架构实现层面,是一种实现导致的后果,这也就是软件架构畛域强调的“高内聚,低耦合”实现要求。
事件驱动用一种事件化驱动的形式满足了这种实现要求。基于这样的架构,软件外部实现不再像以前典型的单体利用,或者传统微服务实现,须要强依赖将波及的多个依赖服务的客户端集成到本人的业务零碎中。
在基于云的开发环境,云产品承载的服务绝对内聚,在云原生的架构中各自扮演着分布式系统重要角色,云产品之间的事件告诉机制可能帮忙客户更好的基于多个云产品构建本人的云原生业务零碎,否则在云产品之间 Watch 事件是非常复杂,开发代价十分低廉的一件事。除了产品连贯带来的开发效率之外,当用户订阅某个事件,并提供解决逻辑的时候,客户曾经潜在的过滤掉了不须要解决的事件申请,事件驱动意味着每一次的事件申请实际上都是一个无效的驱动。
目前函数计算通过和多个云产品集成,构建了一个残缺的事件生态,包含 API 网关,消息中间件 MQ,对象存储 OSS,表格存储 Tablestore,日志服务 SLS,CDN,大数据 Datahub,云呼叫等,同时还借助 EventBridge 接入了阿里云全系云产品的运维事件(日志审计,云监控,产品运维),帮忙客户利用函数计算及泛滥云产品独特形成一个基于事件驱动架构的云原生业务零碎。
函数计算——高效音讯生态事件驱动模型
音讯产品凭借其异步解耦、削峰填谷的特点,成为了互联网分布式架构的必要组成部分,Serverless 函数计算有着与其齐全吻合的利用场景,针对音讯产品生态集成,函数计算在架构层面做了专门的建设,基于 EventBridge 产品提供的 EventStreaming 通道能力建设了通用的音讯生产服务 Poller Service,基于该架构对用户提供了 RocketMQ,Kafka,RabbitMQ,MNS 等多个音讯类型触发能力。
将生产的逻辑服务化,从业务逻辑中剥离由平台提供,生产逻辑和解决逻辑的拆散,将传统架构的音讯拉模型转化成 Serverless 化的事件驱动推模型,可能撑持由函数计算承载音讯解决的计算逻辑,实现音讯解决的 Serverless 化。基于这样的架构,可能帮忙客户解决音讯客户端的集成连贯问题,简化音讯解决逻辑的实现,同时对于波峰波谷的业务模型可能实现资源的动静扩容,升高用户老本。
函数计算——开箱即用异步工作解决能力
下图展现了一个典型的异步工作解决零碎的根本模型,通过 API 的形式进行工作提交,任务调度,工作执行,最初实现执行后果的投递。
传统工作解决框架中,通常会基于服务网关进行任务调度、负载平衡和流控策略等能力的建设,这也是分布式系统构建中最根本、但又最外围、最简单、最须要人力投入重点建设的局部;后端实现通常都是基于过程粒度的内存队列和运行时层面的线程池模型实现具体的工作派发和执行,线程池通常与抉择的编程语言 Runtime 有亲密的相关性,零碎架构对于编程开发语言有很强的依赖性。
Serverless 异步工作解决零碎流程为:用户通过 API 的形式进行工作散发,申请达到 Serverless 服务网关之后,被存储到异步申请队列中,Async Service 将开始接管这些申请,而后申请调度获取后端资源,将这些申请调配给具体的后端资源进行执行。
该架构图中 Async Service 负责了传统架构中申请 Dispatcher、负载平衡,流控策略和资源调度的实现,这时候函数集群相当于形象的分布式线程池模型,在函数计算模型下,实例之间互相隔离,且资源具备程度伸缩的能力,凭借函数计算整体资源池能力,能够防止传统利用架构下单机资源限度导致的线程池容量问题及资源调度瓶颈问题,同时工作的执行环境并不会受整体业务零碎运行时的限度,这也是 Serverless 异步工作零碎相比传统工作零碎的劣势所在。
从 Serverless 工作解决零碎的架构来看,其解决逻辑非常简单,大部分分布式系统依赖的能力全副由 Async Service 零碎角色透明化的进行了实现,对于用户而言更多的是通过函数化编程的形式提供工作解决的实现逻辑,整体架构防止了对基于语言运行时线程池的依赖,整个函数计算集群提供了一个“有限”容量的“线程池”,通过服务化的形式,用户只需提交申请,其余并发解决、流控以及积压解决全副由 Serverless 平台负责实现。当然在理论的执行过程中,须要联合业务特色对异步工作解决的并发度,谬误重试策略及后果投递进行一些配置。
函数计算——开箱即用观测性能力
函数提供了泛滥开箱即用的能力之后,摆在客户背后最迫切的需要便是对这些开箱即用能力的观测:面对客户开发调试,业务逻辑优化,零碎稳定性,计量计费等需要,如何把一些用户关怀的指标和运行状态透出来?
咱们须要给客户提供一个开箱即用的观测性能力反对,尤其在客户应用 Serverless 的初期过渡阶段,可能将零碎黑盒局部的信息展现给客户是十分必要的,晋升产品计费的透明度。基于目前开箱即用的观测性能力,可能高深莫测的看到整个工作解决的过程和耗费的计算资源。
企业如何利用 FC 疾速拓展业务零碎?
接下来我会重点讲述,在理论的业务零碎中,企业如何利用函数计算提供的这些原子化能力,疾速扩大本人的业务零碎,让 Serverless 真正成为企业实现业务零碎延展和架构降级的牢靠依赖。
企业零碎疾速集成函数计算原子化能力
咱们开始的时候有讲过,心愿推动业务零碎 All on Serverless,可能让企业的整个业务零碎都运行在 Serverless 之上,但捕风捉影的说,现阶段这个指标还是十分具备挑战的,咱们还处于一个绝对晚期的过渡阶段,咱们心愿可能提供一些最佳实际的倡议,帮忙企业在现有零碎之上,可能利用 Serverless 零碎提供的原子化能力实现降本增效的指标,将 Serverless 技术引入到本人的业务零碎中,并通过一直的应用 Serverless,领会 Serverless 可能带给业务价值。
怎么样把这样一些能力跟现有的零碎做疾速的集成?函数计算提供了 SDK,HTTP URL 以及多种事件驱动的接入形式,并可能利用函数计算反对 VPC 能力,买通函数计算和客户现有零碎的网络空间。同时,在反对业务方面,函数提供了多种维度的 Runtime 能力,包含官网规范的 Runtime,反对用户自定义的 Customer Runtime,以及和容器生态交融的 Customer Container 镜像部署形式,最大水平升高客户业务零碎运行于 Serverless 平台之上的门槛。相比容器生态,函数计算提供了十分显著的镜像预热减速能力,帮忙疾速启动客户的业务零碎对外提供服务。
剥离 Task/Job 类业务解决逻辑剥离
Task/Job 类业务解决逻辑:在一些微服务架构的业务零碎中,利用 Serverless 异步 / 异步工作的能力实现这些零碎工作解决需要,函数计算提供了 HTTP、SDK、定时、事件触发等多种便于用户提交申请,执行相干工作的集成形式。
剥离 MQ 业务音讯解决逻辑剥离
MQ 业务音讯解决逻辑:企业的业务零碎中通常都会存在很多由消息中间件链接的多个业务子系统,通过函数计算提供的音讯类云产品事件触发能力,将原来通过监听音讯队列,被动拉取音讯进行生产的逻辑利用 Serverless 触发器代替,音讯解决的逻辑由函数计算承当,利用事件驱动实现音讯生产和音讯解决的解耦,对立依附事件驱动提供的牢靠生产能力,实现音讯解决逻辑的 Serverless 化。
剥离文件类解决业务逻辑
剥离文件类解决业务逻辑:对于一些文件、视频解决类的业务,数据在文件系统和 DB 之间流转,利用函数计算提供的 OSS 触发器、DB 类触发器(OTS),通过事件驱动的形式疾速实现相干的数据处理逻辑。
剥离数据处理加工类的业务逻辑
剥离数据处理加工类的业务逻辑:心愿可能把一些数据处理类的业务逻辑,利用音讯产品提供的 Serverless ETL 能力进行解决,并能够依据业务须要,利用函数计算疾速实现源端和指标端的扩大。
客户场景案例剖析
接下来我会分享一些理论的用户 Serverless 场景案例。
算法工作
上面是算法畛域的典型业务场景架构:针对一些算法工作、高性能计算以及 AI 相干的一些推理工作、广告图片的辨认、智能的运维的一些能力。通常这些局部属于业务零碎绝对独立的局部,利用函数计算,疾速部署了一个用于推理的算法模型,通过申请的形式将推理须要的图片,或者一组参数提到给函数。如果两头想引入一层解耦逻辑的话,能够应用 MQ,再利用 MQ 的事件触发工作执行。最初的后果会提交到 OSS,能够利用事件驱动进一步对产生的文件进行解决。
生产电子
生产电子畛域客户 Serverless 解决方案,IOT 相干的视频传输,从 IOT 上采集数据进一步进行剖析,最初反对客户端生产这些视频数据。
互娱行业
上面是微博针对图片拜访和解决加工的 Serverless 场景案例,利用函数计算,实现冷数据的拜访和图片的个性化解决。
教育行业
上面是教育行业的 Serverless 解决方案,教育行业有一个很显著的景象,存在广泛的编码转播、直播录制、直播内容审核的需要,须要在直播的过程中,通过截帧的形式去审核直播内容的合法性。
娱乐行业
上面是娱乐行业,针对影片内容动静截帧审核,以及切片转码的 Serverless 解决方案。下图展现的是南瓜电影的一个技术计划,应用函数计算去实现这样一个能力。
游戏行业
上面是函数计算在游戏行业的典型利用案例,笼罩游戏行业数据加工、战斗结算、游戏发包等场景。游戏业界几家头部客户目前都曾经在应用这样一些 Serverless 计划组合,实现本人的业务零碎。这些场景都是很特点,以战斗结算为例,并不是在你正本执行工作的过程中须要一直实时的进行计算,通常只有在一个正本可能快要完结的时候,或者在正本执行工作过程中须要进行战斗的时候才须要计算,是典型的 Serverless 利用场景。
原文链接
本文为阿里云原创内容,未经容许不得转载。