加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 产品 > 正文

4个维度,实例化DevOps原则

发布时间:2017-06-02 11:22:18 所属栏目:产品 来源:woshipm.com
导读:副标题#e# DevOps原则所追求的愿景,就是“让业务所要求的那些变化能随时上线可用”;DevOps的起源表明,其原则是从Agile与Lean的实践当中提炼而来,因此与Agile和Lean的原则并无二致;本文所讨论的DevOps原则可以用“人、产品、流程和工具”这4个维度来进

一般的文章对于“原则”的阐述都比较抽象,有点像上面提到的CALMS和The Three Ways这两个框架的定义方式那样——仅仅把几个名词或短语放到那里。对于不熟悉Agile、Lean和DevOps的人来说,看了上述框架还是不知道DevOps到底是做啥的。

为了让DevOps原则的描述更加具体生动,笔者参考敏捷宣言的写法和实例化需求的做法(即用具体的实际例子来编写验收条件),使用了“高于”和“而非”的句式来对比两个具体实践的实例,且尽量用一些具体的实践来代表相应的原则,如“部署流水线”等。其中,“高于”表示右边的实践虽然不如左边的好,但还是有价值的。“而非”表示右边的实践并不值得推荐。这就是本文标题中“实例化”的由来。1. 人

领导者身体力行持续改进、高于、关注工具和基础设施

很多企业(包括笔者所辅导的企业)都在实践DevOps。要想让DevOps这颗树苗茁壮成长,企业要为其提供一个良好的土壤——即企业文化。而企业文化,是企业领导者引导塑造的。DevOps对于国内大部分企业来说,都是一个前所未有的新事物。必须通过不断做试验,才能找到培育它生长的土壤方,做试验就是为持续改进做准备。笔者所辅导的企业,工程师被项目进度压得喘不过气来,根本没有时间学习新工具和新方法,更别提做试验了。

所以只有领导者身体力行,不仅自己亲自做试验和进行持续改进,并给工程师足够的时间来做试验和持续改进,这样所创造出良好的环境,才能让那些自动化工具和基础设施在企业内部得到有效利用。

试验并改进流程而非指责人的过失

丰田公司有一句口号:“对流程苛,对人员柔”,意思是说:每位员工都会尽力做好工作的,那些在工作中所出现的问题都是流程的问题。因为根据这种有问题的流程来工作,无论是谁都会出同样的问题。前面说过,DevOps对于国内大部分企业都是新事物,需要做试验来“摸着石头过河”,做试验就有失败的时候,此时就要调整流程,而不是怪罪于人,否则企业没有人会去继续尝试DevOps。

产品思维高于项目思维

根据这一个原则可以定义“人”的组织结构——团队结构,即可以按照产品而不是项目来组建团队。这样的产品团队包括了Dev、Ops、BA、Tester、PO和Architect等各种角色,他们相互配合且不依靠团队以外的其他角色就能独立自主地交付软件产品,这个产品团队负责该产品从生到死的全生命周期,并且只要产品还在,这个团队就不会解散。这种设置会让团队的不同角色目标一致,比起从目标不一致的各种职能团队(比如Dev团队、Tester团队和BA团队)抽调人员拼凑成临时的项目团队,磨合期更短,更加有战斗力。

2. 产品质量和安全内建而非晚期度量和检查

产品需要质量和安全来保证价值。人们长期认为“高质量”意味着“高成本”,因为要维护高质量,需要在产品出厂前做大批量检测,并销毁那些次品,这就花费了高昂的成本。但丰田公司却说“高质量是免费的”。这是怎么做到的呢?这其实就是前文提到的丰田公司“对流程苛”的结果。丰田公司通过持续改进流程,“一次就把事情做对”,这样就能在脱离后期大规模检查的情况下保证高质量,同时其成本也趋近于零。

客户反馈高于按期交付

产品是否实现了价值,只有通过客户的反馈才能知道。很多团队往往过分关注交付期限,而忽视客户反馈。这样做的后果,就是虽然按期交付,但是产品却不是客户所期望的,造成返工或项目失败。

基于不可变容器的微服务高于单块应用

产品需要能快速地开发、测试和部署才能有效地交付价值。对于复杂度高的大型产品,如果可以由多个微服务组合而成,每个微服务都能独立地开发、测试、部署和上线。这比起必须集成各个模块才能进行手工测试的单块应用来说,更能实现各个微服务之间的并行研发,加快每个微服务的开发下游至上游的反馈环的反馈速度,进而缩短项目进度,让价值交付得更快。

不可变容器指的是软件产品被封装到一个类似docker这样的容器内上线,且上线后不可手工修改其配置。如果一定要修改,也只能通过部署流水线把要修改的内容重新打包成另一个新的不可变容器来上线。这样做的好处是能够实现部署和发布自动化以及进行更好的版本控制,消除线上手工配置所带来的无法审计的风险。这一实践是本文写作时期的推荐实践,该实践今后还会继续演进。

3. 流程管理层实践Improvement Kata和Coaching Kata进行流程持续改进 高于 用结果导向进行管理

佛家说:“菩萨畏因,众生畏果”。传统按结果导向进行管理的一个弊病,就是团队成员会把注意力放到结果上,而不是产生这样结果的原因——即过程改进之上。这样的后果就是,大家会把精力放到如何让报表好看,而不是真正地提高团队成员的持续改进能力来真正达到所期望的结果。

企业管理层可以参考《丰田套路》一书来带头实践Improvement Kata和Coaching Kata,让企业产生持续改进的文化。其中,Improvement Kata是通过一系列“确定目标—>考察现状—>识别困难—>制定方案—>观察成效”的PDCA反馈环来做持续改进;Coaching Kata是通过导师“一对一带学徒”的方式来让企业全员掌握持续改进的方法。

全局优化而非局部优化

由于大部分按职能组织团队的企业内部都存在部门割据的问题,导致大家都在做本职能部门内的局部优化,而没人做部门间的整体优化。有些部门间的扯皮时间甚至长达数月,严重影响了产品的交付。这提醒我们,全局优化来提高企业整体竞争力,才是各个部门赖以生存的保障。

单件流高于库存

单件流指的是,正在制作的产品的各个模块,能从最初的对其增加价值的加工步骤,直接传递到下一个增值加工步骤进行加工,并最终被传递到客户手中,在这个过程中,各个步骤之间没有发生等待或者排队的现象。而如果在各个步骤的传递过程中发生了等待或排队,那就等同于建立了库存。

软件开发中常见的库存包括排队等候开发的需求、排队等候测试的代码、排队等待修复的缺陷和排队等待上线的产品特性;隐藏很深的库存可能由诸如那些有固定期限(比如每月一次)的“用户验收测试”的流程造成——月初几天就开发测试完毕的产品特性必须要被存放近一个月,等到月底“用户验收测试”后才能继续往下游走。软件开发中的上述库存就是让项目延期的最大原因。而企业如果能做到单件流,那么就相当于消灭了库存,让价值在不同环节之间流动得最快,进而实现了前文所提到的全局优化。

4. 工具自动化高于手工

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读