什么是DevOps ?
DevOps字面理解
DevOps(Development和Operations组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。一些国际组织对其定义如下:
DevOps强调对应用进行快速、小规模、可迭代的开发和部署,以更好地应对和满足客户的需求。它要求进行文化的转变,即将开发和运维只能作为一个合作的整体来看待,注重提高业务价值,旨在精简整个IT价值链。
从定义来看,其实devops就是为了让开发、运维和QA可以高效协作的流程。(可以把DevOps看作开发、技术运营和质量保障(QA)三者的交集)
DevOps是一套实践框架,包含了精益、敏捷的理念,各种持续集成和持续交付的职能,以及构建流水线的工具。它着眼于项目的实践,在实践中强调以业务价值来统一所有工作目标,这个目标是不同的团队打破原有的组织考核壁垒,进行合作和沟通的基础。它的核心思想是把所有的IT交付和运维服务团队统一起来,围绕一个统一的业务价值目标及业务交付范围加强沟通,通过频繁、快速地迭代交付和反馈,达到加快交付速度和提高交付质量的目的。
如果将IT系统提供的业务服务作为一个交付的产品来看,就存在一条在IT软件开发和交付领域等形成的流水线。为了建设这样一条流水线,需要弄清楚以下问题:
- 流水线的内容是什么?它的起点在哪?终点在哪?
- 如何搭建这条流水线?
- 如何管理这条流水线?
DevOps核心理念
DevOps的生命周期如下图所示:
在其生命周期中,包含以下几个核心理念:
实现组织目标
技术人员所做的软件系统是为业务部门的业务发展服务的,此是将所有IT交付团队统一起来的共同目标和原始驱动力。只要对比一下自己团队的KPI和业务目标的关系,就能发现传统的分隔式项目交付管理是多么官僚和浪费。所以,DevOps流水线包含开发、测试、部署和运维等整个项目过程,这些直接关系到最终的业务价值的实现,因此必须作为一个整体进行管理。
流程标准化
俗话说,无规矩不成方圆。在践行DevOps的时候也需要标准化的交付流程,且这个流程不是简单的管理规范,而是要用持续交付的流水线来取代冗长的开发运维流程,实现高效,高质。
除了开发测试交付部分,从运维的角度来看,在DevOps里强调的是轻量化的ITSM流程和架构,即根据保证业务运行连续性的需要来裁减流程,并形成标准化的流程。所谓标准化指的是在需求、开发、测试、维护的过程中将流程最小化。流程过于复杂是造成IT资源浪费的最重要原因,所以应该将流程最小化,同时将更多的精力、劳动、资源投入真正创造业务价值的生产中。
工作自动化
开发运维流程标准化是自动化的前提,如果流程不是标准化,那么自动化也是没有根基的。只有将流程标准化,自动化才能有定义的标准。
自动化能提升效率,还能使效率和质量透明化,让整个交付过程更加可控。
DevOps文化
DevOps是一种文化,它提倡团队成员围绕共同的业务目标,进行互相理解、信任、沟通和协作,在交付过程出现问题后,从中分析原因和吸取教训,而不是互相指责和推卸责任。
总的来说,DevOps涵盖CALMS(自动化、精益、可衡量和分享)文化,如下图:
从项目实践来看,DevOps是指导软件系统交付的一系列实践方法,贯穿于项目的计划、需求、设计、开发、部署、运维及终止的整套过程中。
从传统的IT项目交付的角度来看,DevOps实践框架包括:敏捷管理、持续集成、持续交付和自动化测试。
# 敏捷管理
指将需求以用户故事的方式进行拆解,然后以最小化、快速迭代的方式进行开发管理。
# 持续集成
指针对开发人员的代码提交过程,以单件流的方式进行流水线式的自动化管理。
# 持续交付
预先定义、规划从代码生成到产品产出的流水线,并以自动化、模板化方式进行交付。
# 自动化测试
根据测试流程,以模板化、自动化的方式实现测试的手段。
DevOps相关工具
最新文章
- 用javascript比较快速排序和合并排序的优劣
- 将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)
- 访问WEB-INFO 目录注意事项
- thinkphp和uploadfiy
- 转!!!Mybatis实现数据的增删改查(CRUD)
- java-MySQL存储过程
- C#:在catch中return,会执行finally吗?
- 巧谈 GCD
- [转] npm命令概述
- getchar()用法
- iScroll 下 a 标签失效
- PDO(20161107)
- vue模板的几种写法及变化
- Mybatis简单入门
- i++是否原子操作?并解释为什么???????
- css3兼容360
- APIO 2014 回文串(Manacher+后缀自动机+倍增)
- ubuntu16 mysql在线安装
- push to origin/master was rejected错误解决方案
- 净资产收益率ROE连续3年超过15%的股票排名
热门文章
- Go基础学习(二)
- Android系统使用Shell脚本预装apk
- 少用 string.Format
- IP 转发分组的流程
- python下载神通板砖有声版
- 简单说 通过CSS实现 文字渐变色 的两种方式
- BEM命名及其在sass中的实践
- Django进行数据迁移时,报错:(1064, ";You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1";)
- startUML5.0中的tools下怎么没有java、c等选项
- python小白入门