从国内众多DevOps实践中,我们能看到下面三个技术尤其重要和火热:

容器:容器从根本上解决了软件对环境的依懒性,解决了各个环境之间的差异问题;它可以加速部署的速度,提高部署的效率;降低部署的成本。容器技术是在Linux的基础之上发展起来的,因此它本身的实施成本很低,就是在任何物理机和虚拟机的Linux操作系统上安装Docker服务(仅几十兆)就可以完成所有功能。在任何环境中实施Docker需要考虑好以下几个因素:主机的计算资源特性和容器允许的资源需求相匹配(计算密集型、内存密集型、IO密集型等);容器网络类型和服务路由的选型;容器镜像仓库的选择等。

持续部署:这是所有企业普遍的短板,需要设计统一的自动化部署流水线作为软件系统部署和更新的基础设施。持续部署流水线底层是有Jenkins之类的工具来完成的,它能实现快速的、可重复使用的、适用于不同部署环境的发布流水线。所有服务都可以通过它实现各种风格的发布;这些发布风格中比较重要的两种:蓝绿部署和灰度发布。

微服务:为了解决传统软件所特有的巨石应用的缺陷,用微服务的思路,全面地重构巨石应用,全面的在新系统中应用这种架构。微服务架构是容器技术出现之后,有迅猛发展的一项软件架构技术。它的松耦合和面向服务基础架构的特性都是现代软件和数据中心必备的特质。

以上三种技术相辅相成,有着比较深刻的关联。首先微服务和持续部署各自解决了特别多的传统IT的问题,这些问题都是长期以来制约企业业务发展的难题。

容器技术由于它的快速、轻量、微服务化的天然特性,很好的从不同侧面支持了持续交付和微服务架构。容器可以为持续交付提供弹性和高速的系统资源,环境管理和利用率提高了很多;容器的不可变性的特点也更好地支持了微服务架构。

企业实践DevOps所需要参考的最佳实践如下图所示:

(上图来源于:Exin DevOps白皮书)

     

      敏捷管理:在产品的计划、需求、设计和开发阶段主要采用敏捷开发方法论。在这些阶段中DevOps强调,设置合理的任务大小,从而确保能够开展快速迭代和开发;强调持续集成的实施,通过CI提高软件的质量和可用性;强调用更短的发布周期,增强反馈的数量和频度。

持续交付:在开发和部署运营阶段采用持续交付的方法自动化软件系统的发布、变更和升级等工作。DevOps强调使用持续交付工具作为基础架构尽可能的自动化手工部署工作。在研发阶段就开始设计部署自动化的脚本,对其使用流水线工具来操作执行,并辅助自动化测试工具。通过严密的自动化测试方案,确保实现可以重复使用的自动化部署流水线。通过它的反复运作,提高部署的效率,降低部署的风险,提高部署的质量。

ITSM服务管理:DevOps强调从传统的ITSM管理理念上升到关注业务持续性的轻量ITSM管理方法。运维人员在项目的早期要和开发、测试和部署人员充分地沟通和落实运维需求。确保在业务系统开发的初期,系统的业务持续性和可运维性等非功能性需求,都得到充分的落实和满足。

精益管理:业务开发运维的整个生命周期中,以上三类工作实践的所有工作活动中,都必须坚持贯彻精益的原则。DevOps特别强调的点包括:准时制业务流程、精益且无浪费的工作方法、单件流的运作流程、持续改进等。它的这些管理思路需要严格的落实到所有工作环节中。

由此可见DevOps在企业,特别是大规模传统企业的落地和推广还是比较复杂的。虽然相关的最佳实践都是已经存在了很多年的;但是,通过DevOps的价值观重构企业从研发到交付到运维的价值流谈何容易。基于我10多年的ITSM项目经验,我似乎感觉到DevOps不能单独依靠自顶向下的推广,当然高层领导的支持依然是重要的和必备的支持条件之一。更重要的可能是中层的带动和底层的创新;借鉴生产制造业已经久经考验的精益制造实践也是势在必行。总之DevOps运动会在近几年给IT行业带来较大影响。

