简介:开发者在选择使用 Serverless 时,仍会有开发和部署困难、厂商锁定等诸多担忧,有没有一种支持 Serverless 应用全生命周期管理的开发者工具,能够简单快速上手并真正帮助我们提升研发、运维的效能的呢?

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

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

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

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

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

  • 通过脚手架,能够快速创建 Serverless 架构的应用;
  • 在开发过程中,通过开发者工具可以进行应用的调试等;
  • 在开发完成之后,通过开发者工具能够将应用一键部署到线上(可能包括多个函数以及相对应的 BaaS 类产品);
  • 项目运维阶段,使用开发者工具进行项目的可观测以及问题定位等;

若需要实现科学部署,通过某些 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 可查阅相关文档:

快速完成 Serverless Devs 应用开发并发布到 Regsitry · Discussion #439 · Serverless-Devs/Serverless-Devs · GitHub

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

场景体验地址:

Serverless Devs 体验场景

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

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

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

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

社区网址一览:

社区官网:Serverless-Devs - Serverless Devs

项目仓库: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:ServerlessDevs Cli

Serverless Hub应用中心:Serverless Devs - Serverless Hub 应用市场

Serverless Devs 的成长之路

  • 2020年10月23日,Serverless 开发者平台 Serverless Devs 正式开源;
  • 2020年11月,Serverless Devs 被 CNCF Landsacpe 收录, 成为国内首个进驻的 Serverless 工具;
  • 2020年11月,入围 InfoQ 评选 2020 年度十大开源新锐项目;同年,Serverless Developer Meetup 首召开,成 Serverless 开发者技术新渠道;
  • 2020年12月,ServerlessDevs 下载次数突破 5000,组件 & 应用累计使用次数突破 1w+;
  • 2021年4月,Serverless Developer Meetup 在上海召开,并正式发布 Serverless Devs 2.0 版本;
  • 2021年7月,Serverless Developer Meetup 在杭州召开,阿里云函数计算团队在会上正式发布端云联调、桌面客户端等功能;
  • 2021年8月,Serverless Devs 下载次数突破 2w+;
  • 2021年10月,在 2021 OpenInfra Days China 会议上,Serverless Devs 带来了《Serverless Devs:Serverless 全生命周期的工具链建设》的主题演讲;
  • 2021年12月,Serverless Developer Meetup 在深圳召开,并尝试性的对外展示了 Serverless Devs Model;

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:

  • Component:指的是组件;是由 Package developer 开发并发布的符合 Serverless Package Model 规范的一段代码,通常这段代码会在应用中被引用,并在 Serverless Devs 开发者工具中被加载,并按照预定的规则进行执行某些动作。例如,将用户的代码部署到 Serverless 平台;将 Serverless 应用进行构建和打包;对 Serverless 应用进行调试等;
  • Application:指的是应用,可以由 Package Developer 公开发布到 Registry,以供更多人学习和使用,例如某位贡献者贡献了一个猫狗识别的案例到 Registry;也可以由 Serverless Developer 开发,例如某人开发了一个人脸识别的应用;通常情况下一个应用可以引用一个或者多个组件,并通过 Serverless Devs 开发者工具部署到 Serverless 平台,例如我开发了一个猫狗识别的应用,在这个应用中引用了 Lambda 组件帮助我将部分业务逻辑部署到 FaaS 平台,同时我也引用了 Website 组件帮助我把前端业务代码部署到对象存储中。

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

结语

本篇介绍了 Serverless Devs 的前世今生,实际上,我们一直希望可以通过 Serverless Devs 的工具链模式和思路,让各位通过该平台能够一键体验多云 Serverless 产品,极速部署 Serverless 项目;为应用的开发,传统项目上 Serverless 架构提供巨大的便利和更科学的管理。

原文链接

