【视频】Serverless 赛道赛题解析 | 学习笔记

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 快速学习【视频】Serverless 赛道赛题解析

开发者学堂课程【2022云原生编程挑战赛培训课程【视频】Serverless 赛道赛题解析学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1049/detail/15220


【视频】Serverless赛道赛题解析


内容介绍:

一、赛题背景

二、赛题解析

三、解题思路


一、赛题背景

在云的时代,IDE 越来越向着轻量化分布式的方向演进,像 Vs code,Intellij Idea等知名的产品都推出了 web IDE 的版本,比如像云厂商也推出了很多web IDE的版本,比如阿里云的DEv studio,Cloud9,腾讯的 coding 以及华为云的cloudIDE。云厂商或IDE的厂商都推出了web IDE的版本,在云时代是一个趋势。web IDE解决那些场景,现在比较流行的小程序、小程序的开发,像low code,钉钉平台,或阿里推出的locode引擎或在线编程教育,如拉钩或者是游客网这种在线编程教育的平台,又或是前端一体化开发,如coding box、 code box等,也有像AI或者大数据处理领域,解决Python或者AI领域的编辑器,就是web版的笔记本或者是编辑器。在云的时代,web IDE体现出越来越重要的价值,在些具体的应用场景里面,像serverless赛道或阿里的FC、腾讯的SCF发式化的云服务,需要web IDE的工具配合,体验才会做得更好,总之web IDE有越来越重要的价值。

image.png


二、赛题解析

如果把web IDE当成服务器,本质上是一个SaaS服务,即使有了像VScode这样的优秀的轻量的IDE软件,要打造一个可靠的、好用的web IDE仍面临仍面临诸多技术挑战,SaaS服务必是一个多租户的,既涉及到多租户,对于web IDE,它每租户的代码就是一种核心资源,代码如何安全隔离。

第二是资源配额也属于隔离,多用户同时使用SaaS服务,不可能因为一个用户过量使用了整个SaaS服务的计算资源,导致拖垮其他用户,或让其他用户处于饥饿状态。肯定对每用户能使用的资源的配额是要有限制的,相互之间就是资源是不会相互倾轧,

第三是web IDE,把本地的IDE平台的内容放到浏览器云上或是端上,云上或服务端上在线编辑,编辑代码是希望它能实时有保存能力的,或能保存起来,下次打开,状态是能实时恢复的。一个数据的实时保存和数据的实时恢复是很重要的,比如web IDE的浏览器不小心关闭了,或web IDE实例不小心销毁掉了,能把之前编辑的代码、保存好的代码快速恢复出来。web IDE本身是一个很长尾的使用情况,如编辑一段代码,下班或web IDE关闭,或内容可能当时code review使用一下,可以发现web IDE使用的时间是很离散的,如果常驻一个web IDE实例,有很大的资源的浪费。对于赛题,希望是低成本的,实际使用时按量付费,一旦是按量付费,意味着高利用率,对于用户来,是高利用率,只需要为使用时间付费

image.png

赛题列出来的五部分、五技术挑战,就是赛题需要去解决的问题。


三、解题思路

多租户每个用户的数据要安全隔离,每个用户使要的资源配额要有限制,要有快速恢复数据的能力或web IDE有秒开的能力等,还有非常高的利用率,谁开谁用谁关随走的体验,其实很适合serverless理念。

image.png

函数计算它作为一个servercless产品,可以很好的契合这种场景,函数计算原理图,可以从左边开始看,对于开发者只需要编写一段代码,把代码上传到平台,事情就做完了,只需要通过SDK或浏览器发请求调用函数,函数计算平台会拉出执行环境,把请求执行完毕,并且把结果返。除了主动调用,还支持一些事件源,比如我OS上传zip包,自动触发一函数,自动解压,或有一段日志来了,自动触发一个函数,做日志清洗保存到另外的数据库,比如ids,对于用户只需要编成段代码,把代码上传到FC平台,不需要去管任何一个机器资源,因为FC会帮助弹性,比如调用QPS会很高,会自动百毫秒级伸缩出很多的容器实例,帮助执行逻辑,把结果返回,同时只会按毫秒去计费,每次执行容器,如容器执行了多少毫秒,只是按内存毫秒去计费。

