重磅发布 | Serverless 应用中心:Serverless 应用全生命周期管理平台
作者:江昱|阿里云 Serverless 产品经理
随着 Serverless 架构的不断普及与应用,Serverless 工具链体系的匮乏、更新/部署流程复杂、资源零散以及管理难度大等问题也随之显露。尽管 2020 年 11 月,Serverless Devs 开发者工具的开源已经在一定程度上解决了工具链体系匮乏带来的部分问题,但是开发者在实际工作中,以应用为中心,对 Serverless 架构进行整体的运维操作、对资源进行整体的管理行为,依旧面临着挑战。于是,建设一个可以帮助开发者在 Serverless 应用全生命周期发挥作用的应用管理平台就显得尤为重要。
2022 年 5 月 9 日,历经 10 个月打磨和测试,Serverless 应用中心正式上线。
这就是 Serverless 应用平台
Serverless 应用中心的发布,一方面希望通过与 Serverless Devs 工具链的联动,进一步实现和完善 Serverless 应用全生命周期管理能力,另一方面也希望通过 Serverless 应用中心可以帮助开发者,更快速的体验 Serverless 架构,更简单的上手和使用 Serverless 架构,更科学和直观的管理 Serverless 应用。
与此同时,Serverless 应用中心将会是 “Serverless On Serverless” 的一次尝试,不仅作为新能力为开发者们提供更多的支持和便利,也将成为支持海量用户使用 Serverless 架构,海量 Serverless 应用部署的,基于 Serverless 架构的最佳实践。
Serverless 应用中心的目标
Serverless 应用中心,作为 Serverless 应用全生命周期管理平台,在一定程度上承载了几个重要的责任:
- 让开发者,可以通过白屏化操作,更简单、更方便、更快速的体验和上手 Serverless 应用;
- 让 Serverless 应用,可以以一种更为科学、安全与稳定的方法,进行开发、创建、更新以及运维、迭代等;
- 将传统的资源以应用的维度进行聚合、管理,可以让开发者真正意义上聚焦业务,聚焦应用,而不再是零散在不同产品页面上的资源;
所以,Serverless 应用中心的初期目标,也就变得更为简单和纯粹:易用与好用。
一步开始 Serverless 之旅
Serverless 应用中心将会大大降低用户在 Serverless 应用 OnBoarding 过程中的上手复杂度,通过白屏化的操作,开发者可以通过简单的配置,快速创建出相对复杂的应用案例,而这些应用案例将会作为二次开发、学习和体验的重要参考。
如视频所示,用户只需要在应用页面中,找到合适的应用点击创建按钮,即可快速地进行应用的创建,应用创建完成之后会有相关的测试域名可供体验。
目前应用中心已经提供了包括商城案例、音视频处理、Web 框架等近 5 个分类的超 20 款热门应用的快速体验,无论是 Django、Express、Flask、SpringBoot 等传统框架的一键部署,还是 Zblog、Wordpress 等博客、内容管理系统的快速创建和使用,再或者是 CDN 的备源、一键创建网盘/云桌面、视频转码/切片/压缩的极速体验,Serverless 应用中心都可以帮助开发者一步开始 Serverless 之旅。
与工具结合的 1 到 n
除了快速创建模板应用,开发者也可以选择通过 Github 等代码仓库进行项目创建。
如视频所示,当开发者选择通过 Github 代码仓库进行项目的创建之后,Serverless 应用中心不仅会创建应用本身,还会将应用代码放到指定的代码仓库中,这样开发者就可以基于该案例/模板,进行项目的二次开发等。
值得一提的是:
- 所有基于 Serverless 应用中心创建的应用,都是符合 Serverless Devs 规范的应用,即开发者可以通过 Serverless Devs 开发者工具对应用进行开发、调试、部署等相关操作;
例如开发者 Clone 放在指定仓库的应用,在本地进行开发和多模调试(本地调试、端云联调、云端调试等),完成之后可以通过将代码推送到代码仓库或者创建 Release,实现业务的更新。
- Serverless 应用中心不仅可以快速创建模板应用,通过案例应用进行参考和二次开发,还可以直接导入已有的,且符合 Serverless Devs 规范的应用,将已有的应用托管到应用中心,进而体验 Serverless 应用中心的相关功能。
以应用维度的资源管理
众所周知,Serverless 应用往往会涉及到诸多的产品,例如数据库资源、消息中间件资源、对象存储、日志服务等资源,换句话来说,一个完整的 Serverless 应用,通常都是 FaaS 产品与诸多的 BaaS 有机结合,因此,Serverless 的用户往往会面临着管理诸多资源的问题,而这些管理的资源往往又在不同的产品页面,对后期的管理、运维等都带来的极大的不便,不小得复杂度。
如下图所示,Serverless 应用中心将会以应用维度进行资源的展示和管理:
通过以应用维度的创建、更新等操作,通过以应用维度的资源展示与管理,Serverless 应用中心将原本分散的资源进行了进一步抽象,通过应用维度使得开发者可以更清晰、直观地对自身应用进行运维、管理等。
实现
正所谓敢于自我尝试,才有可能服务好更多开发者,在阿里巴巴内部,尽管已经有大量业务采用 Serverless 架构实现,但是,在我们眼中依旧不够 “典型”,如何 “Serverless On Serverless”,让 Serverless 架构不仅仅可以在内部有大量应用,服务其他行业/业务,也要让 Serverless 架构可以为团队自身创造更多的价值,于是,Serverless 应用中心就成为了一个出生在 Serverless 架构,成长在 Serverless 架构的云原生应用。
Serverless 应用中心,基于 Serverless 架构自身的极致弹性特点,通过 FaaS 产品与 BaaS 产品的有机结合,花费了极少的时间和代价,构建出了一套可用性极高,费用极低的高性价比,高可用的后台服务。
如上图所示,通过 HTTP 触发器(API 网关),基础业务函数将会接收用户在客户端发起的请求,以及 Github 等代码仓库送来的 WebSockets 通知,对这些信息进行基础的处理(包括不限于权限鉴定、身份认证等相关操作),然后通过消息中间件(部分事件并不会通过消息中间件),将不同的事件送达到不同的业务函数中,并进行业务的处理,如果有创建、更新等部署相关事件,则会进一步的下发到部署函数中,进行业务的部署,在整个流程中,会不断的有元数据、缓存数据、日志信息等通过 Proxy 模块,存储到对应的 BaaS 产品中。
在整个项目构建的过程中,业务同学只需要设计好整体架构,以及对相关的业务函数进行开发和部署即可,项目中的 BaaS 产品的运维、FaaS 产品的弹性,均由平台实现和负责,一方面可以让开发的同学付出更多的精力在更具价值的业务逻辑之上,另一方面也可以大大提升业务的研发效能,加快业务创新迭代效率,缩短项目上线发布周期。
当然,关于 Serverless 应用中心,如何实现 “Serverless On Serverless” 这个部分,我们会在之后的技术分享和文章中进行更为详细的分享。
Roadmap
尽管 Serverless 应用中心已经发布了 Beta 版本,但是仍然存在一定的不足,目前相关的研发同学也正在不断的完善和优化中。当然,我们还有很多功能,等待更新和进一步完善,包括不限于:
应用创建:
- 1.支持更多代码仓库:
- Gitee
- Gitlab
- Codeup
- 2.支持更多的触发方案:
- Github Action 触发
- 云效触发
- Jenkins 触发
应用管理:
1.应用删除能力
2.应用维度监控与告警能力
3.应用维度的资源编辑能力
4.在线应用编辑能力
5.Serverless Devs 开发者工具与应用中心联动能力
另外,对正在体验或者已经体验了应用中心的同学,也欢迎及时和我们反馈更多的意见和看法,可以通过留言或者填写我们的
总结
Serverless 架构正在不断发展,从开发者角度出发的工具和平台也逐渐的丰富起来,Serverless 应用中心作为 Serverless 应用全生命周期管理平台,采用 “Serverless On Serverless” 的做法,不仅仅希望通过易用和好用帮助开发者快速体验 Serverless 架构,从 0 到 1 再到 n 的将自身应用部署到 Serverless 架构,也希望开发者可以整整意义上以应用维度对 Serverless 相关资源进行管理,对 Serverless 应用进行操作。
作为 Serverless 应用全生命周期管理平台,Serverless 应用中心也正在通过和广大的业务团队,开发者们,一同努力建设 “来自用户,为了用户,服务用户” 的 Serverless 应用管理平台。
本文为阿里云原创内容,未经允许不得转载。