写点什么

如何以可组合块的方式重构 CI/CD 管道

  • 2020-04-18
  • 本文字数:1065 字

    阅读完需:约 3 分钟

如何以可组合块的方式重构CI/CD管道

DeliveryConf大会上,VMware 主管工程师Bryan Liles讨论了构建持续集成交付(CI/CD)管道的一系列原则。Liles 建议,应将 CI/CD 视为模式而非 Jenkins 或 Spinnaker 这样的具体实现;需要构建一种平台,它由独立于技术堆栈的可组合部分和可替换组件构成。


演讲一开始,Liles 介绍了会有多少企业按照传统的方式构建 CI/CD 管道,并阐明建立此类管道的目的是实现应用从开发环境到生产环境的迁移。交付过程在本质上就是从源代码管理方获取应用的代码,进而在管道中编译应用,形成工件并打包(bundle)存储在仓库中。最后,管道将打包文件交付给各个环境,例如开发、测试和生产。Liles 指出,如果交付管道看上去非常复杂,那么这意味着技术栈不应该再继续复杂下去了。


在 Liles 看来,工程人员应该将部署管道看成是一些可组合的块和模式,而非仅注重实际使用的 Jenkins 或 Spinnaker 等具体实现。例如,管道中的一部分可以是完成应用构建、运行测试和创建工件的集成块,该部分可以使用 Jenkins 实现,但也支持使用 Circle CI 等其他工具。管道中的另一个块可以部署应用、征求批准和执行数据迁移的交付过程。集成和交付块都具有一些相同的基本组件,例如 Webhook 触发器、工作流、通知和批准等。集成块和交付块是部署管道这一更大的可组合部分中的一部分。



Liles 提出:“必须更多地考虑系统的可组合性。”部署管道应该是一种将应用交付至指定目的地的应用发布“平台即服务”(PaaS)。Liles 建议将部署管道重新定义为可组合的 PaaS,工程人员可轻易更改其中的各个组件。该模式的典型例子就是 Kubernetes。作为构建平台的平台,部署管道可基于 Kubernetes 实现与上述集成块和交付块一样的基本组件,同时支持使用其它各种不同的工具。例如,集成部分可以使用TektonArgo实现触发器、工作流、通知和批准块。


Liles 进而指出,Jenkins、Spinnaker 或 ConcourseCI 之类的工具可用于定义如何构建 CI/CD 管道以及如何使用它们,但应在使用中汲取前车之鉴,避免入坑。由此,他建议应以破旧立新的思维去利用工具:


我们确实需要换种思维去使用各种工具。技术现状驱动我们到达了当前的位置,但这并非我们所需要的高度。我们应该拓展思维,破旧立新。


Liles 最后总结道,工具本身是复杂的,但从生态系统角度看,我们应致力于去构建更小且可组合的工具集。他建议工程人员琢磨一下如何共同改进生态系统,而不是沉溺于如何在现有工具上锦上添花。他认为自己提出的构建方式仅是抛砖引玉,“关注点应是更多地考虑系统中的可组合性。”


原文链接:


Reimagining CI/CD Pipelines as Composable Blocks with Bryan Liles


2020-04-18 09:001955

评论

发布
暂无评论
发现更多内容

Postman如何做接口测试:导入 swagger 接口文档

和牛

测试 Postman

Gartner:云安全面临的三大挑战以及三个对应策略

BeeWorks

如何管理您的知识库?

Geek_da0866

2022 智能云边开源峰会|Kyligence 邀您“云”上相约

Kyligence

人工智能 云原生 边缘计算 开源峰会

家电上云后,智能家居如何构建场景化应用

华为云开发者联盟

云计算 后端 IoT 智能家居

EMAS Serverless搭建《私人云相册》小程序赢中秋好礼

移动研发平台EMAS

小程序 阿里云 Serverless 中秋节 云相册

十年数智求索路,餐饮SaaS头部企业客如云如何走向盈利

ToB行业头条

开源一夏 | 使用 CSS 的仿 GitHub 登录页面

海拥(haiyong.site)

开源 8月月更

SPI:Java的高可扩展利器

华为云开发者联盟

Java 开发

Go-Excelize API源码阅读(十一)—— GetActiveSheetIndex()

Regan Yue

Go 开源 源码刨析 8月日更 8月月更

Web Service 接口怎么测试

和牛

Python 接口 测试 Web Service

前端培训中怎么提升开发技术水平?

小谷哥

我们还需要 SRE 吗?

Bytebase

DevOps SRE developer

LeaRun.Java微服务快速开发平台

力软低代码开发平台

INFINI 产品更新啦 20220815

极限实验室

elasticsearch infini gateway INFINI Labs 新版本/特性发布 INFINI Console

分布式系统架构设计

C++后台开发

数据库 分布式 后端开发 C/C++后台开发 C/C++开发

深度学习公式推导(2):激活函数与偏置

老崔说架构

大数据软件开发哪里的培训比较好

小谷哥

盒马销量预测核心算法的技术演进

阿里技术

大数据 算法

当云走向行业垂直化,企业该如何应对?

BeeWorks

建设医共体,患者有“医”靠!

天翼云开发者社区

EMQX企业版正式上架华为云OSC,助力企业实现云原生MQTT Broker的全生命周期管理

EMQ映云科技

物联网 华为云 mqtt emqx 8月月更

重新定义容器化 Serverless 应用的数据访问

阿里巴巴中间件

云计算 阿里云 Serverless 容器 云原生

java培训班学习后怎样才能找到工作

小谷哥

未来源码丨会写代码的AI开源了!C语言写得比Codex还要好,掌握12种编程语言丨CMU

MobTech袤博科技

c 开源 AI

零基础前端培训学习有用吗

小谷哥

如何维护您的知识库?

Geek_da0866

一文讲透研发,SRE,运维,DevOps 的区别

Bytebase

DevOps SRE dba database

大数据培训中心哪家比较靠谱

小谷哥

政企组织为什么更需要私有化的IM即时通讯平台?

BeeWorks

旅游吗?腾云驾雾的那种

天翼云开发者社区

如何以可组合块的方式重构CI/CD管道_软件工程_Christian Melendez_InfoQ精选文章