它是真正的、100%的按量付费,对于web IDE场景,本质上是比如在函数里面写了一段代码,是web IDE的代码,通过浏览器可以是浏览器的形式,浏览器它通过HTTP函数浏览器去访问web IDE,web IDE弹出一个实例作为它的服务,进行一次操作就执行一次函数,真正是按量付费,比如在web IDE里面进行操作,操作发了请求过来,执行完毕,并不是实例存在就一直在计费,真的是100%的计费。

解题思路-函数计算

image.png

以特别简单的hellowork事例来看一些特性,比如把代码开发完毕,开发计算圆周率的代码,点击保存到函数计算平台。形成了一个弹性高可用的API,API计算演周率Π,就像体现了开发高速上线,对API进行压测,随着压测的强度变大,QPS也逐渐增高,但是延时是比较稳定的。第三是,自己对每个函数的版本也可以去做安全灰度的升级。比如有一个版本,V1和V2版本,V1是返回hello world1, V2版本是返回hello world2,别名testing,调用testing时,发现四和五各50%的流量,我调用时有50%的概率分别是hello world v1和hello world v2。函数计算它是一个能快速开发上线,弹性高可用,按量付费,安全灰度,各种server特性的一种产品。

解题思路-核心点

如何与web IDE产品结合,会变成一个HTTP的函数,HTTP函数托管到FC,通过浏览器调用函数,函数返回页面,再操作一下又返回一个页面,本质上每一次浏览器的web请求就变成了一次单程的函数调用。在赛题里面提供了demo示例,可以去文档里查看,

image.png

实现了把一web IDE部署到FC平台,web IDE使用了开源的open vscode server,前面通过实现了Golang的Reverse Proxy,作为我们的custom longtime,是HTTP server,HTTP server会把请求全部转发给Vs code server,再部署到FC,实例可能只是单租户的,可以感受一下,比如通过一键部署,也可以通过应用中心里面应用,应用里面找到web应用,与Github是对应的,创建应用。

image.png

在创建应用时,可以把代码可以克隆到代码仓库,比如通过代码仓库部署,我会部署的话,会把实例代码初始化到Github仓库,如果没有Github,也可以去直接部署,直接部署的话会有几问题,如果是第一次部署,会有role。role会告诉模板需要什么权限,是红色的会引导,根据引导完成授权。同理还有aliyunFCDefualtRole,实例保存到oss里面,会引导权限,比如填层次透明,其实是需要层次透明帮助持久化,持久化Vs code的数据。image.png

比如region是杭州,作为bucket,创建杭州的bucket名字。

image.png

点击创建,接下来去做部署。已经进入部署,部署成功。

image.png

返回域名,工具帮函数生成域名,FC它本身有自定域名的能力,可以通过域名去访问,第一次打开时会有点慢,是web IDE,也是考察点,如何优化它的启动性能,打开的更快。比如可以通过预留或者等启动能力更强

image.png

web IDE,有一些比如像终端,可以通过终端看到刚刚生产的a.text文件,它本质上已经实现了迷你版的Vs code的web IDE了,回到赛题解析问题。

