赞
踩
本人当前的工作范围主要的就是DevOps,更具体一点就是写Jenkins Pipeline 脚本。我最近慢慢学习一个DevOps基础的视频教程,这个教程是Lynda.com,纯英文的。打算写一个笔记,应该来说是翻译这个课程。任何新奇的事物,我们接触它们都是通过学习表面的理论知识来达到初步的了解和掌握。
我也不知道,我能不能坚持看完这个视频教程,然后坚持翻译完每一个小视频,一个视频翻译成一篇文章。这些内容大部分是我自己的翻译,少部分是自己的理解。
今天我们来学习第一小节,什么是DevOps。首先,我觉得有必要去了解DevOps的英语发音,这里我建议你拷贝到谷歌翻译或者百度翻译,带上耳机,听几遍发音。DevOps,它是当今计算机领域内一个很火的概念。但是,DevOps到底是什么呢?大型软件公司,IBM和微软都在谈论DevOps,但是目前并没有一个比较明确的单一的定义,所以,要解释这个定义,有些困难。
1.定义
(两个讲师)我们认为DevOps可以从两个方面去定义。首先,DevOps是在软件生命周期内,从设计到编码,然后从开发环境部署到生产环境上,由开发人员和运维人员共同参与的软件迭代过程。在之前的软件研发模型,大部分是这样的:开发组去写代码,另外一个组(比如测试)去进行测试,一个组负责部署到生产环境,还有一个组负责后期软件运营。这个生产方式,当今很多公司依然存在,而且是普遍现象。在这里,DevOps就可以改变这个模型,请看下图。
如果采用DevOps就变成了两个组,或者DevOps本身就是一个组,里面的人员既要懂得开发,也要懂得运维,这个只是粗浅的解释,然后DevOps就变成下面这张图的样子。
上图中并不是说DevOps中就没有了测试和部署,只不过这两部分是高度自动化完成,任务量相对编程和运维是比较少的。其实真正的devops应该是以下图的范围。这里加了一个QA,也就是质量保证,包括QE,也就是一般我们叫软件测试工程师。
第二点,DevOps有这么一个明显的特征:运维操作人员在进行系统运维工作采用的技术和开发人员是一样的。(这里只代码技术手段)你要知道,在DevOps中,系统工程师的工作就和开发工程师工作流程一样。所有的检查点都采用源码版本控制,并完成了相关的自动化测试。但是DevOps和敏捷开发一样,它是一个很广的概念和一个很高级的定义,并没有真实地告诉你,它是什么。
2.五个方面去描述DevOps
这里打算分成5层去描述DevOps: 价值,准则,方法,实践,工具。
在稍后课程,我们会依次讲到这些。
3.最大的问题
但是首先,我们来思考这个最大问题,你为什么关注DevOps,它能为你带来什么以及为什么你还是想尝试用它?
第一个原因是,DevOps已经被证实能在IT和商业两方面提升效率。在Puppet实验室发布的DevOps 2015调查研究报告中,指出使用了DevOps的团队和没有使用DevOps团队对比,部署更改频率提高30倍,交付周期缩短200倍。在问题质量方面,和其他组织相比,问题故障减少了60倍,在问题恢复上快了168倍。这是一个多么大的优势,
Ps:我想,大家都经历过加班到深夜的上线活动。运维拿着开发提供的上线清单去核对,然后进行系统操作,更新文件,启动服务,我靠,上线失败,再来,又失败,这样就面临回滚操作。运维的理由是开发给的文件清单有问题,开发的理由是这生产环境和开发环境不一样。作为测试人员,你一直在陪他们加班,难道你不会去怀疑,运维人员到底有没有失误做错的地方,这些都只是猜测。DevOps都是脚本自动化运作,都有日志输出,上面的问题就不存在了。
第二个原因是,DevOps能让你的日常工作变得简单。在普通运维上线过程中,由于技术和环境,经常产生不可控制认为失误或者其他问题。我们发现,DevOps减少了计划外的工作,增加了同事之间的友好关系和减轻了工作压力。就像上面我具体,运维和开发真的经常吵架,关系不好是常态。开发是追求业务功能快速上线,进入下一个迭代,运维的口号是稳定压倒一切。
DevOps从单词缩写就可以看出来,代表的是开发和运维,但是这并不表示,DevOps中就没有其他团队,例如测试。DevOps中同样由开发,测试,运维和其他人员组成,例如系统管理员和DBA。每一个参与软件交互人之间的合作,是DevOps的一个重要的宗旨。
DevOps 会同时改善运维和开发以及其他团队的工作效率。这部分并没有完成关于什么是DevOps的讨论。它不是运维组的一个新的叫法,也不是一个职位职称描述,更不是一个工具的集合。下面一篇,我们讨论DevOps的核心价值:CAMS。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。