基于DevOps的软件开发管理模式

来源 :软件 | 被引量 : 0次 | 上传用户:Kimyueyue
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘  要: 文章简述了DevOps概念、基于DevOps的软件开发流程,并以D平台为例对开发流程的每一步给出了示例。DevOps本质上是将IT开发与运维合并,借助强大的管理工具,引入容器化技术使当前系统环境部署过程由IAAS转向PAAS,用以规范系统间调用关系,并基于PAAS基础之上整改配置项及数据,使其与系统服务分离,实现灵活配置,快速实施。DevOps是软件开发管理未来的发展趋势。
  关键词: DevOps开发与运维;DevOps软件开发流程
  中图分类号: TP391. 41    文献标识码: B     DOI:10.3969/j.issn.1003-6970.2019.01.020
  【Abstract】: This paper briefly introduces the concept of DevOps and the software development process based on DevOps, and gives an example of each step of the development process with the D platform as an example. DevOps is essentially a combination of IT development and maintenance. With the help of powerful management tools and container technology, the current system environment deployment process is changed from IAAS to PAAS to standardize inter-system call relations. Based on PAAS, the configuration items and data are adjusted to separate them from system services, achieve flexible configuration and fast implementation. Shi. DevOps is the future trend of software development management.
  【Key words】: DevOps development; Operation and maintenance DevOps software development process
  0  引言
  DevOps(Development和Operations的组合词)是一套完整的面向IT运维的工作流,[1]以IT自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。
  它重视“软件开发人员”和“IT运维人员”间的协作。基于自动的持续的软件交付流程,使编译,打包,发布,测试等行为能够更高效,更稳定。
  敏捷迭代的概念愈发明显,为支持敏捷二字,传统的软件发布模式已经感到乏力,因此DevOps的概念应运而生。图1为DevOps的概念图。
  DevOps串联的是技术与人的问题。它包含许多技术方案,比如像持续集成这类概念已深入人心,持续集成要做好,不但需要持续集成服务器及配套的自动化集成和测试程序,还需要与版本控制紧密结合。除此之外,还需要注重各岗位之间协作的关系。把开发与运维相融合,这是很重要的思维转变。
  DevOps最主要的优势是可以持续的高效的进行交付,这也正是这个概念兴起的原因。使用DevOps的高效IT公司平均每年可以完成1460次部署。与其他未使用DevOps的IT公司相比,前者的部署频率为后者的200倍,前者投产速度比后者快2555倍,前者故障恢复速度比后者快24倍。在開发及运维工作分配过程中,后者要多花22%的时间用在为规划好或者重复工作上,而前者却可以多花29%的时间用在其他类型工作上面。可以看出利用Devops不紧提高了产品产出效率,也提高了员工的工作质量。
  DevOps还有一个优势就是可以使每一个员工都理解和参与整体的产品生产过程,提高了员工的满足和成就感,使员工产出更为高效。
  可能你会认为快速部署和提高投产质量是自相矛盾的。其实不然,快速部署可以使投产过程中的问题今早暴露,产品可以更快交付,更快得到用户反馈,从而更快的进行响应优化。“小步快跑”是DevOps的形式,每次集成带来的变化是比较小的,出现问题偏差较小,修复优化也相对容易。
  DevOps是开发人员,运维人员和质量人员之间沟通协作的“桥梁”。将传统产品发布模式及运维模式进行改变,提高效率,降低成本。
  DevOps目前处于急速增长状态,在大型企业中尤为明显,经过调查,DevOps在企业中的接受度大幅提高。%74的受访者接受并认可了DevOps。目前,88%的大型企业开始接受并使用DevOps,中小型企业的使用占比也达到了75%。
  目前采用DevOps的公司有很多,比如:Walmart、Sony、Adobe、Amazon、Apple、Facebook、LinkedIn、Airbnb、Ebay、Etsy、NASA、Starbucks、Netflix、Target,等。
  大型企业正在自下而上接受DevOps,其中业务部门(35%)以及项目和团队(32%)已经实施DevOps。不过,只有22%的大企业在整个公司范围内使用了DevOps[2]。
  实用工具方面,DevOps工具的用量大幅。Puppet和Chef是最常用的DevOps工具,使用率均为35%。Docker增长量也非常亏,使用率翻倍。Ansible的用量也显著增加,使用率从15%增长至31%。   1  DevOps流程
  DevOps的流程主要划分为以下几个部分:持续的管理计划,持续的集成与测试,持续的交付于部署,持续的监控与运维,持续的分析与计划[3]。
  DevOps流程中涉及的角色为:产品业务人员,开发人员,测试人员,运维人员,项目管理人员(Scrum Master)
  1.1  持续的管理与计划
  业务产品人员制定功能并于开发,测试与运维人员一起制定产品交付计划[4]。每一个角色根据自身工作内容做出建议。项目管理人员在这个阶段制定进度,并在流程每一个节点进行状态跟踪。整体计划及状态应该在项目管理平台(比如JIRA)中对所有人为可见并实时更新状态。
  1.2  持续集成与测试
  开发人员在开发业务功能同时需同时编写针对功能的单元测试代码,运维人员在编译功能代码的同时编译并运行单元测试模块,并针对结果进行判断是否需要修改或向测试人员流转。测试人员依据功能描述和接口文档编写接口测试用例,运维人员在编译部署通过后集成接口测试并反馈测试报告。整个过程的状态应该是对所有参与人员可见的。
  1.3  持续交付与部署
  针对代码开发实施每日构建和集成,可以使用集成工具如jenkins进行定时构建并将构建产物部署至仿真环境,将部署结果告知测试人员进行验证。图3为jenkins定时示例。
  1.4  持续的分析与计划
  针对项目管理平台(JIRA)的每项工作状态进行分析,发现突破及瓶颈,并针对性的对计划进行变更。加入每天站立会进行整体进度汇总报告并吸收参与人员的建议。
  2  DevOps常用工具
  以下是以某电子系统的D运维自动化管理平臺(以下简称”D平台”)为例的DevOps常用工具。D平台的DevOps工具中包含了项目管理平台JIRA、开发工具GIT、持续集成与测试、持续交付与部署、持续监控与运维这几个部分。
  2.1  项目管理
  JIRA[5]是基于JAVA开发的项目缺陷跟踪管理平台,由Atlassian公司开发,JIRA在项目管理系统中功能和稳定性一向比较出色,而且易用性也比较好。同时用户购买JIRA系统的同时,也获得了其源代码,可以做二次开发。JIRA功能强大,界面简洁,配置灵活,可扩展性强。
  2.2  开发工具
  GIT是一套分布式代码管理系统,可以高效的处理代码版本问题。主要特性表现为远程分支和本地分支的结合使用来解决多功能并行开发的需求。
  2.3  持续集成与测试
  Maven[6]是管理开发代码间依赖的利器。Maven对开发人员提供了一套完整的生命周期框架。Maven可以集成所有开发过程,包括编译、打包、测试、发布、归档等操作。Maven的原则是约定大于配置,可以让开发、测试、运维人员专注于岗位工作,而不用浪费时间在各节点衔接的约定配置上面。
  CsperJS:CsperJS[7]是基于PhantomJS编写的脚本处理和测试工具,提供了完成常见场景的测试方法。D平台使用CasperJS编写平台测试案例,并与JENKINS集成形成自动化测试体系。
  Jenkins: Jenkins[8]是基于JAVA开发的持续集成平台,并且已开源,用于解决重复的工作,比如编译、冒烟测试、发布等操作。Jenkins扩展性极强,可以与大部分框架集成,包括Maven, kubernetes, CsperJS等,在大多数企业中被广泛使用。
  2.4  持续交付与部署
  kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
  传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
  新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
  容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境[9]。类似地,容器比虚机轻量、更“透明”,这更便于监控和管理。图4为kubernetes架构。
  2.5  持续监控与运维
  Zabbix[10]:Zabbix是基于WEB界面提供分布式系统及网络监视功能的开源框架。
  3  DevOps实例
  D运维自动化管理平台DevOps开发实例。
  3.1  制定计划
  由业务产品人员制定D平台本年度的b需求点并添加至JIRA平台。项目管理人员在计划阶段确定大概的需求及完成时间,在JIRA平台中确定Sprint。每个项目团队的成员在Sprint下建立相应的工作任务,使JIRA平台sprint状态中任务情况一目了然。项目管理人员跟踪Sprint及Sprint下任务的分配情况。   3.2  定义工作内容
  业务产品人员、开发人员、测试人员、运维人员讨论需求细节。业务产品人员完成设计图,测试人员编写测试用例,开发人员进行详细设计,运维人员制定上线后负载及监控配置。
  相关的文档等放在GIT中进行管理。
  根据讨论情况,业务产品人员在JIRA中更新需求,开发人员、测试人员、运维人员也需要在JIRA中去更新自己的任务及完成状态。
  项目管理人员在全程跟进JIRA中的更新情况并提出相应的分配建议。
  3.3  开发
  开发人员在GIT主干中提交自己的模块代码,Jenkins中的触发构建保证开发环境的代码不断被提交到测试环境,进行严格的自动化测试并反馈测试结果。
  开发人员在完成自己的开发任务后将会在JIRA工具中更新自己的任務状态。
  3.4  构建——部署——测试
  3.5  部署——测试——发布
  当测试环境的版本测试通过以后,运维人员自动化部署该版本至生产环境。
  Jenkins中配置的构建任务将自动执行测试脚本,若测试通过,则发送邮件宣布该版本投产。
  3.6  D平台运维
  D平台后台通过Zabbix监控。监控结果会实施更新并将问题通知至运维人员。
  4  结语
  DevOps的目的是解决敏捷交付的一系列问题,实现了开发环境、测试环境和生产环境的一致性、灵动性、稳定性,以自动化的全生命周期配置维护管理,从而适应现代Web环境的高变动性、高可用性、高可靠性。
  参考文献
  荣国平, 张贺, 邵栋. DevOps: 原理?方法与实践[M]. 北京: 机械工业出版社, 2017.
  兰洋. 持续集成实践[M]. 北京: 电子工业出版社, 2015.
  刘建伟, 王育民. 网络安全技术与实践[M]. 北京: 清华大学出版社, 2017.
  王海鹏. 持续集成[M]. 北京: 机械工业出版社, 2008.
  刘淼. JIRA实践基础[M]. 北京: 清华大学出版社, 2015.
  许晓斌. MAVEN实战[M]. 北京: 机械工业出版社, 2011.
  邹辉. 软件自动化测试开发[M]. 北京: 电子工业出版社, 2017.
  郝树伟. Jenkins权威指南[M]. 北京: 电子工业出版集团, 2016.
  龚正. Kubernetes权威指南[M]. 北京: 中国工信出版集团, 2017.
  吴兆松. Zabbix企业级分布式监控系统[M]. 北京: 机械工业出版社, 2012.