第一问题是多租户的安全性,因为web IDE是给很多用户使用,刚刚示例就可能是自己用,自己部署到自己的函数计算,访问都是自己的代码,好像问题不大对,因为可以理解成是单用户的,现在是多租户的,如何解决所有人都打开部署的web IDE服务,像刚刚配了一个oss的对象存储bucket的,因为自己的,肯定是安全的,比如这你是一个服务,肯定使用OSS bucket,在bucket里面给用a用户和B用户之间相互做好数据隔离,比如不能让A用户访问到B用户的代码,是比较重要的多租户的安全性。第二生成了URL,URL从浏览器里面输出,因为URL刚刚是单租户的,也是有些安全性问题,比如把内容放到公网里面其他人也可以访问,或者别人也能推测出来,比如推测出URL形式,如果是多租户服务,a用户是不能推测出B用户可能的URL,就是web IDE的URL,可能跟web socket是一样的,Web socket安全性问题是要解决的。核心点安全性是比较重要的,对于做SaaS多租户服务,一是核心代码的安全隔离,另外是web浏览器的入口安全。第二是性能,就第一次打开时其实是有点慢的,它能启动,如何去做优化体验,可以通过一流一些实力或者其它,或者单纯的能启动,但是能启动性能就是做的好,启动很快,即使能启动,补充一下人启动的概念

image.png

回到这里,保持代码,用户调用一次,就拉出一个执行环境执行,其实第一次去拉环境、拉容器实例时,先分配一个容器实例,第二是把容器实力longtime记起来,第三再执行代码,第四步把代码执行的请求返回回去,中间会看到启容器,并且把longtime启动成功的过程,就能启动了,它一般会比较慢一点,第二次比如调用了一次以后,隔了两秒又来调用,其实FC平台会把容器实例会饱和几分钟不等,再过来时,其实容器已经热了它立马就返回结果。人启动概念是长时间都没有调用,突然调用一下,触发了它去分配容器实例,启动容器实例,启动longtime过程,但FC平台它本身调度出容器的实例,只是百毫秒级别的,启动容器根据不同的longtime有百毫秒到一两秒不等,像Java会比较慢一点,比如刚刚给的示例go longtime和API server,其中是比较快的,是百毫秒的。

image.png

上述原理图,是custom longtime实现的Longtime,是HTTP server,还需要等启动成功,启动时间会本身比较长,导致第一次打开时稍微有点慢,可以考虑优化去解决,也可以去考虑东西是否适合,是否能做的更好,把人启动给优化好,也可以采用预留策略,但是它本身是相当于提前购买资源,其实本身是花了一点钱,但是在FC场景下,预留也进行了一些收费模式的前进性,比如不分配CPU,也是可以降低成本,感兴趣可以看相关文档,也可以通过FC本身已经有的一些系统能力,能否在人启动和成本之间取得比较好的平衡,比如通过潮汐或者调用使用情况,知道什么是超高峰期,多预留量,比如到到凌晨没有用户量就可以把预留取消等策略,如果对调用量是有一定的提前预估的,可以提前自动设置一些预留,减少人启动中发生的情况,这就是回答核心点中秒开IDE,是比较重要的,比如想把web IDE嵌入到你的gitHub或者gitlab内建的,希望打开代码仓库时,web IDE立马启动成功,就可以进行代码的查询,甚至修改等。

第二是快恢复,快恢复也比较重要,因为在很多场景中,比如不小心把web IDE关闭,或在某页面就是进行相互不同的切换,web IDE可能被其他的产品嵌入到浏览器的某页面里面,可能web IDE只是其中一个tab,在不同的tab切换时,希望IDE页面用户是可以快速恢复到之前的状态的,或打开web IDE,过了几分钟希望之前写的代码是能快速恢复出来,除非没有保存,或可以在web IDE里面设置自动保存,每次些代码,会自动帮我保存一下等策略,可以让用户去设置,但是快恢复的能力是要有的,不可能写了半小时代码忽就没有了,是有点崩溃的。只有把安全性和性能都做好,才满足了一个比较优秀的SaaS平台的基础。接下可能是功能的丰富性和用户体验打磨。第三点比如针对低代码,像前端codesandbox。

image.png

专门给前端去开发的各种模板,比如什vue等,比如刚刚边创建的,可以写代码,跟浏览器模式是一样的,完全契合前端开发的用户体验事,界面百分之八九十跟Vs code是比较相像的。第二变向代码有一定的智能提示,第三是函数计算本身有限制,调用一次函数比如发POS请求,要求POS请求最大的body是16兆,有限制,web IDE是希望直接上传文件,希望是能上传文件,

