Serverless Developer Meetup 深圳站|学习笔记(三)

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 快速学习 Serverless Developer Meetup 深圳站

开发者学堂课程【Serverless Develpoer Meetup 课程Serverless Developer Meetup 深圳站】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地https://developer.aliyun.com/learning/course/943/detail/14746


Serverless Developer Meetup 深圳站


如何定制一套 Serverless 应用部署流程

 

前言:

何为 Serverless 架构,本身应用是以 Serverless 为计算核心 ,存储、应用依然会需要应用。架构往往是抽象的,有没有一种可能开发者以代码的方式去把它开发起来,快速的部署上去,值得思考。


目录:

一.弹幕应用部署展示

二.弹幕应用设计到落地原理解析

三.Serverless 开发者工具模型(SDM)介绍

四.定制 Serverless 应用部署流程

 

一.弹幕应用部署展示

做一套实操的演示,在应用市场找弹幕的应用,打开可以看到整个预览效果以及要部署应用需要提前准备什么东西。Serverless 本身是 BaaS 和 FaaS 结合。网关和网络也要提前准备,基本上是免费的。将 BaaS 的连接资源准备好开始一键部署。

选一个本地的目录下载。首先需要自己的自定义域名,花 40 元在外网申请一个,名字随便命名。因为做了动静态分离,需要用 OSS ,准备一个 Bucket, 要保证 Bucket 是唯一的。需要用到业务存储部分。

创建数据库,创建实例。进入配置页面,弹幕应用有大屏幕、网站、手机端、管理端,几个服务。两个函数,控制函数用于收发的弹幕,第二个与 Web socket 触发连接的事件函数。还需要网关等基本东西,把字节必要的别名准备好。Run 起来后这些工具会把所有的组件,准备好的资源做一次执行,将几个前端部署到 OSS 上,把函数部署到函数计算上,将网关相关的路由配置好,最后将 DNS 的解析设置好。

创建网关路由的阶段,因为本身弹幕应用用了 11 个路由。将字节的域名放在浏览器里。缺一个步骤,有一个环节没有找到阿里云的 API OSS 的域名绑定,这一步骤必须手动做一下优化。弹幕应用并不是一个很完美的应用,还可以继续将点赞以及管理后台做更加详细一点。

创建好后提供一个专门的访问链接。后台可以设置控制拦截大家的弹幕,后面会讲详细的架构。一个复杂的弹幕应用部署完毕。

弹幕背后实现的原理。

需求的来源是小江同学提的需求,后面全部的工作都是由前端工程师去 cover,用 Serverless 时想到它的场景,场景有时不是自己凭空想的。

如果把整个 Serverless 技术掌握的非常透彻,工具的应用比较扎实,可以在很短的时间内将整个业务的需求 cut 掉。

Serverless 架构的弹幕应用需求说明

.弹幕显示位置:全屏幕播放模式:实时播放

·是否显示头像:随机显示,类似 Github(也可不)字的颜色:彩色或者黑色

.屏幕背景:固定壁纸我可以给你·速度:不是很快

.审核:需要管理员审核放出

·点赞:可以看到点赞的红色心从右下角飘出

 

二.弹幕应用设计到落地原理解析

1.弹幕应用预览

整个弹幕的架构,前端工程部分有三个端屏幕段、玩家端、管理端。需求用 Web socket,函数本身是用完即走,本身不适合做长连接。应该有一个网关承接 Web socket 的连接,用阿里云网关做连接。有两个 socket 连接,一个是设备,包括屏幕的设备、后台管理会连上去做全装工。是否是管理员拦截的,如果是不会把弹幕推到屏幕上,会先推到管理后台。下载是一个相对完整的 Serverless 架构。

image.png


2.弹幕应用访问架构

通过域名访问,经过 dns 解析到网关,网关主要是承担了路由分发的角色,根据不同的路径,是网站的路径、大屏幕的路径、后台管理的路径,会帮做转发到函数,通过事件驱动。这个架构可以 cover 一个外部应用场景。虽然 Serverless 本身有自己的局限性,如果将 Serverless 也看成 BaaS 的服务一个组件,组件在结合后台的其他服务,数据存储、网络,把这些整个整合后能力可以延展到无限大。

image.png

 

演示经过了很多过程,工具做了很多事情,处理本地的代码压缩,分化到 OSS 上传到函数计算。

工具本身模型的设计原理

 

三.Serverless 开发者工具模型(SDM)介绍

1.ServerlessDevsModel 抽象模型展示

