您的位置:首页 > 运维架构

什么是运维开发?

2018-01-23 09:37 148 查看
作者:袁昊洋

链接:https://www.zhihu.com/question/68244576/answer/263191512

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

初看 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 就延伸开了,他的含义是在软件项目开发、测试、发版、部署、监控、日志分析等等等等的衔接环节中,更好的优化,从而减少沟通,提高效率,提高迭代次数。

很多地方都贴出这样一张图:

<img src="https://pic4.zhimg.com/50/v2-1015dcf5e27561114bb64348fdd8da03_hd.jpg" data-caption="" data-size="normal" data-rawwidth="1982" data-rawheight="1020" class="origin_image zh-lightbox-thumb"
width="1982" data-original="https://pic4.zhimg.com/v2-1015dcf5e27561114bb64348fdd8da03_r.jpg">


请忽略 中间 大大的 Dev 和 Ops 这两个单词,严格的说这里面的工作量远远超过 Dev 和 Ops 的范畴 。

这张图要标识的,就是在各个部分 中间是需要衔接的、是需要大量沟通的,每一个部分都很重要。

而 DevOps 的思想就是通过各种方式将衔接的部分尽可能的提高效率,加快速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: