DevOps:从理念到实施
转载自:http://os.51cto.com/art/201404/436794.htm
DevOps这个新理念的出现,是为了应对IT环境中普遍面临的一些挑战。开发团队要求的不断满足新的客户需求,并快速实现新的功能。而运营最关心的是“稳定压倒一切”,任何差错都有可能对生产环境中的用户造成直接影响。本文分享了DevOps从理念到实施的工具和方法。
为什么会有DevOps的出现?
DevOps这个新理念的出现,是为了应对IT环境中普遍面临的一些挑战。

敏捷的出现缩小了上图所示的第一个隔阂,也就是商业需求和开发之间的隔阂,有效的加快了产品开发的周期和效率。那么这无疑为运营团队增加了很多压力。
于是上图中第二个隔阂,也就是开发和运维之间的隔阂需要解决,于是DevOps的理念应运而生。
如何解决开发和运维的隔阂呢?
首先要明白隔阂产生的原因。开发人员和运维人员认识的方法,以及各自所处的角色,都存在根本性的差别。
开发团队要求的不断满足新的客户需求,并快速实现新的功能。而运营最关心的是“稳定压倒一切”,任何差错都有可能对生产环境中的用户造成直接影响。有些服务提供商都和客户签署Service Level Agreement。服务中断意味着直接的财政损失。衡量指标不同,自然工作的重点不同。
那么我们首先要从文化上着手。
根本上要从文化上着手。文化的改变是第一位。了解自己的工作队全局的影响。
运维团队必须明确的认识到,如果不能快速把开发成果推倒生产环境,企业就很可能被其他竞争对手超越。长久以来就很有可能被市场淘汰。覆巢之下,焉有完卵?那么运维团队也就没有存在的意义了。但不是说稳定不重要,我们需要实施一系列手段来实现即快又稳。
开发团队必须明确认识到开发代码或者更改设置时,可能会对整个系统稳定性和性能的影响。
其次要从组织结构上着手,考虑开发团队和运维团队的直接领导是同一个人,尽量避免部门直接互相指责和扯皮。
第三要实施一些工具及方法。
如何具体实施?
正如很多企业采用敏捷开发一样,这需要一个准备,尝试和逐步实施的过程。其实DevOps仅仅是一个理念,而且这个理念在不断变化和发展中。无论公司大小,IT环境面临的有很多挑战是共通的。大公司组织结构相对发杂,人员理念和文化的形成非一夕一朝之功。在实施DevOps反面,反而小公司有很多的优势。
除了IT企业外,DevOps对于传统的行业(金融,电信等等)也同样有借鉴意义。因为在不久的将来,每一个公司都是数字化的公司。没必要强调你的企业是不是采用DevOps,应该开始深入了解你的环境中需要解决的问题是什么,再看DevOps中的一些方法是不是会帮到你,然后再具体实施一些措施和借用一些工具来帮助你。比如我所关注的虚拟化平台的运维,就可以借鉴DevOps的很多思想。
标准化和自动化:
尽量采用模板和指定好的流程来更新Master Image,采用Puppet,Chef等工具来实现系统管理自动化,尽量减少人为干预。同时也避免了不必要的人为失误。
像管理代码一样管理系统配置:
很多应用的配置,因为需求变化而更改。但文档往往没有同步更新。需要有工具来记录系统的配置参数。也就是说借鉴软件开发中管理Code的方式,来对系统环境的设置进行版本控制和同一的管理。从而保证环境的一致性和稳定性。
这样可以捕捉到和规定配置不一致的情况,也可以快速的找到问题所在,提高排错的效率并缩短时间。
要有独立Dev/Test环境
新的配置必须在独立的Dev环境中充分测试后,才能在生产环境中实施。
测试自动化
采用一些工具和方法,自动测试系统改动后的各项功能和指标。大大减少测试需要的人力和时间。
开发人员能自己创建开发环境
vCloud Director 可以很好的满足这个需求。系统管理员可以把运算、网络和存储的资源专门分配给开发团队,并授予适当权限。开发人员自己可以瞬间创建模板以及新的环境。
DevOps:从理念到实施的更多相关文章
- DevOps on DevCloud|如何采用流水线践行CI/CD理念【华为云技术分享】
[摘要] 持续集成/持续交付(CI/CD,Continuous Integration/Continuous Deployment)在DevOps CMALS理念中具有支柱性地位,因而CI/CD流水线 ...
- `DevOps`相关知识搜集
本文记录的是搞清楚什么是DevOps过程中检索资料时发现的有价值的帖子. 传送门: 我眼中的DevOps 作者简介:申思维,2005年本科毕业于华南理工大学计算机学院.一直从事Web领域的开发,3年多 ...
- DevOps/TestOps概念
天下大势分久必合合久必分,早期的软件开发只有软件工程师一人完成,为了提高效率逐渐实行分工模式:开发.测试.运维.不同角色担任不同的任务.分工越来越细之后带来了问题也越来越突出,那就是各角色之间的沟通成 ...
- 一个都不能少: DevOps的3大核心基础架构
DevOps的涵盖面非常广,因为这个概念的火热,又有很多文章和技术都在把DevOps的帽子扣在自己头上,让很多人迷惑不解.其实,DevOps的知识体系如果从顶层上来分解,只有2块:方法论和工具链.方法 ...
- DEVOPS落地实践分享
DEVOPS落地实践分享 转载本文需注明出处:微信公众号EAWorld,违者必究. 引言: DevOps的理念已经说了很多年,其带来的价值逐渐被接受,很多企业也逐渐引入了DevOps.目前普元DevO ...
- DevOps“五宗罪”,这样向DevOps过渡注定会失败
云计算提供的速度响应.敏捷性和规模效应,契合了如今不断变化的数字商业环境.企业基于最新的IT技术,重构IT架构,加速产品创新和服务交付的速度,从而提高运营效率和市场占有. 不过,企业IT管理者在利用云 ...
- [转帖]DevOps/TestOps概念
发现收藏不好用..还是转吧.. https://www.cnblogs.com/fnng/p/8232410.html DevOps/TestOps概念 2018-01-07 22:02 by 虫师, ...
- [转载]金融行业 DevOps 解决方案概述
2009 年 6 月份,John Allspaw 及 Paul Hammond 在速度大会 (Velocity) 上分享了在 Flickr 中如何通过加强 Dev(开发团队)和 Ops(运维团队)之间 ...
- 【DevOps】为什么我们永远疲于奔命?
作者:范军 (Frank Fan) 新浪微博:@frankfan7 微信:frankfan7 在[DevOps]谁说大象不能跳舞?一文之后,本文对DevOps的理念作进一步探讨. 最近在读一本书& ...
随机推荐
- 【Django】关于ORM的使用
添加模型并映射到数据库中: 1. 在 settings.py 中,配置好 DATABASES ,做好数据库相关的配置. 以mysql为例: DATABASES = { 'default': { 'EN ...
- 基于.net开发chrome核心浏览器【一】(转)
http://www.cnblogs.com/liulun/archive/2013/03/18/2874276.html 说明: 这是本系列的第一篇文章,我会尽快发后续的文章. 源起 1.加快葬送I ...
- docker容器和镜像
这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别. 当我对Docker技术还是一知半解的时候,我 ...
- swift - self的弱引用
1. weak var weakSelf = self 2. DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()) {[weak se ...
- Linux下more命令C语言实现实践 (Unix-Linux编程实践教程)
1. more第一版 实现基础功能,显示每一页固定24行文本,“q Enter”退出, “Enter” 下一行, “space Enter”下一页. #include<stdio.h> # ...
- Python中新式类 经典类的区别(即类是否继承object)
首先什么是新式类 经典类呢: #新式类是指继承object的类 class A(obect): ........... #经典类是指没有继承object的类 class A: ........... ...
- c#编写windows服务在开机是OnStart启动超时
1.编写服务对应的config文件, 比如我的服务叫ModbusAgent.exe,对应的文件叫ModbusAgent.exe.config 文件内容: <?xml version=" ...
- C#使用MiniDump捕获异常
c/c++语言里MiniDump是一个重要的调试手段,他们没有C#/java这样语言有很多异常输出信息( JVM异常导出bug日志功能,通常在jdk目录,文件格式hs_err_%pid%.log,pi ...
- Windows Server 2008 MetaFile设置占用内存限制
最近遇到Windows Server 2008服务器内存持续飙升,48G内存用了99%,查看任务管理器的进程,也没发现具体哪个进程用的内存比较大? 于是,在网上找了了一个查看内存的工具RamMap,具 ...
- 5A - 超级楼梯
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1< ...