一本小册诞生背后的故事

一本小册诞生背后的故事

技术杂谈小彩虹2021-08-18 2:50:42210A+A-

大家好,我是王圣松,个人介绍过好多次,这里就不多讲了。

在2021年年初时,我上架了一本掘金小册 —— 《从 0 到 1 实现一套 CI/CD 流程》。这本小册从想法到落地历经了1年时间,前后2轮的产出,上百人参与内测,最终上架掘金。那么在这里,我与大家分享下我的这本小册的诞生历程。

前世内容

简单介绍下背景。2019年,团队做了个基于 Kubernetes 的 CI/CD 平台,包含了持续构建,持续部署,流水线,制品库等功能。 image.png

2020年中旬,张仁阳老师找到我,问我是否可以给珠峰出一份 CI/CD 的训练营。故事就从这里开始了。

那时候北京碰上了新发地疫情,团队居家办公。我就有了一部分额外的时间可以写内容。当时内容只有一期:用 Jenkins + Gitlab 做CI, Ansible 做CD部署。Nexus 做镜像库。第一期顶着加班的压力,每天写到凌晨,最后写了1个月左右。 image.png

开营后,有上百名同学前来报名参加。他们大多都是所在公司的高级前端开发工程师,有很大一部分还来自于百度 滴滴等大厂。

当时开始之前我还做了个问卷,调查了下他们之中对于 CI/CD 工具链的了解情况。一共回收了163份问卷。看了下数据,有实践过 Docker 的同学,31个人。实践过Kubernetes的同学,只有1个人。

image.png

这个数量说多不多,说少也不少,对于前端而言已经很可以了。一期结束时,浏览量达到了5K多,其中还有一部分同学实践后又写了文章反馈了出来。


一期的积极反馈激励了我,同时张老师也在9月份咨询我出二期的事情,我毫不犹豫地接了下来。二期内容只有 Kubernetes 部分。与其说是 CICD 训练营二期,不如直接说是 CD 训练营。同时二期准备的时间长一些,长达2个月左右。

想法

在二期快要结束时,张老师问我是否有兴趣出一本小册,从那刻起我开始思考这个事情。经历了思想斗争后,决定申请一次试试。

通过掘金的小册作者申请表,我提交了申请信息。官方人员的反馈也很快,当日下午就拿到了小册写作权限。这里再一次附上一次小册的申请问卷:wj.qq.com/s2/7104567/…

改造 & 合并

因为一二期在编写时没有考虑到那么多,所以在设计时也没有连贯起来,导致2期内容割裂比较严重,于是考虑合并后要做改造。但是改造和合并的成本还是比较大的。

具体做了以下几个改造:

  1. 砍掉一期的 AnsibleSSH 部署,替换成后面的 Kubernetes 
  2. 砍掉了 Docker in Docker 。
  3. Git 源换成了 Gitee 
  4. 一二期合并

Ansible 砍掉是因为已经有Kubernetes来替代Ansible部署的地位,且 Ansible在第一期也只是拿来批量操作服务,所以意义不大于是砍掉。

砍掉 Docker in Docker 则是因为安全漏洞问题,且这种固定服务也适合去原生部署。所以将 Jenkins 通过原生部署的方式部署在了机器上。

Git 源的更换主要出自于成本问题。 Gitlab 耗费资源大,部署成本也大。且目标只是学习 Git 在 CICD 中的作用,与平台的相关性不大。所以换成了 Gitee 免费版。

对于内容的改造具体只有这么多。除此之外,还做了一些内容组织结构方面的改造:

优化单篇文章的传播和独立性

独立性是需要考虑和优化的。在流程性的小册中,往往某一块中间的知识或篇幅,会严重依赖前面的前序知识。这样很难对单篇文章进行传播。传播出去,读者也会也会感到阅读晦涩。

所以在设计目录时,我尽量将流程打散为概念,将总结和流程串联放在最后。这样的好处是便于读者可以断点续学,也利于单篇幅内容的传播和推广。

image.png


当然,为了最大力度包容小册读者,内容也加了很多对基础知识的解释和叙述。例如对服务发现的解释,对灰度发布和滚动发布的解释。这样会最大力度照顾到大部分读者,让读者读起来更加顺畅,内容也会更友好。

image.png

优化标题

即使是渐进式内容的风格,标题友好也可以助于理解。下图是灰度发布和滚动发布的标题改造对比。标题加入了一些叙述性的语言,可以简洁解释学习这篇章节的收获和好处,可以激励读者学习的兴趣。

学习灰度发布,滚动发布的作用是什么呢?是为了解决发布部署服务时停机不可用的问题。那么将这个优点通俗解释放在标题上,读者会产生兴趣引发阅读。

读者来学习这部分知识,有一部分是从头到尾学习,则还有一部分是只学习其中一小块难点和不理解的地方。例如灰度滚动发布,健康度探针 DNS。标题写清楚后,抓住这部分读者痛点,也会激励这一部分读者阅读。

问题驱动

大家也可以发现在这本小册中,学习可以是渐进式的。例如你学完了集成 Jenkins + Nexus + Docker 后,使用SSH也可以去部署你自己的服务,只是不如K8S体验和性能好。所以,每一章的学习其实都是在解决前面知识的一些不足和漏洞。

我们在第一个改造中将流程打散为概念后,可以加入当前篇幅要解决的痛点和问题,将会更利于学习和理解。例如在 ConfigMap 这一章,先写出概念解决的问题,再写概念的定位和含义,读者会对要学习的概念更清晰理解更深刻。 image.png

编委会评审

掘金的编委会审核有3轮。在申请时、大体内容确定后、最后全部内容完成各有一轮。整体流程2-3周,届时会有专人对接。这里就不过多叙述

分成

贴一条优弧的朋友圈

image.png

总结

在写作时,经历过最多的感受就是无助。担心如果上不了架怎么办?如果烂尾了怎么办?但是好在咬牙坚持了下来。当然结局也很美好。

其他的我也不多写了,中间还有很多故事在其中。欢迎大家评论区提出问题一起讨论。

再次感谢优弧老哥,@筱五小姐姐的协调和支持
感谢张仁阳老师,Scott老师,珠峰的同学提出的意见和建议。

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1
本网站由 提供CDN/云存储服务

联系我们