大家好,我是王圣松,个人介绍过好多次,这里就不多讲了。
在2021年年初时,我上架了一本掘金小册 —— 《从 0 到 1 实现一套 CI/CD 流程》。这本小册从想法到落地历经了1年时间,前后2轮的产出,上百人参与内测,最终上架掘金。那么在这里,我与大家分享下我的这本小册的诞生历程。
前世内容
简单介绍下背景。2019年,团队做了个基于 Kubernetes 的 CI/CD 平台,包含了持续构建,持续部署,流水线,制品库等功能。
2020年中旬,张仁阳老师找到我,问我是否可以给珠峰出一份 CI/CD 的训练营。故事就从这里开始了。
那时候北京碰上了新发地疫情,团队居家办公。我就有了一部分额外的时间可以写内容。当时内容只有一期:用 Jenkins + Gitlab 做CI, Ansible 做CD部署。Nexus 做镜像库。第一期顶着加班的压力,每天写到凌晨,最后写了1个月左右。
开营后,有上百名同学前来报名参加。他们大多都是所在公司的高级前端开发工程师,有很大一部分还来自于百度 滴滴等大厂。
当时开始之前我还做了个问卷,调查了下他们之中对于 CI/CD 工具链的了解情况。一共回收了163份问卷。看了下数据,有实践过 Docker 的同学,31个人。实践过Kubernetes的同学,只有1个人。
这个数量说多不多,说少也不少,对于前端而言已经很可以了。一期结束时,浏览量达到了5K多,其中还有一部分同学实践后又写了文章反馈了出来。
一期的积极反馈激励了我,同时张老师也在9月份咨询我出二期的事情,我毫不犹豫地接了下来。二期内容只有 Kubernetes 部分。与其说是 CICD 训练营二期,不如直接说是 CD 训练营。同时二期准备的时间长一些,长达2个月左右。
想法
在二期快要结束时,张老师问我是否有兴趣出一本小册,从那刻起我开始思考这个事情。经历了思想斗争后,决定申请一次试试。
通过掘金的小册作者申请表,我提交了申请信息。官方人员的反馈也很快,当日下午就拿到了小册写作权限。这里再一次附上一次小册的申请问卷:wj.qq.com/s2/7104567/…
改造 & 合并
因为一二期在编写时没有考虑到那么多,所以在设计时也没有连贯起来,导致2期内容割裂比较严重,于是考虑合并后要做改造。但是改造和合并的成本还是比较大的。
具体做了以下几个改造:
- 砍掉一期的
Ansible,SSH部署,替换成后面的Kubernetes - 砍掉了
Docker in Docker。 Git源换成了Gitee- 一二期合并
Ansible 砍掉是因为已经有Kubernetes来替代Ansible部署的地位,且 Ansible在第一期也只是拿来批量操作服务,所以意义不大于是砍掉。
砍掉 Docker in Docker 则是因为安全漏洞问题,且这种固定服务也适合去原生部署。所以将 Jenkins 通过原生部署的方式部署在了机器上。
Git 源的更换主要出自于成本问题。 Gitlab 耗费资源大,部署成本也大。且目标只是学习 Git 在 CICD 中的作用,与平台的相关性不大。所以换成了 Gitee 免费版。
对于内容的改造具体只有这么多。除此之外,还做了一些内容组织结构方面的改造:
优化单篇文章的传播和独立性
独立性是需要考虑和优化的。在流程性的小册中,往往某一块中间的知识或篇幅,会严重依赖前面的前序知识。这样很难对单篇文章进行传播。传播出去,读者也会也会感到阅读晦涩。
所以在设计目录时,我尽量将流程打散为概念,将总结和流程串联放在最后。这样的好处是便于读者可以断点续学,也利于单篇幅内容的传播和推广。
当然,为了最大力度包容小册读者,内容也加了很多对基础知识的解释和叙述。例如对服务发现的解释,对灰度发布和滚动发布的解释。这样会最大力度照顾到大部分读者,让读者读起来更加顺畅,内容也会更友好。
优化标题
即使是渐进式内容的风格,标题友好也可以助于理解。下图是灰度发布和滚动发布的标题改造对比。标题加入了一些叙述性的语言,可以简洁解释学习这篇章节的收获和好处,可以激励读者学习的兴趣。
学习灰度发布,滚动发布的作用是什么呢?是为了解决发布部署服务时停机不可用的问题。那么将这个优点通俗解释放在标题上,读者会产生兴趣引发阅读。
读者来学习这部分知识,有一部分是从头到尾学习,则还有一部分是只学习其中一小块难点和不理解的地方。例如灰度滚动发布,健康度探针 DNS。标题写清楚后,抓住这部分读者痛点,也会激励这一部分读者阅读。
问题驱动
大家也可以发现在这本小册中,学习可以是渐进式的。例如你学完了集成 Jenkins + Nexus + Docker 后,使用SSH也可以去部署你自己的服务,只是不如K8S体验和性能好。所以,每一章的学习其实都是在解决前面知识的一些不足和漏洞。
我们在第一个改造中将流程打散为概念后,可以加入当前篇幅要解决的痛点和问题,将会更利于学习和理解。例如在 ConfigMap 这一章,先写出概念解决的问题,再写概念的定位和含义,读者会对要学习的概念更清晰理解更深刻。
编委会评审
掘金的编委会审核有3轮。在申请时、大体内容确定后、最后全部内容完成各有一轮。整体流程2-3周,届时会有专人对接。这里就不过多叙述
分成
贴一条优弧的朋友圈
总结
在写作时,经历过最多的感受就是无助。担心如果上不了架怎么办?如果烂尾了怎么办?但是好在咬牙坚持了下来。当然结局也很美好。
其他的我也不多写了,中间还有很多故事在其中。欢迎大家评论区提出问题一起讨论。
再次感谢优弧老哥,@筱五小姐姐的协调和支持
感谢张仁阳老师,Scott老师,珠峰的同学提出的意见和建议。