从函数计算到 Serverless 架构

前言

随着 Serverless 架构的不断发展,各云厂商和开源社区都已经在布局 Serverless 领域,一方面表现在云厂商推出传统服务/业务的 Serverless 化版本,或者 Serverless 计算平台,另一方面表现在开源社区中 Serverless 相关项目逐渐丰富起来,无论是平台类还是工具类的开源项目,再或者是框架类的开源项目,都如雨后春笋般快速成长。

任何技术,在这样繁荣发展背后,都会快速升级和迭代,Serverless 架构也不例外,从阿里云的 FaaS 产品发展过程中,不难看出 Serverless 架构在提效和降本的道路上不断的场景化,特色化;在产品形态上也不断的趋于完整化,统一化,虽然距离”大道至简”还有一定的距离,但是也只是时间的问题了。

从思想到产品升级

Serverless 架构在不断发展,无论是产品形态还是技术架构都可以用日新月异来描述。

Serverless 精神的更迭

最初,Serverless 架构指的是 FaaS 与 BaaS 的结合,认为开发者可以不用花费更多的精力在服务器等底层资源上,而是可以将精力放在更具价值的业务逻辑之上。这也是文章《 Serverless Architectures》中所强调的观点。

但随着时间发展,大家发现,对于 Serverless 架构这样的描述过于单薄,没有凸显出 Serverless 架构为业务带来的技术红利,也没能表现出 Serverless 所交付的心智。所以 UC 伯克利在《 Cloud Programming Simplified: A Berkeley View on Serverless Computing》中对 Serverless 架构进一步的定义:对于被认为是Serverless 架构的服务/产品还需要具备按量付费和弹性伸缩的特点,并认为, long-run 的运行模式并不符合 Serverless 精神。

云计算相关技术的发展,往往有一个特点:云厂商的驱动性非常强,因为云厂商往往会最先感知到普遍性的用户需求,并且有足够的数据支撑其做出合理的判断与创新。所以 Serverless 架构的创新很多时候也都是由厂商驱动的;在事件驱动与函数计算的发展下,厂商逐渐发现函数计算的模式”短时运行”没有办法满足更多用户的诉求,此时一种 long-run 模式的 Serverless 计算服务就逐渐的被孵化出来了,至此,Serverless 架构也从最初的单薄,逐渐完善,通过”自我革新”,完成了新一轮业务能力的自我丰富与产品功能的自我完善。

随着 long-run 模式逐渐被开发者们认可,传统 Serverless 架构的定义有点”格格不入”:既不能在模式上覆盖最新的 Serverless 产品纬度,也不能在形态上描述清 Serverless 的特性。此时 Serverless 架构定的义,就自然而然的得以升级,例如:

  • Serverless 应该是 FaaS + BaaS + CaaS,
  • Serverless 应该是 FaaS + BaaS + Others,
  • Serverless 就是 Server+Less,即服务端免运维/低运维的形式就是真正意义上的 Serverless 架构。

至此,Serverless 架构实现了此阶段下的产品形态升级与 Serverless 精神的更迭。

从函数到更 Serverless

通过阿里云官网,不难发现其 Serverless 产品形态还是相对完整的:

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:57db755c-9f0d-4bc0-8977-3c5813e5a959

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:a0d27cff-2551-4c51-b74a-5e799327d2a5

* 基础产品/服务:存储产品、数据库等产品的 Serverless 形态;

Serverless 架构的热度不断增加,各产品也需要借着热度进一步突破和创新,所以 Serverless 这个词”被乱用”再所难免;每个团队都有自己的特色,基于 Serverless 架构完善和更迭自身能力,也是产品发展的必经之路,就像数据库发展到云数据库,再发展到云原生数据库,再发展到 Serverless 数据库一样;

所以,Serverless 架构需要一个”粘合剂”,将各种 Serverless 产品进行进一步的链接,使其不是”混杂在诸多产品中的某些产品”,而是”可以联合起来解决某个问题的具体功能”,换句话来说将不同的产品联合到一起,以应用的维度为开发者提供场景化支持,这也是 Serverless 架构从资源朝着应用,再朝着业务发展的必经之路。

阿里云推出”应用的概念”,试图以计算平台和核心,通过BaaS 产品的联动,让本来”杂乱的花园”,逐渐的变得规矩,有条理起来;让本来需要开发者”痛苦的选择”,逐渐的变成场景化推荐,流程化引导。

产品与功能体验

