目前最流行的开发模式DevOps究竟是什么鬼?
随着业务复杂化和人员的增加,开发人员和运维人员逐渐演化成两个独立的部门,他们工作地点分离,工具链不同,业务目标也有差异,这使得他们之间出现一条鸿沟。而发布软件就是将一个软件想从鸿沟的这边送去那边,这之中困难重重。
另一方面,行业竞争更加激烈,无论是客户还是公司自身,都要求软件能快速发布,频繁修改,而上边所说的这种隔阂,阻碍了开发团队的生产力,成了企业亟待解决的难题。
面对种种突出的矛盾,故事的情节,似乎又回到了当初只有程序员,而没有更细分为开发、测试和运维岗位的时候。
DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps其实包含了三个部分:开发、测试和运维。
换句话说,DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。专家们总结出了下面这个DevOps能力图,良好的闭环可以大大增加整体的产出。
有些人认为DevOps意味着开发人员接管了运营。这只是一部分而不是全部。当我们意识到部分运营需要自动化时候,运维人员需要进行一些自动化开发,开发人员也编写"运维"代码,或两者兼而有之。可怕的是,没有找到在这两种人员之间的整体协作方法,所有的成功团队都是将具有深度开发技能和深度运维技能人协调在一起工作,以创建一个更好的产品。
一、DevOps常用技术
二、DevOps有三种特点与模式
2.1、系统级别的效率考量
这是强调从整个系统的效率性能考量,而不是孤立地从所在工作部门或子系统考量,可以是整合开发人员和IT运维人员的大视角,也可以小如独立的发布者如开发人员和系统管理员。
重点是关注整个业务价值链,开始于业务需求的确认,开发人员的开发构建,然后交付给IT运维,在最后环节,对于客户的软件价值作为一种服务体现出来。
由于强调整体效能,就不要将缺陷推托到下游,不允许因为局部优化而带来整体退化,不能因为细节战术的提高导致整体战略上的退步,如果想提高整个系统的价值,就必须深入全面理解整个系统。
2.2、放大反馈循环
关于创建从右到左反馈循环。如有必要可以不断修正缩短和放大这种反馈循环。能够理解和响应所有的客户包括内部和外部,缩短和放大所有的反馈循环,嵌入我们需要的知识。
2.3、持续的锻炼和学习
这种方式就是创造一种企业文化,培育两件事:不断实验冒险以及从失败中吸取教训。认识到重复和实践是通向掌握的先决条件。
实验和冒险能确保我们持续推动改善,即使这意味着进入我们无法控制的危险地带,我们必须需要掌握帮助我们脱离危险区域的技能。
第三条道路的结果包括分配改善日常工作的时间,,为冒险创造仪式,奖励团队,并将错误引入系统增加弹性。
三、DevOps的好处
DevOps的一个巨大好处就是可以高效交付,这也正好是它的初衷。与低效组织相比,高效组织的部署频繁200倍,产品投入使用速度快2555倍,服务恢复速度快24倍。在工作内容的时间分配上,低效者要多花22%的时间用在为规划好或者重复工作上,而高效者却可以多花29%的时间用在新的工作上。所以这里的高效不仅仅指公司产出的效率提高,还指员工的工作质量得到提升。
DevOps另外一个好处就是会改善公司组织文化、提高员工的参与感。员工们变得更高效,也更有满足和成就感,对公司更加认同。
参考文章:
1、http://www.infoq.com/cn/news/2016/09/learn-devops-from-reports
2、http://www.jdon.com/project/devops.html
3、https://www.jianshu.com/p/271b24c11d82
最近热文阅读:
2、三条路线告诉你如何掌握Spring IoC容器的核心原理
3、面试必备技能:JDK动态代理给Spring事务埋下的坑!
4、漫画区块链,一文带你秒懂她!
更多精彩,从关注《Java后端技术》公众号开始!