其他分享
首页 > 其他分享> > 即学即会 Serverless | 如何解决 Serverless 应用开发部署的难题?

即学即会 Serverless | 如何解决 Serverless 应用开发部署的难题?

作者:互联网

本文节选自《Serverless 开发速查手册》,关注Serverless 公众回复 手册 即可获得下载链接

作者 | 江昱(阿里云 Serverless 产品经理)

破局:工具链体系匮乏之困

在前篇《即学即会 Serverless | 初识 Serverless》一文中,我们提到 Serverless 正在改变未来软件开发的模式和流程,并被预测将引领云计算的下一个十年,但尽管如此,开发者在选择使用 Serverless 时仍有诸多担忧,这其中最受关注的无疑就是工具链体系的匮乏。

所谓工具链的匮乏:一方面表现在市面上工具链不完善,这导致开发和部署难度大,进而增加成本;另一方面表现在,缺乏相关的工具链在体验层将 Serverless 体验进一步规范,优质工具链的匮乏导致本来就担心被厂商绑定的 Serverless 开发者变得更难与厂商解绑。

2020 年 10 月,中国信息通信研究院发布国内首个《云原生用户调查报告》明确指出在使用 Serverless 架构之前,49% 的用户考虑部署成本,26% 的用户考虑厂商绑定情况,24% 的用户考虑相关工具及完善程度,这些数据背后透露的实际上是:开发者对于完善工具链的强烈需求。

尽管,有一些开发者认为入门 Serverless 架构,通过白屏化的操作相对来说会更容易入门,在一定程度上通过各个云厂商的控制台进行函数的创建、更新,也会更加地方便。但是不可否定的是,Serverless 开发者工具在一定程度上其实有着更为重要的价值和作用,譬如:

若需要实现科学部署,通过某些 CI/CD 平台/工具发布 Serverless 架构的应用,通常是离不开开发者工具的;但是就目前来看,Serverless 领域的开发者工具复杂多样,且诸多功能并不完善,基本表现在:

并没有绝对统一 & 一致的 Serverless 开发者工具,每个厂商都有自己的开发者工具,而且使用形式、行为表现并不相同,这就导致了开发者在开发前的调研、开发中的调试、部署后的运维等多个层面面临很严峻的挑战;

绝大部分的 Serverless 开发者工具更多是资源编排、部署工具,并不能真正意义上称之为开发工具、运维工具,尤其在开发态的调试如何保证线上线下环境的一致性;

如何在运维态可以快速的对业务进行调试;如何更简单的排查错误,定位问题......等方面并没有统一的、完整的方案,这就导致 Serverless 架构的学习成本、使用成本对开发者来说会变的非常高;

综上所述,出现一个可以提升 Serverless 应用开发效能,降低 Serverless 架构使用难度的 Serverless 工具链体系建设,显得尤为重要,也正是因为此,Serverless Devs 应运而生。

Serverless Devs 是一个开源开放的 Serverless 开发者平台,致力于为开发者提供强大的工具链体系。通过该平台,各位开发者不仅可以一键体验多云 Serverless 产品,极速部署 Serverless 项目,还可以在 Serverless 应用全生命周期进行项目的管理,能够非常简单快速的将 Serverless Devs 与其他工具/平台进行结合,进一步提升研发、运维效能。

Serverless Devs 的特点

无厂商锁定:得益于功能的可插拔特性,可以非常简单的支持不同云厂商的项目部署,或者一键部署到不同云平台。目前 Serverless Devs 已经支持了阿里云函数计算、AWS Lambda 、百度智能云函数计算 、华为云函数工作流 、腾讯云云函数等多云的 FaaS 产品;

开源形式建设:项目通过开源代码,开放生态进行建设,开发者可以随时查看和参与 Serverless Devs 开发者工具的贡献,也可以随时随地进行相关组件和应用的贡献。当然,除了这种开源开放的形态,我们也鼓励一些企业级团队,通过 Serverless Registry Model 建设自己的私有 Registry 以定制化某些不便公开的自定义组件;

关于如何快速完成 Serverless Devs 应用开发并发布到 Regsitry 可查阅相关文档:
https://github.com/Serverless-Devs/Serverless-Devs/discussions/439

简单快速上手:通过开放 Serverless Registry 的模型/规范,该项目可以通过应用的模式,为开发者提供多种形式,多种领域以及多种场景的上手案例,帮助开发者快速了解、学习、深入、上手 Serverless 架构,例如新手引导中的 Serverless:Hello World;人工智能:目标检测;传统框架:基于 Django 的博客项目等项目;