本文为阿里云原创内容,未经允许不得转载。

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

  1. 解决 Serverless 落地困难的关键,是给开发者足够的“安全感”

    简介:越来越多的云产品都会向全托管.Serverless 形态演进.当云的产品体系 Serverless 化达到一个临界值,通过函数计算这样的 Serverless 计算服务结合其他 Serverle ...

  2. 我的 Serverless 实战 — Serverless 架构理念 ( 后端服务器发展 | Serverless 与 ServerFul | Serverless 定义 | 架构优缺点 )

    文章目录 一.后端服务器架构发展 二.Serverless 与 ServerFul 三.Serverless 定义 四.Serverless 优缺点 [本文正在参与 "100%有奖 | 我的 ...

  3. Serverless 工程实践 | Serverless 应用优化与调试秘诀

    作者|刘宇 前言:本文将以阿里云函数计算为例,提供了在线调试.本地调试等多种应用优化与调试方案. Serverless 应用调试秘诀 在应用开发过程中,或者应用开发完成,所执行结果不符合预期时,我们要 ...

  4. 重磅 | 阿里开源首个 Serverless 开发者平台 Serverless Devs

    Serverless 从概念提出到应用,已经走过了 8 个年头,开发者对 Serverless 的使用热情不断高涨.为帮助开发者实现一键体验多云产品,极速部署 Serverless 项目,10 月 2 ...

  5. Serverless实战 —— ​​​​​​​Laravel + Serverless Framework 快速创建 CMS 内容管理系统

    Serverless实战 -- Laravel + Serverless Framework 快速创建 CMS 内容管理系统 作者: Tabor 今天,为大家带来一篇 Laravel + Server ...

  6. Serverless 实战 —— Serverless 架构揭秘与静态网站部署实战

    Serverless 架构揭秘与静态网站部署实战 讲师简介 陈涛 Serverless Framework 社区专家 参与 Serverless 社区及开源的相关研发工作.拥有丰富前端.JavaScr ...

  7. 应用 Serverless 化,让业务开发心无旁骛

    我们希望让用户做得更少而收获更多,通过Serverless化,用云就像用电一样简单."张建锋表示,Serverless 让云计算从一种资源真正变成一种能力,未来云将全面 Serverless ...

  8. 一次吃透Serverless技术:Serverless的模式+技术前景,终生受益

    Serverless技术 Serverless的模式 回顾软件技术发展的历史,我们会发现"抽象.分解.集成.复用"的主题贯穿始终,行业的每一次更新换代都伴随着更高程度的软件服务模式 ...

  9. Serverless 初体验:快速开发与部署一个Hello World(Java版)

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 昨天被阿里云的这个酷炫大屏吸引了! 我等85后开发者居然 ...

最新文章

  1. 为什么2100万个BTC发行总量少了0.0231?
  2. 【探路者】贪吃蛇β发布展示(视频展示)
  3. fastjson字段改名/设置别名
  4. java 抽象类 final_final/抽象类/interface
  5. Q106:Linux系统下安装编译PBRT-V3
  6. 未来教育计算机三级课后题答案,全国计算机三级网络技术课后题答案(2016.3 未来教育).docx...
  7. 阅读笔记-游戏开发中的人工智能-第6章-基本路径寻找及航点应用
  8. linux中swap的权限,有关 Linux Swap
  9. 越客汽车美容管理软件
  10. java 反射 protected_通过Java反射机制访问private,protected变量和方法
  11. flink生成Watermark之WatermarkStrategy
  12. 分布式系统论文精读3:容错虚拟机
  13. 关于“华为”的大数据分析
  14. 华为战略:关于战略沙盘的几点散谈
  15. 用计算机外接燃气流量计检查什么,燃气流量计,你知道其中几种
  16. html里top是向下,css left right top bottom定位
  17. Golang 无法下载依赖解决方案 unrecognized import path golang.org/x/net
  18. 《你好,数智新世界》系列报道丨对话云徙包志刚:逐梦营销数字化一哥
  19. 推荐序——《逆袭大学》连载
  20. Linux命令之lz4命令

热门文章

  1. js for循环执行顺序
  2. Pytorch构建普通的BP神经网络
  3. vscode微信小程序插件配置
  4. null写在==的前面和后面有什么区别
  5. stm32专题十六:IIC(二)stm32 IIC通讯过程 标志位
  6. UI、UE和UX三者之间的区别
  7. 股票数据接口level2使用技巧分享!
  8. 怦然心栋-冲刺日志(第3天)
  9. python isdigit和isnumeric_python字符串isdigit、isnumeric、isdecimal区别
  10. 单片机温度检测高温报警系统 汇编语言