其他文献
摘 要: DataGridView控件可以很方便地以非绑定方式显示数据,也可以绑定到数据表用来显示和修改数据,并可以将数据直接复制粘贴到Excel表格中。根据DataGridView的属性和方法,设计了一种格式化代码的自动生成方法,一次性将DataGridView界面调整到位。  关键词: DataGridView;代码;自动  中图分类号: TP311. 56 文献标识码: A DOI:10
期刊
摘 要: 目前国内外在高压输电线、变电站的验电设备研究较多,而针对高原架接的超高压及特高压验电设备的研究处于起步阶段,相关产品较少。目前国内外在直流输电线路中并没用形成,成熟、可靠的非接触式验电设备,也没有具体的国际标准来借鉴。本文目的是解决电力作业人员在高压输电线路及超高压、特高压下的预警装置的研究,针对环境复杂、接触验电过程困难等难题,该文研制出了基于开关调制技术的非接触式电场传感器。通过对输
期刊
摘 要: 分析大学生包车服务平台投诉管理现状及存在的问题,针对平台存在的问题利用PDC循环建立平台投诉管理流程,分析用户投诉心理,针对不同心理采用不同方式应对。根据PAC人格结构理论,分析用户投诉时的人际交往模式,通过改变自身状态来应对用户投诉相应的状态,从而更好的处理投诉。  关键词: 包车服务平台;投诉管理;PDCA循环;PAC理论  中图分类号: C93 文献标识码: DOI:10.39
期刊
摘 要: 随着三维激光扫描仪的价格不断下降,激光扫描技术的不断完善和数据处理方法的不断提升,三维激光扫描技术应用越来越广泛。本文通过STONEX X500Plus三维激光扫描仪采集传习馆点云数据,利用SketchUp软件,详细介绍建筑物三维建模的主要技术流程,实现建筑物点云数据实景三维建模。  关键词: SketchUp;三维激光;点云配准;点云滤波  中图分类号: TP399 文献标识码: A
期刊
摘 要: 本文基于智能家居的理念,设计了一种将无线WIFI技术与灯光控制相结合的智能家居灯光控制系统。该系统采用移动终端实现LED灯的开关控制和LED灯亮度变化的无线远程遥控功能,具有成本低、传输速率高、可移动等优点,取代了传统灯光控制耗时费力的有线控制。实验测试结果表明,在10 m传输距离的范围内,所设计的系统具有良好的开关性能和亮度控制功能,且便于移植和扩展,达到了预期结果。  关键词: 单片
期刊
摘 要: 通过对志愿者人体股骨的CT影像数据进行图像处理,获得高精度的股骨三维模型,采用正向工程建立有限元模型,针对股骨的各向异性的材料特性,应用股骨材料属性经验公式 获得正常股骨的材料属性与骨质疏松的股骨材料和属性,利用ANSYS MODAL仿真软件对正常股骨、骨质疏松的股骨进行前6阶模态计算,获得前6阶的股骨振动频率。根据所得数据,可对股骨假体置换手术提供借鉴,应避免与股骨的频率相近而产生谐振
期刊
摘 要: 针对Web开发中前后端耦合问题,在充分分析传统开发模式的基础上,提出引入Node.js来解决前后端语言不一致的解决新方案。设计的新架构模式针对小型团队或个人开发Web项目提出新的方向,从而解决了人力不足,开发耗费巨大,前后端不同语言沟通耦合困难的问题。基于此研究,真实开发了一个基于网页设计基础自学平台,并以此作为可行性检验的依据,系统采用B/S架构,后端程序在Node服务器中运行,数据传
期刊
摘 要: 为有效评估软件化雷达(software defined radar, SDR)系统的软件质量,建立了软件质量评估指标体系总体架构,给出了各评价指标的概念定义和评测方法。首先介绍了SDR的概念内涵、体系架构和典型特征。然后,在对系统软件进行分类的基础上,结合现有的软件质量评估指标,增加反映SDR系统典型特征的指标,并从功能性、可靠性、易重构性、合规性等8个方面,对系统软件的各项指标进行探讨
期刊
摘 要: 装配式斜交空心板桥受力比较复杂,在设计装配式斜交空心板桥时一般按正交桥来计算配筋,然而在竖向荷载作用下,其内力、应力、挠度都与相应的正交桥有明显的差别。本文通过对一座已建装配式斜交空心板桥分别进行单梁、整体梁格Midas civil模型计算,并与荷载试验结果相对比,得出了装配式斜交空心板桥的受力特点,指出了按正交桥来设计装配式斜交空心板桥在内力、应力、挠度等方面所存在的误差,为今后类似装
期刊
摘 要: 本文对X线肠胃诊断床旋转控制方法进行研究,采用可变差动支点结构实现X线肠胃机诊视床在旋转的同时床体斜向上升,利用单片机控制电机速度,实现床身旋转过程中床尾不会触及地面。  关键词: X线胃肠机;可变差动支点;单片机控制  中图分类号: TP211+.4 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.04.021  本文著录格式:张敏燕,王雅楠,
期刊