共计 6120 个字符,预计需要花费 16 分钟才能阅读完成。
背景
自 2013 年提出以来,Serverless(无服务器)作为屏蔽服务器、按调用计费、事件驱动、弹性主动伸缩的计算服务,深受开发者青睐,被称为云原生将来倒退的方向。
最新的调查报告显示:在外围业务中应用 Serverless 的用户达到 18.11%;曾经开始和打算应用 Serverless 技术的用户超过了 70%。依据 Datadog 数据,有超过 50% 的应用云服务的企业或组织应用了 Serverless 技术。
然而,当开发者从守业阶段过渡到大型企业阶段,原来的 Serverless 模式逐步给企业的治理、运维以及财务等带来一系列的挑战,这也是当期 Serverless 很难在大型企业全面利用的根本原因,为了破解这样的难题,腾讯云工程师从深度剖析症结,推出了适应企业倒退需要的技术,打造真正服务于企业的 serverless 平台。
Serverless 的从 1 到 100:企业又爱又恨
Serverless 为一个新业务提供了现实的从 0 到 1 孵化体验——开发者只须要关注业务逻辑开发,业务所需的底层资源布局运维由云平台解决,轻松应答上线后的流量增长,同时,业务的老本收入由业务的实在申请调用量决定。能够说 Serverless 给开发者真正带来了上线足够快,服务足够稳,破费足够少的完满“守业”体验。
而后,当这个业务在 Serverless 的帮忙下胜利逾越 0 到 1,开发者成长为企业,来到从 1 到 100 的精益经营阶段,Serverless 技术的利用开始呈现问题——
- 按调用计费模式从“蜜糖”变成“毒药”;
- 全托管的计算服务无奈满足企业更进一步的管控、观测、定制需要;
- 自成一体的公布流程、资源 quota、权限体系,企业外部的研发中台团队不好对立治理,出了问题还得背锅;
- 齐全的私有云状态制约了企业在跨云、混合云等非凡环境上的可选择性。
这些问题让企业对 Serverless 又爱又恨。以金融行业为例,不少大行等均尝试在外部自建 faas 服务。K8s 社区近年来也始终涌现各类 FaaS 框架,例如 Keda、Knative、OpenFaaS 等。当然企业自建目前问题也不少,投入大、保护难、成果不佳,也导致自建的 FaaS 在外部往往承接业务上量不多。
面向开发者设计的 Serverless,须要为企业从新思考。只有服务好企业,能力真正意义上将 Serverless 倒退为云原生开发模型,实现 Serverless 本人的 1 到 100。
企业真正须要的是“云原生 Serverless“
2017 年,腾讯云云函数 SCF(Serverless Cloud Function)公布后不久迎来了第一批种子用户,每个月 100 万次调用量收费额度,帮忙用户零老本倒退业务,其中不少用户倒退良好,最终拿到更大的投资,业务越做越大。
其中,有一家做跨境电商业务的 A 公司就是典型代表,2018 年成立,2021 年拿到上亿融资,期间企业用云体验也产生了显著变动。2018 年 ~ 2020 年,作为守业公司须要疾速响应市场需求,A 公司的技术栈齐全基于函数 FaaS 架构搭建——
- 用事件函数 + 音讯队列触发器实现商品信息的采集剖析入库;
- 用事件函数 + 定时触发器实现离线的数据批量解决;
- 用 web 函数 + API 网关实现 api 服务;
- ……
2020 年前后,始终不温不火的国内跨境电商业务,忽然暴发,A 公司属于该赛道的 Top 选手,业务也随之迅速起量,从年初每月几百上千块用云老本,到了年底增长到每个月过百万,研发团队也从几个人,疾速扩张到了几百人。A 公司的全量业务始终以腾讯云云函数 SCF 作为业务的计算平台,终于在 2021 年拿到了新一轮融资。
然而接下来,A 公司却开始思考把局部业务从云函数往容器迁徙了,这让咱们倍受困扰,通过与客户研发负责人深度沟通,以下几个十分事实而又不得不抵赖的外围问题摆在了咱们背后:
业务复杂度与治理需要降级,Serverless 对企业的治理团队造成冲击
业务发展壮大,不可避免要引入行业支流人才,对业务线进行拆分,对研发工序进行分层。这个过程交融了治理流程降级和技术栈转移。
拆分业务线后,各业务线开发本人的模块,放弃业务线的疾速迭代效率,但齐全的业务线自治在企业外部天然会导致资源配置冗余和节约,于是中台开始搭建,对立的服务发现、治理机制开始上线。这些都和 Serverless 从开发到公布一竿子插到底的全栈自助模式有抵触。
疾速扩张的团队,引入的行业人才都是带着多年工作教训进来的,他们或相熟某些开发框架,或相熟某些架构模式,为了疾速上线业务,这些框架和架构模式也会被开绿灯,在外部成长开花。Serverless 须要一些革新或对接在这个过程就会被厌弃,更灵便自在的容器平台受到青眼。
基础设施的掌控度降级,Serverless 对企业的运维团队造成冲击
拔地而起的中台团队承接了运维、研效治理的工作职责,他们有多年的机器运维教训、内核指标观测教训。Serverless 齐全托管免运维的黑盒模式在这时也逐步带来一些问题,业务团队想用拦不住,出了问题(比如说代码写的不好 OOM)还得背锅。
业务线的裁减也引入了更多的零碎,如大数据的 Spark、Flink,中间件的 Kafka、Redis,数据库等等,随着云原生的大倒退,基于 K8s 底座的对立资源管理和运维工具链也更加成熟。在这个底座上,每个业务线都能够用资源 quota 进行治理,Serverless 独立的并发配额弹性资源让平台运维对资源不再可控。
同时,随着业务的扩张,企业也在筹备着进军不同国家地区的打算。不同国家地区有更多的平安合规要求,这也要求零碎服务能响应这些要求上云或下云。Serverless 只能跑在私有云就成为妨碍打算的绊脚石。
估算和洽购需要降级,Serverless 对企业的财务团队造成冲击
Serverless 的按量计费模式代替了传统的包年包月,让财务布局异样艰难。
按量计费是典型的线性计费模型,依照业务的理论用量,老本线性增长,这对于孵化期的业务是缩小晚期投入降低成本的好机制,但对于稳定增长的业务来说,则是越来越重的老本累赘,业务规模越大,老本越高,齐全没有收敛的意思,老本不再可控。
让 Serverless 函数跑在云原生 K8s 上
企业拥抱云原生,企业内的开发者拥抱 Serverless,交融带来完满均衡
Serverless 对一个上规模的企业,引入的是治理、财务、基础设施掌控等方面的问题。而咱们回过头来看,Serverless 对企业内的开发者仍然是最优解。企业里的业务开发者也是开发者,他们专一在需要转化为代码这一过程中,不喜爱和机器、节点打交道。一个相似 Serverless 的自助开发平台能够最大水平上帮忙业务开发实现最高效率。
另一方面,随着云原生的大倒退,企业的用云体验逐步对立,K8s 成为事实上的规范,每一个上规模的企业都在基于 K8s 底座实现着本人的治理、财务预算、基础设施掌控等需要。这是云原生概念之于企业的最外围价值。
当初,咱们思考的是,在当下如何找到 Serverless 和企业的云原生诉求的结合点,让企业在基础设施掌控度和业务高效开发之间找到一个均衡。因而腾讯云提出“云原生 Serverless”理念,结构了全新的 Serverless 产品状态腾讯云 Serverless 云函数 SCF on K8s。
SCF on K8s 实现 serverless 能力同时跑私有云和公有云
腾讯云云函数 SCF on K8s 将 SCF 的开发工具栈和私有云资源池进行解耦,让 SCF 的整套能力可运行在企业本人的 K8s 集群中,可残缺复用企业已有资源。同时,SCF 残缺兼容 K8s API 和 RBAC 权限体系,不便中台团队疾速集成 SCF 能力,无需反复对接。有了 SCF 能力,中台团队也无需从头构建开发工具栈。
如下描述了 SCF on K8s 在企业研效流程中的联合:
腾讯云云函数 SCF on K8s 不仅让企业内的业务开发者领有私有云 SCF 一样的开发体验,也让中台运维团队能够从研发流程到资源管控到可观测上治理 SCF,同时,跑在企业对立的 K8s 资源池中,让财务预算工作也更好开展。
SCF on K8s 可无缝集成到企业已有技术中台,满足企业多云跨云需要
SCF on K8s 能够满足企业多样的用云需要:从 0 到 1 阶段的私有云弹性资源模式,让企业疾速试错;从 1 到 100 阶段的混合资源池模式,让企业抉择最经济的计划,无需被私有云绑定,在本人的基础设施上应用 Serverless。
SCF on K8s 齐全兼容 K8s API 和权限体系,并提供了 CRD,中台团队可像治理 Workload 一样治理 SCF。
- 对立的研效流程治理:
业务开发者遵循研发审批流开发、测试、公布,全程都在中台团队管控之下;
- 可控的资源 quota:
业务开发者依据须要申请资源 quota,中台团队通过 K8s 集群资源管控来进行资源供应;
- 可观测的 SCF:
SCF 跑在 K8s 集群中,兼容 K8s 自身的 PVC、服务发现、监控日志机制。
SCF on K8s 和私有云 SCF 的能力放弃完全一致,业务开发者只需抉择本人相熟的编程语言、IDE 实现代码编写,通过 SCF 命令行工具或中台团队提供的公布流程实现代码的公布,最初配置触发器和 算力(CPU 或 GPU)即可。真正专一于业务需要实现。
在大型企业的研发模式中,微服务是占据支流的存在。不同业务开发各自的服务模块,同时又能由服务发现、服务治理等地方服务实现对立治理。十分合乎企业的对立纳管,分而治之的理念。而微服务也存在过于简单的问题,疾速迭代的业务应用微服务体系,研发效率会偏低,一次公布须要半天对于麻利研效是个微小的挑战。
SCF on K8s 能够和微服务体系实现补位,对于疾速迭代的我的项目,可先采纳 SCF 实现高效开发,疾速公布;待我的项目成熟后,再转为微服务体系。微服务在在线场景上生态丰盛,体现卓越,而对于近离线场景的数据处理、视频转码等事件触发型服务,则可应用 SCF 实现,不论是开发效率还是资源利用率都能更高。
业界独创在离线混合资源池模式,无效晋升 K8s 集群资源利用率
腾讯云云函数 SCF on K8s 反对配置资源配比,将 K8s 集群资源和私有云弹性资源搭配应用。在该模式下,函数申请优先调度到 K8s 集群,函数调度层感知到 K8s 集群资源有余时调度回函数私有云资源池。如此以来,企业可依据业务理论申请量,配置一个打底的 K8s 集群满足日常资源所需。同时,利用函数私有云资源池,响应高峰期的溢出资源所需。在实现业务高可用的同时,实现最经济的云资源洽购。
K8s 集群基于 Virtual Kubelet 抽取闲置资源,成为离线算力,将一部分低优的任务调度过去,这些工作会在有资源供应时执行。该计划不仅在业务调度层较为简单,也存在挑业务的状况,须要业务能承受较长的等待时间,同时,低优工作如果不及时开释资源,又会反过来影响在线业务的资源供应。
而将 K8s 离线算力作为虚构的 K8s 集群绑定到函数服务,再开启混合资源池,这些问题将迎刃而解——
- 不挑业务:
函数的被动调度机制在 K8s 离线资源有供应时立刻调度工作执行,没有时及时调度回私有云资源池,保障工作始终能够执行;
- 不影响在线业务:
函数的超时配置限度工作的最长执行工夫,执行完或到了超时工夫会立刻开释资源,最大水平保障在线业务的资源供应;
- 业务调度层简略易用:
只须要将工作公布为事件函数,配置音讯队列、定时工作等触发器,并关上混合资源池配置即可。
腾讯外部的实际
TKE 容器服务在腾讯团体外部作为对立的利用研发治理平台,在规范的 K8s 能力之上,提供了跨集群、跨 zone 的容器资源调度治理能力和利用维度的运维治理能力,也是技术中台的一种实现,在过来的三年里很好的撑持了腾讯团体业务全面云原生上云。
腾讯云云函数 SCF 作为 Serverless 的落地实现,在团体外部同样深受业务开发同学的青睐,例如大家相熟的腾讯文档、腾讯会议、腾讯地图、企业微信等都有大量的服务是基于函数开发上线。
在具体的研发模式上,外围业务逻辑和重点的在线服务次要是用微服务架构实现,服务治理、流量治理、故障容错和配置管理用北极星做了对立治理。函数次要用在以下几个场景:
- 前端的 SSR 和 BFF 场景,例如腾讯文档的表格、演示文档的 SSR 用函数实现;
- 近线数据处理场景,例如腾讯地图的导航数据计算、地图瓦片数据的计算等用函数实现;
- 离线工作场景,例如运维团队的定时巡检工作和定时拨测工作、计费团队的定时账单汇算工作等用函数实现。
这些场景中,函数以其灵便高效且免运维的开发体验很好的撑持了业务倒退。但独立的按量计费模型也给业务团队的财务预算带来了挑战:不好预估我的项目的老本收入,业务增长带来使用量上涨后,按量计费的总费用相比采买一批机器不够划算等,在团体降本增效的大环境下,成为业务团队的一块心病。
22 年 11 月,腾讯云云函数 SCF on K8s 通过“工作核心”的产品状态集成到 TKE,拉通账户权限体系,兼容对立的公布审批流程和估算 quota 申领机制。
上线后,目前曾经有大量的 K8s job、cronjob 迁徙到 云函数 SCF 工作平台,不仅开发简略,且在工作的响应提早等技术指标上存在量级上的晋升。
不少之前应用私有云函数实现的业务也迁徙过去,兼容了 TKE 的 quota 申领机制,业务团队能够在传统的函数按量计费模式和批量采买容器作为函数的运行资源池之间抉择。对于量级较大的业务来说,后者是管制老本的最佳措施,降本增效环境下的心病解除。
Serverless 终将跑在每一个基础设施之上
无可否认,Serverless 依然是企业用云的终极现实状态,只需关注外围业务逻辑,其它的所有交给算力供给方搞定,是精益经营的经济体决胜于市场的根本逻辑。然而,这是一个漫长的进化过程,参加其中的每一方都要倒退,例如,Serverless 的函数粒度的开发模式,须要更优良的人才梯队可能将业务需要拆解的更细,而更细更多的模块则又须要更弱小的服务治理机制…… 类比到传统制造业,就是从工厂里的生产工序、流水线到上下游供应链都要整体降级,最终能力达成工业革命。这须要一些工夫,兴许是 5 年,兴许是 10 年或更久。
在咱们低头俯视星空的同时,也要虚浮走好脚下的每一步——如何让企业用足够小的代价换取最大的收益,是每个云厂商都要积极思考并摸索解决的课题。从私有云 Serverless 到云原生 Serverless,兴许局部厂商会认为是一种退化,而兴许恰恰相反,只有扭转自身能解决少数企业的痛点,为企业带来真正的价值,它就是提高的。
能够预计,随着 Serverless 范式的逐步欠缺,Serverless 终将跑在每一个基础设施之上!
SCF on K8s 领先体验指南
SCF on K8s 资源托管模式目前曾经全量凋谢,登录 – 腾讯云,连忙试起来吧!
创立函数命名空间并绑定 TKE 集群
1. 登录 – 腾讯云,单击左侧导航栏的函数服务。
2. 在函数服务页面上方抉择冀望创立函数的地区,单击命名空间右侧的⚙️,进入命名空间治理。如下图所示:
3. 在“命名空间”治理弹窗中,单击新增命名空间,进入命名空间创立弹窗。如下图所示:
4. 在资源托管模式选项中,抉择 K8s,并抉择对应的 TKE 集群实现绑定即可实现设置。设置实现后在命名空间下创立函数即可开始应用。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!