DevOps 的生活很有意思但并不容易 -----《DevOps 实践》读后总结

@ Arthor: Juan Liu
@ Date : 2018.11.04

背景

在部门已经两个月了,在这段时间里,慢慢地对 DevOps 有了更多的了解,但总感觉没有一个比较全面的认识。为了填补这种内心的不安,完整的读一本书是一个不错的选择。优点如下。

选择《DevOps 实践》这本书,首先是由于其比较薄,全书一共 200 页,其次,是因为实践,最后是买书的时候发现亚马逊评价也还不错。
阅读时间: 5 个小时左右(个人读书比较慢)。
推荐指数:对于刚入门 ***** 老司机 *

读后感

全书也是按照软件的生成过程来讲的,常见的是源代码管理,构建,测试,部署等,在此之上,作者还叙述了 DevOps 如何影响架构的,问题的跟踪以及物联网和 DevOps。总体来说,有技术和非技术两个方面。涵盖面基本上包含了 DevOps 所设计的各个方面,但确实是一本科普书,讲的很浅,也有可能跟 DevOps 注重流程有关,对相关的技术了解并会用即可(这个目前看来也不是一件简单的事情,而且可以满足一般的需求),但如果需要做好,个人感觉还是需要对所涉及的知识还是要有一定深度的熟悉。

下面用思维导图简单的梳理一下全书的内容。

DevOps 和持续交付简介


这章节,主要讲解了 DevOps 的目的:鼓励不同的部门合作,达到提高效率以及软件质量的目的。这里面,提到这是涉及一个技术和非技术的问题。这个也和《敏捷宣言》的第一条很相关,” 个体与互动 高于 流程和工具 “。在谈及 DevOps 的特点,快,的时候,作者提到一种观点,当你感觉到自己因为不必要的等待而注意力不集中的时候,说明流程有了问题。这里也列举了打气球的例子,之前好像 kent 在另一本书中也提到这个问题。可以把打气球类比于打王者。在实践中,作者提到一点,我们要思考我们是否在做正确的事情,或者在做的路上?这个我也是非常赞同的,因为很容易在做的过程中迷失自己。对于 ITIL 我目前好像还不是很能准确的理解其含义,或者说对应不到公司的产品架构上。

洞察全局


这个章节主要是大概讲解了 CI 的各个系统之间是如何协同工作的,也讲了这个系统上各个人员的需求与责任,比如开发人员需要随时可用的多套开发环境,开发人员是流程的第一个的负责人,要对自己的代码有一定的保证。工件库,保存可交付物件,包管理器用来安装和升级,并且自动安装依赖。在谈到发布管理,特别强调了人工的介入在目前来说的必要性(因为要做到完全自动化需要很强的信心)。最后,很重要的一点,就是要时刻关注自己做什么,并且识别问题的范围。

DevOps 如何影响架构


这里谈及到 DevOps 和 CD 的两个非功能关注点。

一切皆为代码


这章节谈及了代码的管理,现在大多数公司估计都是选择 Git 和 Svn,大多数都是两者并存的状态(可能是历史遗留问题和业务需要)。在谈及分支策略的时候,作者的建议是规范和事先规则好。工件版本命名也要有自己的规则,这样才能方便识别和管理。在谈及大二进制的文件存储时,作者提及目前也没有一个很好的解决方案,目前也遇到这个问题,还在找方案解决。

构建代码


构建包含,源代码编译成字节码,代码分析,单元测试,生成可部署的产品。Jenkins 作为目前最好用的 CI/CD 工具,应该很好的被掌握,而且 Jenkins 只是用来触发构建的,并不是自己构建,这个对其他部分人解释的时候要很好的解释清楚。 在构建机器的选择上,应该选择磁盘空间大、处理器核数核内存都比较好的机器,因为机器比人工便宜
这里还讲了一个很重要的问题,何时触发的问题。

测试代码


这章节主要讨论了三个话题,如何让人工测试更加的简单和不易出错,如何在实践中应用各种类型的测试,以及如何自动化集成测试等。由于之前做过一段时间的测试,对测试的理解也是,自动化只是测试的一种工具,替代不了手工测试,这是一个 balance 的过程,根据业务和收益来调整比列。这里涉及到都是测试要做到事情,比如如何管理多套测试数据,如何快速验证缺陷的修复(需要快速的构建)。就我目前的工作来看,我觉着如何 mock 数据(尤其是大数据),如何多套测试环境,以及如何自动化流程性的测试是很值得思考和解决的问题

部署代码


这部分讲解了部署问题,当前的技术环境,部署需要自动化来完成。这里面,主要是讲解了一些工具,我只是看了大概,部署涉及的问题,就是分发的监控的问题(个人理解),目前涉及到的概念也就是 Ansible 和 docker,也在研究。

监控代码


在部署以后,我们需要监控我们的代码,主要是监控线上环境,这个应该属于传统运维那一块(目前还没接触)。这里提供了几种方案,不过我感觉现在很多公司都有自己的工具。

问题跟踪、物联网和 DevOps

问题跟踪属于管理上的过程,主要是描述一个问题从开始到关闭的状态机,各个公司都有自己的管理工具,开源软件也存在这样的工具,比如 gitlab 等。关于物联网和 DevOps,个人觉着是一个不错的方向,但是目前还没有具体了解过,身边也没听说谁在做这一块。

总结

这本书,整体来说,只是大概了讲解了 DevOps 中的一些概念以及各个流程的问题以及目前存在的一些工具,对整体上了解 DevOps 还是有作用的,不过感觉对老人并没有什么作用。如果大家有不错的书和文章可以推荐一下。

ps: 目前也在总结 DevOps 所需要的知识图谱,如果有不错的,或者已经有人建立了,可以分享一下。
下面是作为刚入门的我,目前总结的,以后还要不断的加。


↙↙↙阅读原文可查看相关链接,并与作者交流