Serverless Devs 重大更新,基于 Serverless 架构的 CI/CD 框架:Serverless-cd

简介: 近日,Serverless 开发者平台 Serverless Devs 重磅发布基于 Serverless 架构的轻量级 CI/CD 框架——Serverless-cd。Serverless-cd 是一款运行在 Serverless 架构上的功能强大而灵活,安全,低成本的CI/CD开源框架。

作者:丹坤


近日,Serverless 开发者平台 Serverless Devs 重磅发布基于 Serverless 架构的轻量级 CI/CD 框架——Serverless-cd。Serverless-cd 是一款运行在 Serverless 架构上的功能强大而灵活,安全,低成本的CI/CD开源框架。该框架基于 Serverless Devs 开发者工具打造,通过 Serverless-cd 开发者可以快速构建企业内部应用管理 PaaS 平台。


开发者更想关注业务价值的创造


Serverless Devs 是 CNCF 沙箱孵化项目,2020 年由阿里云开源,它是一个开源开放的 Serverless 开发者平台,Serverless Devs 也是业内首个支持主流 Serverless 服务 / 框架的云原生全生命周期管理的平台,致力于为开发者打造 Serverless 应用开发一站式服务,帮助解决目前的工具链之困,让开发者一键体验多云产品,极速部署 Serverless 项目。


Serverless Devs 项目为应用的开发,调试,部署,运维,监控提供全生命周期的解决方案。在实际使用中,应用部署和交付对于开发者来说仍然是一个难题。开发者希望更专注于应用的开发和价值的创造——也就是关注代码编写和应用的构建,而非应用部署和交付。


在 Serverless-cd 项目发布之前,Serverless Devs 项目通过集成的方式,集成了主流的 CI/CD 工具,如 Jenkins、Github、Gitlab 等:


https://github.com/Serverless-Devs/cicd


但使用这些传统的 CI/CD 工具一般会面临如下几个问题:


  1. 资源利用率低:需要提前准备构建机器,在没有构建任务时,机器资源浪费;
  2. 任务排队:如果资源准备不充足,在业务构建的高峰期间, 任务排队时间过长;
  3. 隔离性差:如果某个任务执行过程中消耗大量计算/存储资源,导致其他任务失败;
  4. 安全问题:
  1. 使用平台提供的CICD服务:代码和构建机器不在同一个网络环境,不得不开放公网访问,引起安全问题。
  2. ECS虚机部署:多个应用同时在一个实例构建,某个恶意应用可以访问其他的应用的代码


CI/CD 流水线的 2个特点


CI/CD 流水线有两个显著的特点:


  1. 事件驱动


无论是接收 Webhook 自动触发,还是调用 Open Api 手动触发,对于 CICD 系统来说都是被动接收指令进行消费


  1. 业务明显波峰波谷


触发 CI/CD 构建的高峰一般在上班的时间段中,下班后以及晚上构建任务比较少。同时有些任务执行非常耗时,有些任务又需要大量的 CPU&内存资源,很难提前进行有效的容量预估。


  • 机器资源准备过少:由于资源不足导致任务执行失败,或者多个任务进行资源抢占,一直无法执行。
  • 机器资源准备过多:无法充分利用,造成资源闲置浪费。 


基于 Serverless 架构的 CI/CD 优势


在 Serverless 架构下,CI/CD 可以具备以下优势


  1. 自动弹性


Serverless 平台会为每个构建任务分配一个全新的实例,保证每个任务之间互不影响。再也不用担心资源不足导致任务失败,也避免了由于资源不足导致任务一直排不上队的情况。


  1. 按价值付费


在业务波谷(晚上或者下班后)期,只有少量甚至没有任务执行,资源就出现了闲置和浪费。Serverless 的理念是帮助客户按实际产生的价值付费,只有实实在在的发生了构建行为,才会产生费用。


  1. 免运维


Serverless 弹性是按照请求进行水平扩容的,开发者无需关注底层资源调度和运维的工作,可以心无旁骛的实现业务开发和价值创造。


Serverless-cd 技术架构


Serverless-cd 是完全遵循 Serverless 架构最佳实践,在规范和生态层面参考 Github Action 的实现。下面是 Serverless-cd 部署 Serverless Devs 应用的一段 YAML:


name: "Deploy Express application to FC"
steps:
  - run: npm i @serverless-devs/s -g --registry=https://registry.npmmirror.com
  - run: s -v
  - run: echo ${{secrets.ALIYUN_ACCOUNTID}}
  - run: echo ${{secrets.ALIYUN_AK}}
  - run: echo ${{secrets.ALIYUN_SK}}
  - run: s config add --AccountID ${{secrets.ALIYUN_ACCOUNTID}}  --AccessKeyID ${{secrets.SIMPLE_ALIYUN_AK}}  --AccessKeySecret ${{secrets.SIMPLE_ALIYUN_SK}} -a default -f
  - run: s deploy --use-local -y


