您的位置:首页 > 运维架构

DEVOPS框架的规划与设想--2016年度工程技术管理工作会议后的思考

2017-07-22 12:01 369 查看
2016年度工程技术管理工作会议别出心裁,设立了很多专业的分会场,技术氛围浓郁。我有幸全程参与质量管理条线分会场,在质量意识、DEVOPS方面获益匪浅,略作总结,以抛砖引玉。

业内对DEVOPS没有权威定义,在参加“质磐”会场之后,我理解DEVOPS是一种文化、工程方法、工具技术的有机结合。如图1文化与质量,人理层即是质量文化,事理层是流程规范,物理层是工具和方法,目标是“减少等待、减少转换适配、消除浪费”,以精湛的技艺实现优质高效。这些文化特质不是DEVOPS特有的,2016年3月的“两会”上国务院总理李克强在政府工作报告中提到“工匠精神”,道家祖师老子说“天下大事必作于细”,近代著名的质量管理大师戴明更是直接指出“质量无须惊人之举”,其实说的都是品质是扎实的心、扎实的人干出来的。“质磐”会场质量文化分享更是生动形象的说明了这一点——质量管理首重质量文化,然后才是检查稽核。我想DEVOPS文化就是质量文化一种体现,它注重协作、拥抱变化,运用自动化、数字化手段促进质量、效率双提升。图2 展示了DEVOPS的组成,包括质量文化、工程方法、技术、工具。在我心中文化是协作的基石,不过作为一名理工科技术人员,谈论文化和管理,很有词穷之感。在此主要总结我对DEVOPS工具的理解。

 

图1

 

 图2

      业内通常认为CI+CD(CI是持续集成缩写,CD是持续部署缩写,指自动化部署)就是DEVOPS工具,我认为这个理解欠缺两点,第一点是CD只有发布工具,没有把自动化的思想用在运维上;第二点是缺少数字化思想,ISO八大原则之一是建立在数据和信息分析基础上“基于事实的决策方法”,CI+CD仅仅是提供了工具,没有给团队提供反馈的渠道。因此,我思考DEVOPS时将其称为“数据驱动开发运维一体化”,通过任务管理和配置管理连接CI、CD形成需求全生命周期反馈闭环。如图3“数据驱动开发运维一体化”所示,在这个结构中,开发团队发布流水线利用sonar、Dynatrace、CheckMarx等工具检查技术规范落实情况,需求变更影响范围,捕获开发过程中发生的非预期事件,以此为依据实施软件产品质量量化;运维团队以人工巡检为骨架,通过CD+Zabbix监控工具形成运维自动化“监控-调整”闭环,监控负责捕获事件,自动部署负责处理事件、实施故障隔离、自动维护。整个开发运维一体化的信息流则是持续改进的输入。

 

图3数据驱动开发运维一体化

熟话说没有金刚钻,不揽瓷器活。要驾驭DEVOPS需从思想上到技能上全面武装,如图4
DEVOPS技能序列所示,在软件产品生命周期内,至少需要四方面技能:敏捷管理(这里指敏捷思想,非敏捷实践)、分布式架构、持续集成与持续交付、IT运维管理。在这四个方面,无论使用那种自动化工具,要达到最佳的投出产出效果,都离不开标准化。因此,在实践CI、CD时应遵守“标准化、工具化、自动化、数据化、可视化”十五字原则。

 

图4 DEVOPS技能序列

标准是指在一定范围内获得最佳秩序,对实际的或者潜在的问题制定共同和重复使用的规则的活动。标准化是将组织内的工作内容逐渐应用标准以及组织内的规范的过程。标准化可以改进产品、过程和服务的适应性,减少和消除集成难度,促进合作。软件企业标准化,有助于提高模块复用率,减缓人员流动对产品质量的冲击。标准化是质量管理的依据和基础,贯穿质量管理的始终。软件标准化的内容一般包括:

