写点什么

如何以可组合块的方式重构 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:001984

评论

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

从一盏路灯,看亿万级联接的智能之路

华为云开发者联盟

人工智能 物联网 智能设备 华为云

MySQL性能优化(五):为什么查询速度这么慢

xcbeyond

MySQL 查询优化 MySQL性能优化

MySQL性能优化(七):MySQL执行计划,真的很重要,来一起学习吧

xcbeyond

MySQL MySQL性能优化 执行计划

案例解析丨金蝶K/3 Wise接入华为云RDS数据库SQL Server

华为云开发者联盟

MySQL 数据库 Serverless 数据 华为云

Spring循环依赖及解决方式

张sir

Java spring 循环依赖

HashMap学习总结

大刘

hashmap hash

MySQL性能优化(四):如何高效正确的使用索引

xcbeyond

MySQL 索引 MySQL性能优化

未来的智慧城市:未来的城市生活愿景

网站,小程序,APP开发定制

分布式存储系统doris

Thrine

你与30W奖金只差一个 Apache Flink 极客挑战赛的报名

Apache Flink

flink

第6周总结

andy

天元MegEngine深度学习框架贡献者计划全面启动!

flashrunrun

人工智能 学习 开源 AI

路过,凌晨2点的南京

小天同学

总结 思考 个人感悟 夜归人

java 后端博客系统文章系统——No5

猿灯塔

Java

SaaS是「包治百病」的良药吗?

ToB行业头条

第6周课后练习-请简述CAP原理

Dawn

极客大学架构师训练营

数据结构学习心得

程李文华

MySQL性能优化(六):常见优化SQL的技巧

xcbeyond

MySQL MySQL性能优化 SQL优化 优化技巧

课程总结

Thrine

开源数据交换(client)

李孟聊AI

Java 大数据 flink spark 数据交换

博睿宏远获颁“2020开发与技术企业服务奖”

博睿数据

运维自动化 开发工具 博睿宏远

没错,用三方 Github 做授权登录就是这么简单!(OAuth2.0实战)

程序员小富

Java GitHub oauth2.0

第6周作业

andy

MySQL 连接查询超全详解

X先生

MySQL 数据库

海南七星彩网站源码结算功能开发

网站,小程序,APP开发定制

MySQL 三万字精华总结 + 面试100 问,和面试官扯皮绰绰有余(收藏系列)

大头星

Java MySQL 面试

再强调一遍, 我为什么不建议大家接外包干私活?

非著名程序员

程序员 外包 提升认知 接私活

如何在 3 个小时内完成一周的工作

escray

JDK1.8新特性(一):JDK1.8究竟有哪些新特性呢

xcbeyond

jdk8 新特性 JDK1.8新特性

指数 | 2020年6月北京BGP机房网络质量评测报告

博睿数据

评测 博睿宏远 指数

详解区块链应用市场与落地应用现状

CECBC

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