Serverless-cd 采用的是经典的 Master Worker 模型,采用事件驱动的架构,整体的架构如下图:


1.png


触发方式


触发器承担事件驱动中的生产者的角色,Serveless-cd 暂时提供了三种触发方式:


  1. 通过 Webhook 自动触发


开发者可以配置对应的触发条件:比如 Push 到 Master 分支,发起 Merge Request。这是一种非常敏捷的开发和交付的方式。


  1. 通过 Open api 触发


Serverless-cd 平台的所有的能力都提供开放了 Open api。以便开发者更好的构建企业内部的 PaaS 平台。


  1. 通过 CLI 触发


从技术的角度来看 Serverless Devs 本质是一个 CLI 工作,提供了组件化的能力,所谓的组件化也就是通过热更新的机制,让开发者根据自己的需求进行拓展。Serverless-cd 通过自定义组件,让开发者可以通过通过命令行直接操作。


当然我们也在计划接入更多的触发类型,比如 cloudevents 触发, 定时触发等


Serverless(FaaS) 平台


FaaS 平台是整个平台的核心部分,承担事件驱动中的消费者角色,采用的是经典的 Master Worker 模型。


  • Master Worker 模型在 Serverless 架构的优势


传统的 Master Woker 部署,为了保证 Master 节点的高可用,需要部署三个节点搭配负载均衡以及健康检查,来保证 Master 节点高可用。在 Serverless 架构中,实例会根据请求自动弹性扩容,Master 节点天然具备高可用能力,无论在可靠性,还是灵活性都有较大的优势


  • Master 函数作用


Master 函数本质是一个 HTTP 类型函数,作为整体流量的入口,同时也是整个系统的大脑,承担着非常重要职责。


  1. 安全保障
  • 公网密钥校验
    Master 暴露的 URL 地址是可以公网访问的,为了防范恶意请求,Serverless-cd 系统在下发 URL 的同时也会下发签名规则。如果是恶意的请求,就无法通过校验,来保证系统的安全性
  • VPC 绑定也支持绑定VPC环境,代码仓库和serverless-cd 服务绑定在同一个VPC环境,通过Webhook触发。公网用户无法直接访问,从网络上保证了绝对的安全


  1. 过滤请求


我们每天在 Git Repository 会触发各种事件,比如新建 ISSUE,PUSH 代码,发起 Merge Request 等。这些动作都会通过 Webhook 触发,开发者可以配置规则过滤相关事件。下面是一个示例:代表在 GitHub 平台提交到 Master 的代码才会触发


triggers:
  github:
    events:
      - eventName: "push"
        filter: 'body.ref in ["refs/heads/master"]'


  1. 路由转发


Master 函数负责将请求分发给 Worker 函数,Worker 函数所有的行为都由 Master 函数控制


  • Worker 函数作用


Worker 函数本质是一个事件(Event)函数,只和 Master 函数通信,唯一的职责是处理 Pipeline,可以长时间运行。


自定义 Pipeline


Serverless-cd 支持三种方式自定义 Pipeline:


  • shell 脚本


shell 脚本是最容易理解也是使用最广泛的


name: "shell example"
steps:
  - run: echo Hello world


  • zx 脚本


google/zx 允许开发者通过 javascript 语法来编写您的 Shell 脚本


name: "zx example"
steps:
  - script: 'const listFile = await $`ls -la`; console.log(listFile)',


  • 使用自定义应用(NPM Package)进行扩展


Serverless-cd 也支持封装通用的 NPM 包进行扩展:比如钉钉通知,企业微信通知,OSS 文件上传等通用能力,都可以通过自定义应用扩展。自定义应用本质是发布在 NPM 仓库的包。


name: "zx example"
steps:
  - run: @serverless-cd/dingding


快速体验


提前准备


Serverless-cd 部署完全是基于云进行,依赖相关云产品也是 Serverless 化。


  • 函数计算 FC:整个系统的计算能力运行在 FC 上
  • 日志服务 SLS:分布式日志存储服务,更好的定位和发现问题
  • 对象存储 OSS:用于存储日志信息
  • 表格存储 Tablestore: 应用和任务的云数据信息存储 


本地部署


  1. 下载安装 Serverless Devs:npm install @serverlesss-devs -g (版本必须大于2.1.7),详细操作引导请参考 Serverless Devs 安装文档
  2. 配置密匙信息:s config add, 详细操作引导请参考配置阿里云秘钥
  3. 初始化项目:s init serverless-cd
  4. 进入项目并部署:cd serverless-cd && s deploy