谈谈在DevOps实践中,感觉最重要的这三个技术……的更多相关文章

  1. 谈谈bootstrap在实践中的应用

    bootstrap官网是http://www.bootcss.com/ bootstrap的CDN的网址是http://www.bootcdn.cn/ 在平时写的时候尽量用CDN,这样对于网站的运行效 ...

  2. DevOps组织中应用架构师的新定位与实践

    [摘要] 针对应用架构师相关窘境,在现代化的应用开发中,DevOps组织需要定义应用架构师职责,使应用架构师与DevOps团队各角色更有效的沟通,交付更有价值的产品.在多数情况下,应用架构师不是Dev ...

  3. CI Weekly #17 | flow.ci 支持 Java 构建以及 Docker/DevOps 实践分享

    这周一,我们迫不及待写下了最新的 changelog -- 项目语言新增「Java」.创建 Java 项目工作流和其它语言项目配置很相似,flow.ci 提供了默认的 Java 项目构建流程模版,快去 ...

  4. 团队DevOps实践之一

    团队DevOps实践之一 ------------------------------------------------------------------ 今天先到这儿,希望对您技术领导力, 企业 ...

  5. 你应当如何学习C++以及编程(细节是必要的,但不是重要的,把时间用在集中精力去解决问题,而不是学习新技术,那样练不成高手。在实践中提高才是最重要的。最最重要的内功还是长期学习所磨练出来的自学能力)good

    最近在学习Qt但由于没有C++的基础,感觉学的很吃力.看到pongba的这篇文章感觉不错就弄过来了, 原文地址:http://blog.csdn.net/qter_wd007/article/deta ...

  6. TeamCity+Rancher+Docker实现.Net Core项目DevOps(目前成本最小的DevOps实践)

    1.准备项 1.1.服务器一台,1H4G(更小内存应该也可以,自行测试),系统:Ubuntu 16.04 64位 1.2.数据库一个,MYSQL,MSSQL都可以(还有其他的,自行配置),教程是MSS ...

  7. 中小团队基于Docker的devops实践

    笔者所在的技术团队负责了数十个项目的开发和维护工作,每个项目都至少有dev.qa.hidden.product四个环境,数百台机器,在各个系统之间疲于奔命,解决各种琐碎的问题,如何从这些琐碎的事情中解 ...

  8. 华为敏捷/DevOps实践:产品经理如何开好迭代计划会议

    大家好,我是华为云DevCloud项目管理服务的产品经理恒少,作为布道师和产品经理,出差各地接触客户是常态,线下和华为云的客户交流.布道.技术沙龙. 但是线下交流,覆盖的用户总还是少数.我希望借助线上 ...

  9. 华为敏捷DevOps实践:产品经理如何开好敏捷回顾会议

    大家好,我是华为云DevCloud项目管理服务的产品经理 恒少:) 作为布道师和产品经理,出差各地接触客户是常态,经常和华为云的客户交流.布道.技术沙龙,但是线下交流,覆盖的用户总还是少数.我希望借助 ...

随机推荐

  1. imageNamed 与 initWithContentsOfFile 区别

    1.imageNamed: UIImage *image = [UIImage imageNamed:"]; UIImage的类方法 第一次读取图片的时候,先把这个图片放到缓存中,下次再使用 ...

  2. java线程之生产者消费者

    看了毕向东老师的生产者消费者,就照着视频参考运行了一下,感觉还好 这个值得学习的是条理特别清晰: ProducterConsumerDemo.java中,一个资源类Resources,生产者消费者都可 ...

  3. android jni 总复习(转载)

    本文全文转载自:http://www.cnblogs.com/shuqingstudy/p/4909089.html,非常感谢 package com.test.androidjni; import ...

  4. bootstrap 响应式工具

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. javascript之自增自减典型运算(易错)

    JavaScript“自增”运算符与表达式 递增运算符(++)是一个一元运算符,该运算符可以将操作数进行递增操作,即每次增加1.递增运算符要求其操作数必须是变量.对象中的某个属性或数组中的某个元素,并 ...

  6. JUnit4 与 JMock 之双剑合璧

    引言 单元测试可以保证代码的质量,最大程度降低修复系统 bug 的时间和成本.能被称为测试的阶段有:单元测试.集成测试.系统测试和用户测试.修复系统 bug 的时间和成本随着这些阶段的推移呈指数级增长 ...

  7. Java中abstract和interface的区别

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...

  8. MJRefresh在UITableView中的使用

    前言 MJRefresh是一个好用的上下拉刷新的控件,github地址如下:https://github.com/CoderMJLee/MJRefresh 很多app都使用这个控件,我们也来了解一下它 ...

  9. 转:frame和iframe的区别

    1.frame不能脱离frameSet单独使用,iframe可以: 2.frame不能放在body中:如下可以正常显示: <!--<body>--> <frameset ...

  10. Laravel 开发笔记

    Laravel 4.2  鉴权使用加盐密码 刚开始接触laravel,发现laravel默认的鉴权模块密码并未加盐处理(密码由password_hash方法创建).所以自己琢磨着对密码加盐.像下面这样 ...