10x程序员工作法
郑晔
火币网首席架构师,前ThoughtWorks首席咨询师 ,TGO鲲鹏会会员
立即订阅
7975 人已学习
课程目录
已完结 56 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 程序员解决的问题,大多不是程序问题
免费
思考框架 (1讲)
01 | 10x程序员是如何思考的?
以终为始 (11讲)
02 | 以终为始:如何让你的努力不白费?
03 | DoD的价值:你完成了工作,为什么他们还不满意?
04 | 接到需求任务,你要先做哪件事?
05 | 持续集成:集成本身就是写代码的一个环节
06 | 精益创业:产品经理不靠谱,你该怎么办?
07 | 解决了很多技术问题,为什么你依然在“坑”里?
08 | 为什么说做事之前要先进行推演?
09 | 你的工作可以用数字衡量吗?
10 | 迭代0: 启动开发之前,你应该准备什么?
答疑解惑 | 如何管理你的上级?
划重点 | 关于“以终为始”,你要记住的9句话
任务分解 (11讲)
11 | 向埃隆·马斯克学习任务分解
12 | 测试也是程序员的事吗?
13 | 先写测试,就是测试驱动开发吗?
14 | 大师级程序员的工作秘笈
15 | 一起练习:手把手带你分解任务
16 | 为什么你的测试不够好?
17 | 程序员也可以“砍”需求吗?
18 | 需求管理:太多人给你安排任务,怎么办?
19 | 如何用最小的代价做产品?
答疑解惑 | 如何分解一个你不了解的技术任务?
划重点 | 关于“任务分解”,你要重点掌握哪些事?
沟通反馈 (12讲)
20 | 为什么世界和你的理解不一样
21 | 你的代码为谁而写?
22 | 轻量级沟通:你总是在开会吗?
23 | 可视化:一种更为直观的沟通方式
24 | 快速反馈:为什么你们公司总是做不好持续集成?
25 | 开发中的问题一再出现,应该怎么办?
26 | 作为程序员,你也应该聆听用户声音
用户故事 | 站在前人的肩膀上,领取属于你的高效工作秘籍
27 | 尽早暴露问题: 为什么被指责的总是你?
28 | 结构化:写文档也是一种学习方式
答疑解惑 | 持续集成,一条贯穿诸多实践的主线
划重点 | 一次关于“沟通反馈”主题内容的复盘
自动化 (12讲)
加餐 | 你真的了解重构吗?
29 | “懒惰”应该是所有程序员的骄傲
30 | 一个好的项目自动化应该是什么样子的?
31 | 程序员怎么学习运维知识?
32 | 持续交付:有持续集成就够了吗?
33 | 如何做好验收测试?
34 | 你的代码是怎么变混乱的?
35 | 总是在说MVC分层架构,但你真的理解分层吗?
36 | 为什么总有人觉得5万块钱可以做一个淘宝?
37 | 先做好DDD再谈微服务吧,那只是一种部署形式
答疑解惑 | 持续集成、持续交付,然后呢?
划重点 | “自动化”主题的重点内容回顾汇总
综合运用 (7讲)
38 | 新入职一家公司,怎么快速进入工作状态?
39 | 面对遗留系统,你应该这样做
40 | 我们应该如何保持竞争力?
答疑解惑 | 如何在实际工作中推行新观念?
划重点 | “综合运用”主题内容的全盘回顾
总复习 | 重新审视“最佳实践”
总复习 | 重新来“看书”
结束语 (1讲)
结束语 | 少做事,才能更有效地工作
10x程序员工作法
登录|注册

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

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

持续交付

让持续交付这个概念广为人知的是一本书,Jez Humble 和 Dave Farley 的《持续交付》(Continuous Delivery)。
前面讲持续集成的发展历史时,我提到了 CruiseControl,它是持续集成服务器的鼻祖。因为持续集成的不断发展,2007 年,我的老东家 ThoughtWorks 公司有意以 CruiseControl 为基础,提供企业级服务,于是成立了一个团队,打造一个更好的持续集成服务器,Jez Humble 就是在这个团队中工作的。
同样在这个团队工作的还有一个人,乔梁,他是《持续交付》这本书的中文版译者,而且在这本书出版近十年后,他自己写了《持续交付 2.0》,把自己多年来关于持续交付的新理解整理了进去。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《10x程序员工作法》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(14)

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

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

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

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

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

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

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

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

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

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

    2019-05-05
    2
  • 陈斯佳
    终于理解了持续集成、持续交付和持续部署的区别…… 目前公司还处在持续集成和持续交付的混合阶段,离持续部署还有很大一段距离。不过因为公司比较大,部门众多,管理生产环境的有专门的Unix团队,估计这个持续部署还很难做到
    2019-06-14
    1
  • 刘晓林
    可不可以说DevOps是为满足持续交付的需求而诞生的啊。

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

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

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

    2019-03-26
    1
  • 交付作为集成的后续,为达到有效交付的目标,用户能够尽早参与我觉得也是比较重要的一环。文中插图从程序员视角出发,从生产环境获得结果,是否可再做扩展,将用户也作为一个独立节点?形成更加全面的闭环,架起人与人之间互动的桥梁。在公司内部讨论中,谈到过在交付物中引入用户体验收集的模块,提供用户常用反馈功能如图文,这样程序员除了功能、数据等验证外,也第一时间知道用户关注优先解决,原因是发现程序员和用户的关注有时相去甚远,而且在现场没有实施人员时也能很大提高沟通效率,降低编解码误差。

    作者回复: 理想是好的,我也曾经想过怎么把持续交付进一步延伸,比如,怎么把用户反馈纳入其中。想持续做,能够自动化是前提,用户反馈怎么自动化呢,这是一个需要回答的问题。目前这个方面还没有形成完整的体系。

    2019-03-26
    1
  • hua168
    持续集成不是不断集成的意思吗?在极限编程里,不断集成不就是持续集成吗?持续集成不是不断重复集成的环节吗?问题是我连集成是什么,包括什么环节都不懂😰,所以先搞懂什么是集成。

    作者回复: 先回到前面搞懂集成和持续集成,再来看持续交付。

    2019-03-27
  • enjoylearning
    是的,如果要做AB测试,这个持续交付又将怎么做呢,构建pipeline是什么样的。另外持续集成中如果前后端分离是要分两个agent跑,还是就用一个agent比较合适,我好像是倒序看作者的专栏,也不知前面有否讲过,只是看到这篇文章后有此困惑
    2019-03-27
  • 宝宝太喜欢极客时间了
    持续交付,我的理解就是快速将想法变为实现的能力,结合敏捷开发,提升企业的交付能力。老师,我对持续交付跟DevOps这两个概念一直很模糊,感觉就是一个东西,他们的区别在哪里?

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

    2019-03-26
  • like_jun
    按需来的。
    2019-03-25
  • 智超
    早!坚持✊
    2019-03-25
收起评论
14
返回
顶部