操作系统环境标准化、容器化:这是提高效率,减少系统问题的有效途径,也是自动化运维的基础。这里“容器化”指运用容器思想标准化操作系统、中间件的安装配置,为快速交付、自动运维提供必要条件。

交付物标准化(包括程序和文档):现在能由一两个人完成的软件项目越来越少,而且开发人员流动比较大,标准化编程能够促进团队协作,缓解人员流动的影响,减少出现BUG的几率,缩减产品升级维护成本。

功能服务标准化:程序按照功能划分为原子服务,原子服务具备完整事务控制,服务内部强一致性、无数据,服务间无状态,方便分布式部署。服务器集群能为提供弹性的、高可用的IT基础架构准备必要条件。

流程标准化:在无纪律的、混乱的软件项目中,开发组织很难从软件工程研究成果中获益,虽然有一些软件开发组织开发出个别优秀软件,但其成功和杰出的个人或者小组努力有关。因此整理出一组符合企业环境的团队运行流程是十分必要的,这些流程分为团队内部流程(下面称为微流程)和团队与组织交互的过程(与CMMI中对过程的定义同义),这也现阶段敏捷在大陆实施特有的地方,符合中国人思维方式和行为习惯,更是提高效率的关键。

工具化是将标准编写成工具,用工具来检查标准落实情况。计算机编程语言很复杂,编码规范、编程语言最佳实践、安全规范等内容非常多,难于学习、容易忘记、不好检查,工具化用程序检查标准落实情况,解决软件标准落实的问题。工具化提高交付物检测效率,降低标准检查难度,实现检测前移,降低问题修复成本。并且工具化可以降低人员流动带来的知识损失。虽然检查工具还不能像人一样全面、智能,但对于一个组织,工具的优势在于效率高和易于推广。从效率上看,几百人的队伍编写的程序,工具几十分钟就能检查一遍。从推广难度看,通过工具化屏蔽底层复杂性,让大多数人都可以达到相对专业的水平。工具化提升了专业技术应用广度,节约专家时间,使专家可以专注领域研究与技术升级。这对降低总体成本,提升产品科技水平有很大的作用。

自动化就是将各种工具集成到一起,形成自动发布流水线的过程。自动化提供工具的运行环境,自动化为工具提供辅助运行的前提和环境,如准备环境、准备数据、调度执行、监控、收集日志、整理日志信息等。自动化能够解决团队面临的下面几个问题:

自动化提供“一键”服务器,降低多个标准、工具学习使用的成本。

解决单个工具因使用方法、使用时机的差异,导致的检查信息不一致,信息孤岛问题。

工具本身运行时间很短,但是前期的环境准备以及后期的结果整理时间很长,自动化能够给检查工具提供运行环境,整理运行结果。

软件迭代开发过程中,需要不断的进行回归测试、重复环境准备、数据铺底过程、检查结果整理过程,自动化将员工从重复性工作中解脱出来。

自动化可以在非工作时间运行,大幅提升效率。

自动化可以根据检查结果以及变动提交人等信息主动通知相关人员,能够提早发现并解决问题。

数据化是对自动化运行日志的建模与分析,目的是为了发现日志中有价值的信息,通过数据化后的日志,我们能够分析出质量的变化趋势,能够分析下一年培训费用花在那个方面,能够分析那些项目团队需要更多资源等等。数据化也是后面可视化的基础,虽然国内有很多看板应用,不过大多数都是手工维护,这种不及时的看板宣传装饰作用大于管理作用,真正适合IT业的看板是实时更新的电子版,如ECC大屏幕。

可视化是让数据更形象,更直观展现给干系人。从心理学角度看,信息透明、信息公开能够消除等待与瓶颈,促进团队协作。丰田利用人们这一心理发明了看板,现在各种商学院、各种敏捷导入培训都在讲看板。可视化就是一个软件开发过程的看板,将软件产品的各种数据实时展现在醒目的位置,供大家品评分析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  devops 管理
相关文章推荐