【王老师说运维】- 运维开发工程师在线评测:http://www.gtalent.cn/exam/interview/nsYteJ5wFfWkMdb2
初看 DevOps 确实很难理解,我也曾纠结在 DevOps 到底是让开发干运维的活还是让运维干开发的活这个问题上很久。
同时我还有一个疑问是 “到底用了什么才是 DevOps”。但是这两种提问方式也都是错的。
首先,我们要将 DevOps 和 运维自身的 开发化进程给区分开来,在几年前各种如 Ansibel,Puppet 之类的工具,将运维人员从反复编写脚本中解放了出来,大大提高了部署效率。但是 DevOps 并不是要说这个事情。
当你搜索 “什么是 DevOps”这个问题的时候,你已经能看到很多文章,比如 什么是(不是)DevOps,我们如何实现DevOps? 。其实,他们已经很好的解释了什么是 DevOps:
DevOps是一种文化转变,或者说是一个鼓励更好地交流和协作(即团队合作)以便于更快地构建可靠性更高、质量更好的软件的运动。
只是太抽象了,不太好理解。
我们还是从 Dev 和 Ops 开始说起。DevOps 最初应该是遇到了一个(些)很懒的Dev,他们懒得和 Ops 说话、打交道。但是活得干下去,怎么办呢?想办法尽量少说话吧。
在谈到 DevOps 的时候经常会谈到 Docker,Docker 很好的满足了 Dev 不想说话的这个想法,用了 Docker 以后,它不用再告诉Ops,这个程序部署的时候都需要依赖什么库,如何启动,需要什么参数。他们甚至可以忽略 Ops 最看重的“发行版本”,你装了 CentOS?没关系我可以随心所欲的用 Ubuntu,Debian 的包等等。
后来还有了 Kubernetes,这下好,Dev 只要学习一下 yaml 的语法,甚至可以做到连部署的细节都可以自己控制了。
我要用 S3,我自己 mount 一个 volume 好了。
初一看,似乎就是 Dev 做了 Ops 的工作,甚至很多地方都这么解释。但是其实从我目前看来,工作量并没有明显的减少。在上面说的这些内容中,确实一部分的工作从 Ops 转移到了 Dev 那里。但是 Kubernetes 谁来做?Jenkins 谁来做?[CI] , Registry 谁来做?无论谁来做,工作量还是在那里。
但这并不重要的,重要的是我们通过了一系列的工具、方法、标准将迭代次数提高了。我们减少了(优化了) 两个人群之间的沟通,从而提高了迭代。曾经一天只能发版2次,现在可以 20次 甚至更多。
所以 DevOps 就延伸开了,他的含义是在软件项目开发、测试、发版、部署、监控、日志分析等等等等的衔接环节中,更好的优化,从而减少沟通,提高效率,提高迭代次数。
很多地方都贴出这样一张图:
请忽略 中间 大大的 Dev 和 Ops 这两个单词,严格的说这里面的工作量远远超过 Dev 和 Ops 的范畴 。
这张图要标识的,就是在各个部分 中间是需要衔接的、是需要大量沟通的,每一个部分都很重要。
而 DevOps 的思想就是通过各种方式将衔接的部分尽可能的提高效率,加快速度。
【王老师说运维】:运维之linux基础入门实战(http://www.codeforest.cn/course/443)