UC Berkeley认为Serverless架构的出现过程类似于40多年前从汇编语言转向高级语言的过程,在未来Serverless架构的使用会飙升,或许服务器式云计算并不会消失,但是将促进BaaS发展,以更好地为Serverless架构提供支持。
Serverless 架构的应用开发流程
基于 Serverless 架构的应用开发流程将会比基于传统架构的应用开发更简单。在 Serverless 架构下进行应用开发,用户通常只需要按照规范编写代码、构建产物,然后部署到线上即可。
如图 1 所示,CNCF Serverless Whitepaper v1.0 指出函数的生命周期从编写代码并提供规范元数据开始,一个 Builder 实体将获取代码和规范,然后编译并将其转换为工件,接下来将工件部署在具有控制器实体的集群上。该控制器实体负责基于事件流量和/或实例上的负载来扩展函数实例的数量。
图-1 函数部署流水线示意图
如图 2 所示,函数创建和更新的完整流程如下。
图-2 函数创建/更新流程示意图
1)在创建函数时,提供其元数据作为函数创建的一部分,对其进行编译使其具有可发布的特性。接下来启动、禁用函数。函数部署要能够支持以下用例。
- 事件流(Event Streaming):在此用例中,队列中可能始终存在事件,但是可能需要通过请求暂停/恢复进行处理。
- 热启动(Warm Startup):在任何时候,具有最少实例的函数能使所接收的“第一”事件快速启动,因为该函数已经部署并准备好为事件服务(而不是冷启动),其中函数通过“传入”事件在第一次调用时部署。
2)用户可以发布一个函数,这将创建一个新版本(最新版本的副本),发布的版本可能会被标记或有别名
3)用户可能希望直接执行/调用函数(绕过事件源或 API 网关)以进行调试和开发过程。用户可以指定调用参数,例如所需版本、同步/异步操作、详细日志级别等。
4)用户可能想要获得函数统计数据(例如调用次数、平均运行时间、平均延迟、失败次数、重试次数等)。
5)用户可能想要检索日志数据,这可以通过严重性级别、时间范围、内容来过滤。Log 数据是每个函数级别的,它包括诸如函数创建/删除、警告或调试消息之类的事件,以及可选的函数的 Stdout 或 Stderr。优选每次调用具有一个日志条目或者将日志条目与特定调用相关联的方式(以允许更简单地跟踪函数执行流)。
图-3 开发 Serverless 应用的流程
如图 3 所示,以阿里云 Serverless 产品为例,在生产环境中开发 Serverless 应用的流程是:
步骤1:根据 FaaS 供应商所提供的 Runtime,选择一个熟悉的编程语言,然后进行项目开发、测试;
步骤2:完成之后将代码上传到 FaaS 平台;
步骤3:上传完成之后,通过 API/SDK 或者由一些云端的事件源触发上传到 FaaS 平台的函数;
步骤4:FaaS 平台就会根据触发的并发度等弹性执行对应的函数;
步骤5:最后用户根据实际资源使用量按量付费。
与 ServerFul 应用开发流程对比
下面我们将通过生产环境中的案例,对传统架构下的应用开发与 Serverless 架构下的应用开发进行举例对比。
以一个 Web 应用为例。如图 4 所示;
图-4 传统三层 C/S 架构下某电子商务网站应用简图
通常情况下一些 Web 应用都是传统的三层 C/S 架构,例如一个常见的电子商务应用,假设它的服务端用 Java,客户端用 HTML/JavaScript;在这个架构下服务端仅为云服务器,承载了大量业务功能和业务逻辑,例如,系统中的大部分逻辑(身份验证、页面导航、搜索、交易等)都在服务端实现。
当把它改造成 Serverless 应用形态时,架构如图 5 所示。文章来源:https://www.toymoban.com/news/detail-663952.html
文章来源地址https://www.toymoban.com/news/detail-663952.html
到了这里,关于实战指南 | Serverless 架构下的应用开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!