【CXO进化营】第六期分享:DevOps是什么?怎么做?

2018-09-21 15:12 815 1
在软件行业蓬勃发展的背景下,软件交付质量正在面临巨大的挑战,越来越多的企业开始向DevOps转型。

DevOps作为一套实践方法,它能够在保证高质量的前提下缩短系统变更从提交到部署至生产环境的时间,使企业能够以更加精简、高效的方式运作。

然而,企业在向DevOps转型时,却常常因为理解不到位、执行不彻底的原因导致转型失败,DevOps无法发挥它应有的功效。为了帮助企业更好的理解和应用DevOps,我们推出了《DevOps理论+实践之路》课程(两期),从思想到实践两个方面深入解读DevOps。

讲师介绍

jingmingming.jpg

中软国际全栈讲师荆明明

个人简介:华为云认证讲师、HCDP-Cloud Service Systems Instructor认证讲师,腾讯云讲师,精通主流前端框架,对于HybirdAPP开发有深入了解,熟练掌握Java、PHP后台开发语言,深入研究Node.Js开发,追求开源技术。

课程精华摘要

以下是《DevOps理论+实践之路》思想篇课程精华摘要:

一、软件研发的趋势

软件部署已由过去的分散小规模转为集中大规模,客户期望获得更快、更新、更好的特性和服务,传统软件服务商正在向Sass服务和云服务转型。在云计算,大数据等开源项目中,多语言混编成为常态。Python、Go、Ruby等新型语言已经在开源社区被广泛使用。

企业软件交付面临市场、协作、开放与安全多重挑战:

1.交付频率高、研发周期短;
2.市场变化快、产品盈利窗口变窄;
3.国际化、跨地域协作多、研发平台复杂;
4.平台开放,能与其他平台对接或者数据交互,数据在传输和存储上要求安全并且可靠。


由于交付环境和需求的变化,传统的瀑布式开发模型的缺点渐渐暴露出来:

1.由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险;
2.通过过多的强制完成日期和里程碑来跟踪各个项目阶段;
3.不适应用户需求的变化;

为了解决软件行业的两个重要问题:软件开发问题、软件交付问题,因此DevOps模式应运而生。

二、什么是DevOps


DevOps是什么鬼?DevOps可以从供应商那买到吗?DevOps是能解决所有IT问题的产品吗?DevOps是分析师用来引起CIO注意的行业流行词吗?


不同角色的人看待DevOps的视角可能不一样:

研发工程师眼中:DevOps是一组技术和工具;
大师眼中:DevOps是一种文化和理念;
咨询师眼中:DevOps是一种新的软件开发模式;
企业高管眼中:DevOps是一种全新的商业模式和管理体系;
HR眼中:DevOps是一个组织和职位。

2.png

——DevOps到底是什么?

DevOps本质是一种理念。 DevOps是软件开发、运维和质量保证三个部门之间的沟通、协作和集成所采用的流程、方法和体系的一个集合,它是人们为了及时生产软件产品或服务,以满足某个业务目标,对开发与运维之间相互依存关系的一种新的理解。


DevOps解决三个问题

1、 Dev和Ops具有不同世界观:运维人员要求稳定可靠,认为变更充满风险,开发人员则被鼓励频繁发布新代码,他们认为运维部门对流程的坚持阻碍了开发的速度。
2、开发和运维之间的脚本、配置、过程和环境存在差别:“它在我的机器上没有问题!”我们常常听开发人员这样说,但其实运维团队确实遇到了麻烦。
3、沟通壁垒:开发和运维团队通常处于公司组织的不同部门,通常有不同的管理者,通常是不信任的关系,并且通常工作在不同的地点。


DevOps是敏捷理念从开发领域向运维领域的延伸。在DevOps方法论指导下,运维人员和开发人员是你中有我,我中有你的,所有运维人员不仅要参与到软件开发的整个流程,还需要具有一定的敏捷理念。

计划阶段: 运维人员为开发人员提供需求,并制定发布计划;
编码/构建/验证阶段: Scrum、极限编程和精益生产、持续集成、自动化测试等;
部署阶段: 开发团队负责部署、监控部署过程、以及部署后的运行。


综上,我们可以得出DevOps的具体定义evOps是一套实践方法,在保证高质量的前提下缩短系统变更从提交到部署至生产环境的时间。

三、DevOps实践

不断变化的DevOps