场景体验地址:
https://developer.aliyun.com/adc/expo/serverless

功能灵活可插拔:Serverless Devs 开发者工具本身,不具备任何业务能力,所有的业务能力均是通过组件化的形式,进行可插拔式使用,并且每个组件可以根据需要,自定义相对应的命令和功能;开发者可以在一个应用中,选择不同的组件完成对应的业务能力,以满足对不同模块的诉求;

应用全生命周期管理:通过组件化的支持,Serverless Devs 可以在应用的全生命周期发挥重要作用,以阿里云函数计算的 FC 组件为例,开发者可以在项目创建、项目的开发、调试、可观测性等多个层面进行项目的建设和管理;

良好的集成与被集成性:项目具有非常好的集成性与被集成性,可以通过组件化的支持,非常简单的与传统的生态进行有机结合。同时,Serverless Devs 开发者工具也可以非常简单的被集成到海量的自动化流程中,例如 CI/CD 文档中,就举例了与 Github Action 的集成、与 Gitee Go 的集成、与 Jenkins 的集成等平台集成的案例;

总的来说,Serverless Devs 是一个开源开发的 Serverless 领域的工具链项目,它不仅仅表示单纯的某个命令行工具,更在一定程度上指的是一个完整的工具链体系。

社区网址一览(可滑动):

社区官网:http://www.serverless-devs.com/

项目仓库:https://github.com/Serverless-Devs/Serverless-DevsServerlessDesktop

桌面客户端:https://serverlessdevs.resume.net.cn/zh-cn/desktop/index.htmlServerless

应用开发者套件:http://serverless-dk.oss.devsapp.net/docs/tutorialdk/intro/react

Serverless Devs CLI:https://serverlessdevs.resume.net.cn/zh-cn/cli/index.html

Serverless Hub应用中心 :https://serverlesshub.resume.net.cn/#/hubs/special-view

Serverless Devs 的成长之路

Serverless Devs 的设计哲学

Serverless Devs 的模型设计原则,是希望可以通过更加简单、科学、规范的 Serverless 工具链体系,让开发者更专注于业务逻辑,提升 Serverless 应用开发、部署、运维效率。

通过该模型,开发者可以通过一种更灵活、更通用的方法使用不同云厂商以及开源的 Serverless 产品,进而更高效、更简洁、更便利的实现 Serverless 应用管理。在 Serverless Devs 中,通常拥有两个角色:

开源贡献者:开源贡献者将按照 Serverless Package Model 进行组件/应用的开发,并将内容发布到 Serverless Hub 中,即可以被更多人所使用;

Serverless 开发者:通过开发者工具 (包括命令行工具以及桌面端等工具),进行应用的初始化,以及组件的使用;通过开发者工具,将业务按照预期部署到线上。

在这样一个 Serverless Devs 的应用框架上,不难发现可以和其他任何一种模式/生态,具有相似的命名以及模块:

Serverless Hub:类似于一种组件、应用、案例中心;类似于 Docker Hub 等;

Serverless Registry:类似于一种组件、应用的管理工具或者规范模型;类似于 Python 生态中的 Pypi,类似于 Node.js 生态中的 NPM;

下面我们再详细地介绍一下,在 Serverless Hub 中,其实是有两种形态的 Package (组件和应用),同时通过上图也可以看到两个比较明显的词汇:Component 和 Application:

如果说 Serverless 提升了传统应用的开发效能,那么 Serverless Devs 开发者工具就是提升了 Serverless 应用开发的效能。随着时间的发展,Serverless Devs 也从 1.0 版本 到了 2.0 版本。

结语

本篇介绍了 Serverless Devs 的前世今生,实际上,我们一直希望可以通过 Serverless Devs 的工具链模式和思路,让各位通过该平台能够一键体验多云 Serverless 产品,极速部署 Serverless 项目;为应用的开发,传统项目上 Serverless 架构提供巨大的便利和更科学的管理。在下篇文章中,我们会带领各位一起实现 Serverless Devs 的基础入门,十分简单,并会就一些功能案例进行刨析解读,欢迎关注 Serverless 公众号(serverlessdevs)连续订阅该系列。

更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。

标签:Serverless,即会,Devs,开发者,应用,组件,工具,即学
来源: https://www.cnblogs.com/Serverless/p/16070860.html