image.png

通常代码文件不会很大,很少超过16兆,百分之九十七九十八都是能满足需求,不排除有些用户工程里面带一些超大的PDF文件或word文件,可能有这种需求,比如上传可能把文件上传变成了分面上传,每片可能不超过16兆,上传一个30兆的文件,每片是四兆,八个并发同时上传等,也是一个用户体验的点。再一点国际化,比如web IDE可能最少先国内中文解决,最少可能英文,比如想进入日本等国际化,国际化能做一些更好的,还有其他更多的,要发挥的想象力了,就是能做的更好的。核心点主要就是三块,排序根据重要性,因为没有安全性,就服务基本上就不是SaaS服务,性能不好基本上体验太差,功能再丰富也没用,只有满足了两点的基础,在功能的丰富性再上再拓展,才是一很好的SaaS服务,才可以针对各种垂直场景做出一站式的web IDE服务。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1月前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
63 1
|
4月前
|
机器学习/深度学习 算法 大数据
【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析
本文提供了2023年MathorCup高校数学建模挑战赛大数据竞赛赛道A的解决方案,涉及基于计算机视觉的坑洼道路检测和识别任务,包括数据预处理、特征提取、模型建立、训练与评估等步骤的Python代码解析。
81 0
【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析
|
5月前
|
存储 数据挖掘 OLAP
阿里云 EMR Serverless StarRocks OLAP 数据分析场景解析
阿里云 E-MapReduce Serverless StarRocks 版是阿里云提供的 Serverless StarRocks 全托管服务,提供高性能、全场景、极速统一的数据分析体验,具备开箱即用、弹性扩展、监控管理、慢 SQL 诊断分析等全生命周期能力。内核 100% 兼容 StarRocks,性能比传统 OLAP 引擎提升 3-5 倍,助力企业高效构建大数据应用。本篇文章对阿里云EMR Serverless StarRocks OLAP 数据分析场景进行解析、存算分离架构升级以及 Trino 兼容,无缝替换介绍。
19208 12
|
缓存 安全 网络安全
2021年中职“网络安全“江西省赛题—A模块解析
2021年中职“网络安全“江西省赛题—A模块解析
387 1
2021年中职“网络安全“江西省赛题—A模块解析
|
5月前
|
运维 数据挖掘 Serverless
深度解析阿里云EMR Serverless StarRocks在OLAP数据分析中的应用场景
阿里云EMR Serverless StarRocks作为一款高性能、全场景覆盖、全托管免运维的OLAP分析引擎,在企业数据分析领域展现出了强大的竞争力和广泛的应用前景。通过其卓越的技术特点、丰富的应用场景以及完善的生态体系支持,EMR Serverless StarRocks正逐步成为企业数字化转型和智能化升级的重要推手。未来随着技术的不断进步和应用场景的不断拓展我们有理由相信EMR Serverless StarRocks将在更多领域发挥重要作用为企业创造更大的价值。
|
6月前
|
运维 网络协议 JavaScript
Serverless 应用引擎产品使用合集之绑定自定义域名是否要确定解析设置
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
7月前
|
XML Java 数据库
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
176 4
|
运维 Java Serverless
深度解析四大主流软件架构模型:单体架构、分布式应用、微服务与Serverless的优缺点及场景应用
深度解析四大主流软件架构模型:单体架构、分布式应用、微服务与Serverless的优缺点及场景应用
1193 0
|
7月前
|
存储 网络协议 Linux
Linux C/C++ 开发(学习笔记九 ):DNS协议与请求的实现
Linux C/C++ 开发(学习笔记九 ):DNS协议与请求的实现
190 0
|
网络协议 测试技术 网络安全
2022年中职“网络安全“江西省赛题解析—B-1:Windows操作系统深入
2022年中职“网络安全“江西省赛题解析—B-1:Windows操作系统深入
164 1

热门文章

最新文章

相关产品

  • 函数计算
  • 推荐镜像

    更多