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 

相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
12月前
|
数据采集 运维 Serverless
云函数采集架构:Serverless模式下的动态IP与冷启动优化
本文探讨了在Serverless架构中使用云函数进行网页数据采集的挑战与解决方案。针对动态IP、冷启动及目标网站反爬策略等问题,提出了动态代理IP、请求头优化、云函数预热及容错设计等方法。通过网易云音乐歌曲信息采集案例,展示了如何结合Python代码实现高效的数据抓取,包括搜索、歌词与评论的获取。此方案不仅解决了传统采集方式在Serverless环境下的局限,还提升了系统的稳定性和性能。
350 0
|
12月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
1090 69
|
11月前
|
数据采集 运维 监控
Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
随着互联网数据采集需求的增长,传统爬虫架构因固定IP易封禁、资源浪费及扩展性差等问题逐渐显现。本文提出基于Serverless与代理IP技术的新一代爬虫方案,通过动态轮换IP、弹性调度任务等特性,显著提升启动效率、降低成本并增强并发能力。架构图与代码示例详细展示了其工作原理,性能对比数据显示采集成功率从71%提升至92%。行业案例表明,该方案在电商情报与价格对比平台中效果显著,未来有望成为主流趋势。
453 0
Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
613 12
|
人工智能 Cloud Native Serverless
Serverless Devs 官网全新升级,Serverless+AI 重磅来袭
Serverless Devs 官网全新升级,Serverless+AI 重磅来袭
248 3
|
存储 消息中间件 人工智能
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
336 0
|
6月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
688 30
|
7月前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
724 12
|
12月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
1267 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
12月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
942 30

相关产品

  • 函数计算