本次活动是阿里云 Serverless 函数计算评测,所以本文仅对函数计算与其相关产品进行体验,包括函数计算本身(包括三个主要模块:基础模块服务与函数和上层封装模块应用、任务),Serverless 工作流以及开源项目 Serverless Devs。

函数计算

服务与函数

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:fc497b5f-7dba-4c27-baf4-047ff252ee6a

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:179a1983-3159-41c3-89e0-e4469e1088d9

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:736ce7d7-de31-4f4e-9b3f-bb84a8a0a8c4

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:ad3df136-cb75-489c-a015-5c7f6f9e092a

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:40b61978-f8fc-466b-b0de-73be82fa29c3

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:5700d243-512f-487e-ae82-8f6b4d56b05b

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:abfb5e64-25a8-4de4-ba74-22fd2584bce0

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:1db7aed9-e482-4fa5-bf9a-34eda4a8220e

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:0db7907a-8e37-4d2f-bf14-91895bdab08a

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:31b57d4f-9802-45b3-a3b1-8d06621bc2d9

*
– 业务划分更清晰:可以让开发者更清晰的将同类型业务/功能划分在一个服务下,不仅让页面更清晰,也会让管理(包括资源分配,权限划分,账单等)更便利;
– 让环境划分更简单:通过服务将业务进行归类之后,有助于基于服务进行环境的划分。通过服务进行不同环境的划分,相比针对函数进行环境的划分会更便利和更容易被接受;

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:e6b068a5-336a-4828-b874-69a6bc5d9ef6

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:36f391b5-1046-4ccb-9c2d-ad040f4c0733

从函数计算到 Serverless 架构

即,开发者只需要完成代码的开发和部署,即可实现业务的弹性伸缩和按量付费能力的夹持,这也符合 CNCF 在白皮书中对 Serverless 架构流程定义的规范。通过阿里云函数计算控制台可以快速进行这个流程的体验,点击”服务及函数”选项,就可以看到服务列表:

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:e44e9a45-8de7-4a8e-bf70-5c625829ff1d

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:edda9f1b-88c1-4203-b48e-b3900ab11083

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:1ff22c66-89af-4ad8-a148-9632d7398342

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:f3437833-5f99-4dcc-96ff-2c32afb2fbeb

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c1d8c191-00bd-4310-9e2a-a6ac3d01291e

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:b172f088-7dfc-4f70-ad43-e68be5e11281

  1. 从零上手流程还是比较顺利的,只要多关注标注信息,有一些研发经验,是可以快速的创建服务与函数的;
  2. 函数计算功能相对来说是全面的,包括单实例多并发,预留,版本&灰度,可观测性等,可以满足绝大部分的应用场景,即便某些框架因 Serverless 架构丧失了部分特性,也可以通过产品侧所提供的能力解决;
  3. 可观测性相对来说很完整,从 trace、log、metrics 等几个方面入手,可以满足开发者在可观测上大部分需求,另外值得好评的是控制台页面的实时日志功能,对开发调试很有帮助;日志搜索功能有待加强,例如若想快速找出日志前后文还需要进一步依赖日志服务等;
  4. WebIDE 很强大,通过计算资源的分配可以在线进行代码编写和项目构建,但是 WebIDE 的环境和函数计算的环境依旧是不通的,不仔细研读和体验,会被误会在 WebIDE 中的调试即是在函数环境下的调试;
  5. 函数计算所特有的 HTTP 函数,可以轻松地将 Web 应用迁移部署到 Serverless 架构,但是 HTTP 函数和时间触发器没办法一同配置;
  6. 函数计算的环境变量没有 Secret 能力;环境变量往往涉及到敏感信息,能否加密输出是安全性的一种表现;
  7. 函数计算有很多代码目录是被限制读写的,但是并不是所有运行时都会被限制读写,这种不对齐会让开发者产生比较大的疑惑,尽管其他厂商也多是这样设计的,但是却没人说这样设计的原因;
  8. 函数计算从服务到函数,再到可观测、自定义域名等模块,拥有较多功能/配置,目前在使用过程中难以快速找到部分功能。例如经常会找不到预留实例的配置入口等;