DevOps是一个快速变化的领域,一直在不断实践、不断提高。虽然很多大型IT公司和组织已经在他们的环境中实施DevOps并取得成效,但是许多企业级IT公司对于DevOps仍处于熟悉阶段。

驱动DevOps不断发展并付诸于实践的因素,有以下几个:

业务负责人要求加快产品交付的诉求;
开发团队大规模使用敏捷软件开发过程与方法;
虚拟化和云计算基础设施日益普遍;
数据中心自动化技术和配置管理工具的普及。

DevOps核心思想

DevOps的核心思想是IT与运营团队的相互融合:

运营人员参与开发过程,指导开发人员生成运营友好的应用程序;
开发人员参与运营环节,了解运营需求并及时消除代码中不利于运营的缺陷;
实现开发环境、测试环境、生产环境的高相似度,可编程、自动化的全生命周期;
配置维护管理,从而适应软件的高变动性以及高可用性、高可靠性要求。

DevOps实践的原则

部署对系统的变更时,质量很重要:保证方法上有生产环境前跑通自动化测试用例,先让一小部分用户对生产环境的变更进行测试,对新部署的代码密切监控。

DevOps的交付机制是高质量的:交付机制应具备高度的可靠性和可重复性;
DevOps关注两个重要时间:一是开发人员提交新开发代码的时间,二是代码部署到生产环境的时间;
DevOps 核心思想是目标导向的:不拘泥于实践的形式或者是否使用工具,目标是减少从提交代码到部署到生产环境之间的时间;
DevOps不局限于用户测试和部署实践:在需求阶段就包含运维人员的视角是非常重要的;

还有一些要素在支撑着DevOps:

文化:建立一体化的全功能团队,打破开发与技术运营隔阂;
自动化:自动化一切可以自动化的;
精益:以精益的方式小步快跑,持续改善;
度量:建立有效的监控与度量手段快速获得反馈,推动产品和团队的持续改进;
分享:不同职能、不同产品之间分享经验;

实施DevOps

实施DevOps需要具体做以下的工作:

提升软件部署质量
更频繁的软件发布
提升IT过程和需求的可视化程度
改变合作协同文化
响应更多的业务需求工程师
开发更敏捷
管理过程更敏捷
提升代码质量

在做DevOps具体实践时需要具备的理念和工具:

人员方面:DevOps需要自治的团队,需要开发人员向全栈工程师发展,需要融合不同团队,比如开发和运维,还需要一个服务式管理者;
流程方面:开发过程中最小化可执行产品(MVP),持续集成/持续交付、持续部署(CI/CD),测试驱动开发(TDD);
技术方面:开发者自服务、基础设施即代码、集成工具链;
文化方面:合作文化、持续体验。

DevOps实践能够使企业以更加精简、高效的方式运作,但在具体实践DevOps过程中也会遇到许多的障碍,比如:不同部门的思维的思维不同,对开发团队的要求较高等,总之,DevOps任重而道远。


四、DevOps自动化流水线

传统化的开发流程会遇到各种各样的问题,比如:

各环节能力没有自动化拉通,交付周期长;
问题不能及早发现,不断向后积累,交付质量差;
解决问题不能自动化验证,效率低;
研发过程缺乏统一视角,沟通效率差,导致大量浪费和返工;


而使用DevOps模式,基于DevOps生命周期,可实现自动化流水线(如下图)。

3.png

DevOps自动化流水线

微信截图_20180921150924.png

DevOps自动化流水线拥有以下优点:

快速发布:能够应对业务需求,并更快地实现软件价值;
迅速反馈:缩短编码、测试、上线、交付的频繁迭代周期,同时获得迅速反馈;
标准化:高质量的软件发布标准,整个交付过程标准化、可靠、可重复;
可视化:整个交付过程进度可视化,方便团队人员了解项目成熟度;
更先进的团队协作方式:从需求分析,产品的用户体验到交互、设计、开发、测试、运维等角色密切协作,相比传统的瀑布式软件团队,更少浪费。


以上就是本期《DevOps理论+实践之路》课程的理论篇部分。更多精彩的内容,欢迎收看《DevOps理论+实践之路》实践篇。

有任何问题,都可以在CXO进化营的微信群里交流、讨论。扫描如下二维码添加解小媛微信(JFHC-1),备注“CXO进化营加群”小媛将拉你进群。

解小媛200.jpg
解小媛微信:JFHC-1
高级模式
B Color Image Link Quote Code Smilies |上传