10x 程序员工作法
郑晔
开源项目 Moco 作者
53432 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
思考框架 (1讲)
10x 程序员工作法
15
15
1.0x
00:00/00:00
登录|注册

32 | 持续交付:有持续集成就够了吗?

部署简化
镜像
基础设施即代码(Infrastructure as code)
工具的发展
开发和运维的融合
生产环境
预生产环境
测试环境
持续集成环境
将部署纳入开发的考量
Docker
DevOps
环境验证
功能验证
构建流水线(Build Pipeline)
不同的环境
环境的重要性
持续集成服务器的发展
书籍《Continuous Delivery》
部署过程的自动化
开发过程的自动化
总结
部署
验证发布包
构建持续交付的基础设施
持续交付的概念
持续集成
持续交付

该思维导图由 AI 生成,仅供参考

你好,我是郑晔。
在前面两讲,我给你讲了开发过程的自动化,将我们的程序打成发布包;然后讲了部署过程的自动化,通过各种工具将发布包部署起来。
有了这些基础,我们就可以考虑在每次开发完之后,将程序打包部署到环境中。开发完就自动打包,然后自动部署,听起来很像持续集成是不是?
关于持续集成,我在专栏里已经讲过两次,分别讨论了“为什么要做持续集成”和“怎么做好持续集成”。但持续集成的讨论只停留在开发环节。
有了前面两讲的准备,我们就可以把这个过程再进一步延伸。聪明的你或许已经听出来了,这次我要讲的主题是持续交付。

持续交付

让持续交付这个概念广为人知的是一本书,Jez Humble 和 Dave Farley 的《持续交付》(Continuous Delivery)。
前面讲持续集成的发展历史时,我提到了 CruiseControl,它是持续集成服务器的鼻祖。因为持续集成的不断发展,2007 年,我的老东家 ThoughtWorks 公司有意以 CruiseControl 为基础,提供企业级服务,于是成立了一个团队,打造一个更好的持续集成服务器,Jez Humble 就是在这个团队中工作的。
同样在这个团队工作的还有一个人,乔梁,他是《持续交付》这本书的中文版译者,而且在这本书出版近十年后,他自己写了《持续交付 2.0》,把自己多年来关于持续交付的新理解整理了进去。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

持续交付是软件开发中的重要概念,旨在让软件随时处于可以部署到生产环境的状态。文章介绍了持续交付的概念及其重要性,以及与DevOps相关的工具和理念。在传统的IT公司中,开发和运维往往是两个独立的职位,而DevOps则提倡将二者融合起来,打破壁垒。持续交付涉及验证发布包和部署两个重要部分,需要关注环境和构建流水线。同时,文章还介绍了配置管理工具如Chef、Puppet、Ansible以及Docker的作用,以及基础设施即代码的理念。这些工具的发展推动了交付定义的变化,从一个发布包转变为一个可以部署的镜像。总的来说,持续交付不仅是一个实践,更是一个涉及组织、文化和工具的完整体系,对软件开发过程具有重要意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《10x 程序员工作法》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(21)

  • 最新
  • 精选
  • 陈斯佳
    对了老师,问您一个题外的问题,就是您觉得运维监控这是一个可以单独发展的职业方向吗?比如像ELK等监控日志分析应用的使用

    作者回复: 评判标准是,有没有人花钱请你做这件事。

    2019-06-14
    19
  • 西西弗与卡夫卡
    持续交付,就是持续向用户交付价值,即刻获得反馈,即时调整,再次交付。再进一步说,持续交付可以是持续交付最大价值,那范围就不仅限于软件,还可以进一步延伸到运营,比如说结合ABTest,自动选择最有效的运营策略,为用户交付最大价值。脑洞一下,终极目标甚至可以是C2C,即Code to Customer

    作者回复: 这个问题还真是我思考过的问题,结合着精益创业的理念,再往前延伸,应该是持续验证,因为精益创业就是在不断验证新的想法。

    2019-03-25
    14
  • Jxin
    分而治之是解决复杂问题的一大利器。持续交互就像重构中小步快走(每次微调后运行测试代码验证),都能保证大工程的稳步前进。同时由于单元小了,所以也灵活了,持续交互可以结合最小产品的理念,以小成本做test,收集数据后,即使调整产品发展方向。

    作者回复: 任务分解,小步快跑,你能看到不同实践的联系,就说明理解了。

    2019-03-25
    10
  • 行者
    我理解的持续交付,是可以快速向用户交付价值;传统的开发方式下,开发、测试、上线,需要较长的流程以及时间,交付是间隔的,用户需要去等待;而通过持续集成,开发有了持续交付的能力,可以今天开发、今天上线,不敢想象。

    作者回复: 持续交付是以自动化为基础的,没有自动化,那还真不敢想象。

    2019-03-25
    7
  • helloworld
    请教老师一个问题:那是不是可以这么理解,现在的开发人员一定要具备进行持续部署时所涉及的技术,例如docker,k8s等?

    作者回复: 没有一定,只是作为一个优秀程序员,最好有完整的知识体系。

    2019-05-05
    4
  • hua168
    老师我问个很low的问题,什么是集成,包括那些环节?😂,它是包括”代码编写-->提交-->构建-->测试-->显示结果”吗,还是文章中提到的CI框中只包括“构建-->测试-->结果”?

    作者回复: 集成,实际上就是把你所有的代码放在一起跑。这里所说的是持续集成,想要做好它,才需要包含那么多环节。图里显示的,只是在 CI 服务器上运行的部分。你可以先回顾前面两篇文章,对持续集成有更多的了解。

    2019-03-26
    4
  • 宝宝太喜欢极客时间了
    持续交付,我的理解就是快速将想法变为实现的能力,结合敏捷开发,提升企业的交付能力。老师,我对持续交付跟DevOps这两个概念一直很模糊,感觉就是一个东西,他们的区别在哪里?

    作者回复: 你可以先看一下文中的解释,DevOps 和持续交付是相辅相成的,二者在部署自动化是重叠的。DevOps 更多关注在 Dev 和 Ops 的融合上,而持续交付则更多关注在产品交付上。

    2019-03-26
    4
  • J.M.Liu
    可不可以说DevOps是为满足持续交付的需求而诞生的啊。

    作者回复: 并不是,二者独立发展,殊途同归。

    2019-04-18
    3
  • 程序员讲道理
    BDD跟单元测试的关系是怎样的?我了解到一些 ruby 团队只使用 rspec同时做验收测试和单元测试

    作者回复: BDD 的关注点是行为(Behavior),所以,一般 BDD 的框架描述方式是 GIVEN...WHEN...THEN。相对而言,它应该用在更高层次的测试中。 但是,在实际情况中,把它用在单元测试上也可以,所以,RSpec 很多团队是同时用在两种测试里的。

    2020-06-24
    2
  • 陈斯佳
    终于理解了持续集成、持续交付和持续部署的区别…… 目前公司还处在持续集成和持续交付的混合阶段,离持续部署还有很大一段距离。不过因为公司比较大,部门众多,管理生产环境的有专门的Unix团队,估计这个持续部署还很难做到

    作者回复: 进一分,有一分的欢喜。

    2019-06-14
    2
收起评论
显示
设置
留言
21
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部