任务

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:7e44b0d4-8d18-425c-800f-6b8e1565f702

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:ef05bf9d-8f4c-460d-9fea-edc9c2905b3b

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:1bc5b69a-b8ee-454a-81f1-8aca172e959c

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:2cdb57c0-3a4a-4efa-ab72-d78a6821a18b

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:78afcfb9-23b7-49cb-9993-7ad5db519bcf

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:f3c2b0dc-477c-40ec-9de0-39ae2c9317d9

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:cc408a23-48b2-485b-94a4-f1aa5eebf058

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:2c629c97-86a6-48f5-8843-3b4d140b092f

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:494b3295-86ff-4de1-b164-98d4f37992e3

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:8597f488-a9fb-46a2-9c1f-3b18a3b33cd6

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:4ccddff9-312e-4943-a5cf-f98802e5bda8

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:f4d95a91-fa17-4a66-b40f-afd2593b0ffa

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:ff3c11eb-330b-4cbe-93d3-29c40fb397fc

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:1b3c7a79-fba3-4fa8-91b4-9c50bc80e3bb

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:ceffcfc7-9997-46e8-beac-1bc92ba8721a

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:36f60eff-2096-485c-bd8e-ec836dd3dd42

应用

与任务相同的是,应用也是建立在服务与函数之上的;与任务不同的是,应用不仅仅是函数计算。可以认为,应用是函数计算中,联动其他产品的入口或者 Serverless 应用的管理平台。

通过应用创建页面,可以快速体验 Serverless 应用:

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:504dcd5f-a960-418f-b7e8-08d1bd395f50

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:42887cad-4e51-4974-a7ad-3a8d117ff599

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:57eefbeb-40e2-4173-b1c2-067c757e249b

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c5841364-cc8b-4c9c-ba12-3aff9a28c196

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:02054414-45ba-47e0-8de4-b3e43b0c1ea5

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:66384b6d-57c6-4e57-acd5-cd91ee2da279

应用的出现,无疑是 Serverless 架构多产品逐渐”一起战斗”的表现,即开发者对应用进行管理,而不再是对代码和资源进行分别的管理。通过应用模块,开发者可以:

  1. 快速体验 Serverless 架构;便于学习和调研 Serverless 架构;
  2. 可以进行资源联动,并以应用纬度对资源进行管理,对权限进行划分,对业务进行运维;

值得注意的是,应用功能默认有一套标准的 GitOps 配置,通过基于代码仓库进行应用部署之后可以发现应用本身是基于 Serverless Devs 开发者工具实现的,这也充分的将线上平台与线下工具进行联动,在一定程度上可以进一步保证开发者使用体验的一致性。另外,在体验应用模块之后,会产生一些想法:

  1. 作为产品联动入口,应用模块需要牵扯其他资源投入,如何保证应用模块的资源可以逐渐的”自运营”将会成为应用模块能否成功的关键点之一(所谓自运营指的是不需要某固定团队主动提升应用数量、质量,而是可以由更多参与者自发的去做这项工作);
  2. 应用模块在一定程度上应该属于 Serverless 而不仅仅是函数计算,否则过小的 Scope 会限制该模块的持续发展与生态演进;
  3. 作为拥有标准 GitOps 配置的应用,目前 CI/CD 能力过于单薄;
  4. 功能不完善,创建后的使用体验有待加强。例如,部署后的”如何应用”的引导、可观测要如何去做 ……

Serverless 工作流

Serverless 工作流在一定程度上可以认为是任务模块的一种升级表现。即单纯的任务模块是基于函数计算的,是异步的,Serverless 工作流在此基础上增加了编排能力:

从函数计算到 Serverless 架构

通过 Serverless 工作流夹持的任务将会:

  • 具有服务的编排能力;
  • 支持长时间运行流程;
  • 可进行流程状态管理;

在体验 Serverless 工作流之后,也有一些思考:

  1. 与应用模块一样,如果 Serverless 工作流定义的 Scope 过小,可能只是函数计算的编排,会让这个功能丧失很大的竞争力;
  2. 工作流的整体体验是比较顺畅的,如果可以将功能持续优化,工作流的易用性会更高;

Serverless Devs

关于阿里云 Serverless Devs 上手,可分为三个流程:

  1. 工具安装与配置
  2. 项目初始化
  3. 项目开发与部署

由于 Serverless Devs 项目是发布在 Npm 的,所以在安装之前需要开发者先配置 Node.js 开发环境,再通过 npm 工具进行工具的安装。安装完成之后,可以通过 s config命令进行密钥信息配置:

从函数计算到 Serverless 架构

可以通过 s init命令,进行案例代码的初始化:

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:830e1422-42a8-4344-9842-ac5c8ba00ba8

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:bc3639f3-e60c-4f3c-bf54-b0b9e786d4f2