·人(应用开发者及组件贡献者

·货(Serverless 应用及组件)

·场(开发生产过程)

人指开发者分两种,一种是使用开发好的代码应用,另外一种是做应用的人。可以是互帮互助的角色

场是构建整个 Serverless 的平台,这两个角色会在厂里做业务的开发、贡献自己的应用组件。

货虽然指 Serverless 应用,有可能是一个非常简单的 FaaS 的应用,有可能是非常复杂的 Serverless 架构的应用。

有了这个模型后可以在小生态里做闭环,通过 Serverless 技术来满足各式各样的开发诉求。

image.png

 

2.ServerlessDevsModel 详解说明

整个模型拆分,除了人员模型也包括数据仓库模型,自己的应用和组件最终存储到哪,别人是否可以自建变成自己公司沉淀的数据仓库,分离出这个模型让 Devs 使更多同学在自己公司搭建人、货、场的体系。

工具平台模型把应用模型单独拿出来做一个详细的介绍。需要云厂商不同的信息,腾讯云的秘钥、华为云的秘钥、阿里云的秘钥都是本地工具连接云上资源,需要极为小心在本地保管好。后面会做关于 Serverless 应用安全开发方面的实践,教大家怎么避免不小心把秘钥信息给透出到开源的代码仓库上。

image.png 

 

3.应用模型(web)应用

展开应用模型

 image.png

 

可以把整个弹幕的架构看成是一个应用,应用是自己做的一层抽象,根据刚才弹幕的例子把它看成整体的应用。每一个子的部分叫做服务,比如网关是一个服务、FaaS 后端是一个服务、静态资源也是一个服务,这些抽象的都会体现在代码配置里。将抽象做成代码配置,只需要根据提供的相关的使用文档将该填的配置填好,就可以正常将流程走起来。

 

4.组件模型(apigateway)

image.png

 

应用本身是上层抽象的概念,真正执行逻辑的实际上是组件。将代码进行压缩上传,其实是组建的逻辑去执行的,包括网关组件需要配置文件传递的路由信息,包括路由背后是一个的函数。执行以下几个步骤,先找到配置的秘钥是什么,决定在哪个云上。

具体网关的逻辑,网关有一个分组的概念,将一层 APR 做聚合,业务是一个 barrage 的业务,分组名为 barrage,分组下开始创建不同的 APi 最后做域名绑定最终才能通过域名访问。

整个流程下来可以完成非常好的闭环,把网关自己的组件逻辑处理掉,接下来交给下一个。可能下一个是 dns,dns 也会拿到它的返回结果,会返回自己的域名让 dns 做绑定。

工具本身做了很多事情,处理本地代码、压缩、分化到 OSS

 

四.定制 Serverless 应用部署流程

1.弹幕应用落地过程

简单的说明对业务需求的梳理,基于业务结合自己掌握的知识做架构的设计,更细的实现每一块的开发和研调。初始化一个前端的项目,细化 UI 调接口,初始化函数,在后端函数写各种接口,最后将前面的工作成果做整合,通过工具罗列起来搭成工作流,最后执行。

最后的重点是最后一步,前面容易理解,后面与自己工具链的规范相关的核心是组件。

需求梳理:梳理需求的逻辑列出现实所需要的基础云资源

应用架构设计:以基础云资源搭建整体应用架构

开发调试:借助 s 工具云产品控制台进行开发调试

 

2.服务模块拆解

image.png


上边的解耦拆分

组件定制-初始化

ing s init→Dev Template for Serverless Devs→ Component Scaffold

 

3.组件定制-开发调研

.安装依赖

.查看入参

.模块联调

怎样做组件,怎么样调试

做一个域名解析的组件,通过命令行指令初始化提供的模板。在模板上做调试修改,单独对 dns 做部署操作。先用 s 指令打一个测试,新建一个目录做组件的初始化,ts 工程的目录。提供一个 example 主要做测试,可以打 s 指令。启动项目,整个用 ts 做编译,在 example 上测试 s test,将 test 方法做输出,参数包括了从 sk 组件传入的 crops 以及隐含了设置的秘钥信息。秘钥信息是调用云端资源的重要的东西。做组件可以用这样的方式尝试测试。

单独将写好的 dns 组件打开,把用户传入的 dns 做绑定,打一个断点。组件是更加聚合性的云端资源的逻辑,很多云都有自己的服务,网关服务、OSS 服务,组件可以对云做专门的映射来处理云服务的需求。断点进入,一步步向下走去具体查看入参有哪些,决定相应的逻辑处理,相当于实际的编程。组件改名字,改成 dns 地址。确定当前组件所在的目录,复制。

 

答疑:

公共方法调用函数

最后一层加了一个网关,所有的请求都会经过网关回流。在真正的企业实践里,希望函数本身通过 vpc 的访问方式,更安全。在刚才的 keys 上函数之间的调用需要绕一层,绕到网关里在打到 http 触发器

一个函数有很多组件有基础函数还有其它函数怎么权衡

具体影响的数值没有实际测试,如果觉得影响性能化,可以加预留,让整个运行稳定。选择快一点的语言。产品在做深刻改造,以及基于老的容器方案,现在底层基于底层服务商。

整个热启动的时间大概为 55 毫秒,如果在理想状态下云主机上可能比 55 毫秒更小,当数值达到一定程度时,40 毫秒 50 毫秒是非常敏感的业务,99%的业务不会对这时有太多顾虑。如果是 0.1 的业务对时间很敏感, AK 网关调用可以走内容机制不会慢,可以用冷启用优化方案,优化加在一起不会对业务产生不可控影响。

依赖的问题,函数会依赖底层函数,Serverless 给人的感觉是资源的利用更加细,想要依赖基础的东西,需要通过网关的形式走,直接引入代码库的方式直接走。比如阿里云函数 a 依赖底层函数引入本地的一段代码,代码因为必要原因必须走公网的形式,完全没有问题。

网络分为公网和内网,函数被其他几个函数依赖,没有放在层里,走的内网,效率不会低很多。内网的流量基本上免费。

Serverless 冷启没有做到非常理想的状态,作为服务商做相关方面的探索,考虑替换现有容器的方案,目前不成熟,可以继续关注。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
弹性计算 运维 Kubernetes
Serverless Developer Meetup 杭州站精彩回顾!【附赠PPT】
Serverless Devs 是一个开源开放的 Serverless 开发者平台,也是业内首个支持主流 Serverless 服务/框架的云原生全生命周期管理的平台,致力于为开发者打造 Serverless 应用开发一站式服务, 帮助解决目前的工具链之困,让开发者一键体验多云产品,极速部署 Serverless 项目。
Serverless Developer Meetup 杭州站精彩回顾!【附赠PPT】
|
运维 Kubernetes 安全
Serverless Developer Meetup 深圳站|学习笔记(四)
快速学习 Serverless Developer Meetup 深圳站
210 0
Serverless Developer Meetup 深圳站|学习笔记(四)
|
Serverless
|
消息中间件 运维 Kubernetes
已结束|【仅剩10席】阿里云 Serverless Developer Meetup 杭州站报名倒计时!
Serverless 架构在不断的发展,也在不断的更新迭代,但是在当前阶段 Serverless 架构是什么样子的?企业落地究竟会带来哪些优势?带着这些问题,2022 Serverless Developer Meetup 首站集结!延续「Serverless 技术开发者实操与学习」的主题带领各位快速了解
已结束|【仅剩10席】阿里云 Serverless Developer Meetup 杭州站报名倒计时!
|
Kubernetes 前端开发 Serverless
9月17日 杭州站 | Serverless Developer Meetup 开启报名
2021 年 Serverless Developer Meetup 在北京、上海、杭州、深圳成功巡回举办后,2022年 “最适合中国开发者的 Serverless 实操沙龙” 如约而至,9月17日(星期六)杭州集结,召集热爱开源技术的你!
9月17日 杭州站 | Serverless Developer Meetup 开启报名
|
弹性计算 架构师 Serverless
7.24 杭州站 | 阿里云 Serverless Developer Meetup 开放报名!
本次沙龙特别邀请来自阿里云、初创互联网公司、开源中国 Gitee 的技术专家和独立开发者,剖析 Serverless 的典型应用场景和案例,分享初创企业落地 Serverless 踩坑经验和收获,破解 Serverless 弹性伸缩和跨云部署难题,现场发布开源项目 Serverless Devs 全新功能。免费报名即可来现场与 Serverless 技术大咖实操 Serverless。
642 1
7.24 杭州站 | 阿里云 Serverless Developer Meetup 开放报名!
|
Kubernetes Cloud Native 前端开发
12.04 Serverless Meetup 深圳站 | Call 你来参加
本周六(12.04)阿里云 Serverless Developer Meetup 与众多好友在阿里中心等你来!
12.04 Serverless Meetup 深圳站 | Call 你来参加
|
Kubernetes Serverless 开发者
12.04 深圳站 | Serverless Developer Meetup 开放报名啦!
继 2021 北京、上海、杭州站成功举办后,这一次“最适合中国开发者的 Serverless 实操沙龙”来深圳啦!
12.04 深圳站 | Serverless Developer Meetup 开放报名啦!
|
Kubernetes 前端开发 Cloud Native
|
存储 运维 Cloud Native
【抢先报名】阿里云首场 Serverless Developer Meetup 亮相北京!
为了让更多开发者解决应用 Serverless 面对的困惑,感受 Serverless 的使用之美。阿里云首场线下 Serverless Developer Meetup 即将亮相北京,来自阿里云、淘宝、闲鱼、百富旅行的技术大咖,洞察Serverless 在中国的发展趋势;深度分享 Serverless 在 双11 和企业的落地经验;首次披露 Serverless Devs 开源细节。我们希望通过本场活动,让 Serverless 能够真正走到开发者身边。
20946 0
【抢先报名】阿里云首场 Serverless Developer Meetup 亮相北京!

相关产品

  • 函数计算