Serverless-cd RoadMap


2.jpeg


开源共建


Serverless-cd 是业界首个基于 Serverless 架构的 CI/CD 的探索,欢迎大家关注我们的开源地址。Serverless-cd 刚刚开源,还有大量的细节和工作,期待与更多开发者一起共建 Serevrless 生态,让开发者可以心无旁骛的专注业务开发和价值创造。


PS: Serverless 给前端带来了一片崭新的天地,笔者是一名前端开发者同学,在此呼吁更多前端同学可以一起共建 Serverless 生态。


3.png


作者介绍


袁坤(花名:丹坤),阿里云智能云原生前端技术专家,Serverless Devs 开发者工具 maintainer


相关链接


[1] 事件驱动:

https://www.tibco.com/zh-hans/reference-center/what-is-event-driven-architecture


[2] cloudevents

https://cloudevents.io/


[3] google/zx

https://github.com/google/zx


[4] 函数计算 FC

https://fcnext.console.aliyun.com/overview


[5] 日志服务 SLS

https://sls.console.aliyun.com/


[6] 对象存储 OSS

https://oss.console.aliyun.com/


[7] 表格存储 Tablestore

https://otsnext.console.aliyun.com/


[8] Serverless Devs 安装文档

https://docs.serverless-devs.com/serverless-devs/install


[9] 配置阿里云秘钥

https://docs.serverless-devs.com/serverless-devs/command/config#config-add-%E5%91%BD%E4%BB%A4


[10] Serverless-cd

https://github.com/Serverless-Devs/serverless-cd


[11] 开源地址:

https://github.com/Serverless-Devs/serverless-cd 

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
5月前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
422 6
|
11月前
|
人工智能 自然语言处理 数据可视化
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
|
11月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
1040 69
|
7月前
|
人工智能 自然语言处理 JavaScript
Github又一AI黑科技项目,打造全栈架构,只需一个统一框架?
Motia 是一款现代化后端框架,融合 API 接口、后台任务、事件系统与 AI Agent,支持 JavaScript、TypeScript、Python 多语言协同开发。它提供可视化 Workbench、自动观测追踪、零配置部署等功能,帮助开发者高效构建事件驱动的工作流,显著降低部署与运维成本,提升 AI 项目落地效率。
659 0
|
机器学习/深度学习 安全 算法
十大主流联邦学习框架:技术特性、架构分析与对比研究
联邦学习(FL)是保障数据隐私的分布式模型训练关键技术。业界开发了多种开源和商业框架,如TensorFlow Federated、PySyft、NVFlare、FATE、Flower等,支持模型训练、数据安全、通信协议等功能。这些框架在灵活性、易用性、安全性和扩展性方面各有特色,适用于不同应用场景。选择合适的框架需综合考虑开源与商业、数据分区支持、安全性、易用性和技术生态集成等因素。联邦学习已在医疗、金融等领域广泛应用,选择适配具体需求的框架对实现最优模型性能至关重要。
2520 79
十大主流联邦学习框架:技术特性、架构分析与对比研究
|
10月前
|
Java 开发者 Spring
Spring框架 - 深度揭秘Spring框架的基础架构与工作原理
所以,当你进入这个Spring的世界,看似一片混乱,但细看之下,你会发现这里有个牢固的结构支撑,一切皆有可能。不论你要建设的是一座宏大的城堡,还是个小巧的花园,只要你的工具箱里有Spring,你就能轻松搞定。
403 9
|
10月前
|
数据采集 运维 监控
Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
随着互联网数据采集需求的增长,传统爬虫架构因固定IP易封禁、资源浪费及扩展性差等问题逐渐显现。本文提出基于Serverless与代理IP技术的新一代爬虫方案,通过动态轮换IP、弹性调度任务等特性,显著提升启动效率、降低成本并增强并发能力。架构图与代码示例详细展示了其工作原理,性能对比数据显示采集成功率从71%提升至92%。行业案例表明,该方案在电商情报与价格对比平台中效果显著,未来有望成为主流趋势。
428 0
Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
|
11月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
591 12
|
监控 安全 Cloud Native
企业网络架构安全持续增强框架
企业网络架构安全评估与防护体系构建需采用分层防御、动态适应、主动治理的方法。通过系统化的实施框架,涵盖分层安全架构(核心、基础、边界、终端、治理层)和动态安全能力集成(持续监控、自动化响应、自适应防护)。关键步骤包括系统性风险评估、零信任网络重构、纵深防御技术选型及云原生安全集成。最终形成韧性安全架构,实现从被动防御到主动免疫的转变,确保安全投入与业务创新的平衡。
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。

相关产品

  • 函数计算