从函数计算到 Serverless 架构

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:035dd32b-3d94-4a5d-b159-9e35691d8ab3

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:cebdf6f9-f13e-4f0f-a6d5-abc7bea5662a

从函数计算到 Serverless 架构

同样基于这三个流程,Serverless Devs 也是可以快速的与常见的流水线进行集成,目前官方提供的案例包括Github Action,Gitee Go,Jenkins,以及云效等,但是阅读过相关文档后,不难发现,即便是其他的流水线,也是同样的操作流程。

Serverless Devs 开发者工具针对阿里云 Serverless 架构来说,其最大的意义和价值,应该就在于:

  1. 更大的 Scope,留下了更大的想象空间;
  2. 是产品联动的基础,通过部署编排,组件化模式,让更多产品联动;
  3. 用户体验升级,可以帮助开发体验阿里云 Serverless 产品,并基于模板案例,快速上手;

从开发角度来看,Serverless Devs 开发者工具解决了 Serverless 领域常见的几个痛点:

  1. 所涉及到资源和服务比较多,难以在流水线中进行整体的编排和发布;
  2. “伪命题:Serverless 不需要用户关注操作系统等内容”,但是在实际使用过程中,用户不得不关注系统,因为这会影响项目打包和构建的结果;
  3. 由于资源过于零散,环境过于独立,Serverless 架构调试复杂度非常高;

下一代Serverless探索

用户体验相关

进一步的”统一”

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:7503d54c-4358-4a80-bc4d-e7ff411fe067

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:09457d90-a205-44cd-9c5e-916d7c3f64ea

Serverless 架构同样如此,在云原生技术日益发展的今天,Serverless 架构已经不再是单纯的某个产品或者某种形态,他应逐渐的发展成为一种思想。

基于 Serverless 架构所传递的精神,已经有越来越多的 Serverless 产品出现,尽管如今,他们依旧是”单打独斗”的多,但随着时间的发展,这些产品注定会以一种”粘合剂”为核心,统一的,一致的为开发者提供服务。

从加法到减法

虽然 Serverless 架构并没有确切的定义,但他所要传达的心智却一定不是更复杂。

所以在未来的发展过程中,Serverless架构的发展方向之一,就是做减法,减掉那些”看似合理,却又没有道理的能力”。例如,为什么要透露出各种实例类型(弹性实例、GPU实例、性能实例、按量实例等)?为什么需要配置预留,需要配置弹性策略?

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:649a4d0b-6586-4564-823b-e28b7c1ddaef

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:a0123939-479e-4a52-b8bd-3881f5d4c1ac

功能探索

云开发模式

Serverless 架构的下一站是什么?这是一个很多人思考的问题。

函数计算仅仅是一个计算平台,可以单打,但也不能独斗,想要更容易被接受,资源的聚合、联动是必不可少的。尽管函数计算的应用模块,在一定程度上正在联动更多资源,但是这也仅仅是管理层面的,开发者所接触Serverless 架构后,开发也是非常重要的一环节,那么云开发模式就值得考虑。

低代码模式

Serverless 架构在一定程度上是可以让很多功能模块化的,而模块化的进一步发展,就可能是低代码模式。

基于 Serverless 架构的低代码有望将 Serverless 思想应用到产品建设思想上,模块化的快速部署、更新,平稳发布与下线也都是符合 Serverless 思想的。

总结

Serverless架构,在未来将会像云主机,容器服务一样,成为云计算时代新的基础设施;在对基础设施的维护的基础上,为开发者提供更为场景化的服务有望成为 Serverless 架构突破自我瓶颈的突破口。

在未来,Serverless 将会是一种”形态不统一,但是目标很统一”的技术架构思想,开发者可以以一种更为一致性的体验,快速使用 Serverless 架构构建自己的场景化应用,当然这里的Serverless包括了不同形态的服务,例如数据库、网关、函数计算等。

综上所述,Serverless 架构在不断的发展,Serverless 架构的精神也在不断的更迭,从函数计算到应用,从开发、运维到全生命周期,Serverless架构要回答的问题很多,要做的事情更多。

更多内容关注 Serverless 钉群(ID:35154841 ),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。

Original: https://www.cnblogs.com/bainana/p/16565949.html
Author: 阿里云云起实验室
Title: 从函数计算到 Serverless 架构

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/562693/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球