《基于DevOps软件开发流程的优化.docx》由会员分享,可在线阅读,更多相关《基于DevOps软件开发流程的优化.docx(12页珍藏版)》请在第壹文秘上搜索。
1、企业研究开发项目计划书(自主开发类)项目名称基于DeVOPS的软件开发流程成的优化企业名称纱企业法人(签名)项目负责人电话项目起止时间xxx7年5月至一xxx7年5月填报日期年月日一、立项依据1 .国内外现状、水平和发展趋势;如今,作为一种已经被接纳和理解的一组文化价值和实践的集合,DevOps已经被证明能够帮助各种体量的组织改善软件发布以及质量和安全,同时能为产品的开发提供快速的反馈。通过大量的调查反馈,有了足够的证据去证明DeVOPS实践推动了IT的更高效能。而更高的效能则改善了生产性,利润和市场份额。同时调查发现了DeVoPS所能带来的不仅仅是财务上的改善。所有的组织,不管是盈利组织还是
2、非盈利组织,不管他们的使命是什么,通过实践DeVoPS都能在实现目标的过程中有所改善。通过对领导者如何高效地影响技术实践和流程改善以实现更好的IT和组织效能方面进行研究,同时发现自动化是各个组织之间效能不同的关键要素。而在应用架构以及组织结构构成是如何影响软件开发和交付方面同样也做了更加深入的研究。2 .项目研发的目的、意义;1、自动化能给组织带来巨大福利相比与其他团队,高效能成员所在团队通过自动化显著地提高了他们地配置管理/测试/部署以及变更审批流程。其结果是更多的时间和创新可以用在反馈回路中。DeVOPS在所有的组织中得到了践行,通过研究组织的财务和非财务的指标,在愿意实现这些指标方面高效
3、能者是低效能者的两倍。去年的研究也表明,不管是COTS(commercialoff-the-shelfsoftware)还是部署在云端的微服务,都可以进行DevOps实践来实现更好的效率。而今年,如何在DevOps的世界里重新审视COTS,更加深入的指导原则被引入了进来。2、松耦合的架构和团队在持续交付方面表现更好为了达到IT高效能之路,在架构上迁移到松耦合的服务,组织上转换为松耦合的团队是一个好的开始。松耦合的服务使得服务之间能够独立的进行开发部署而不相互影响。而松耦合的团队则能使得对变更对应更加有效。对那些从创意到产品之间需要很多手工处理和审批流程的企业,这种转变需要不少投资。而松耦合的服
4、务和团队带来的益处也是显而易见的:更多的产出和更好的质量与稳定性。3、精益产品管理驱动更好的组织效能精益产品管理实践帮助团队更加高频地交付客户真正想要的特性。这个快速的交付回路使得团队可以进行尝试,与客户之间创建一个反馈回路。而这个结果则是整个组织的收益,可以从利润/生产性/市场份额上予以衡量。3.本项目达到的技术水平及市场前景。业务质量可视化1、测试覆盖率测试覆盖率是指测试用例对需求的覆盖情况,根据不同的需求类型,覆盖的要求也不同。如业务逻辑类需求,更加关注基本功能、边界、交互、异常等方面,测试需要覆盖正向路径、替代路径、异常路径。尤其是在TDD模式下,测试覆盖率基本体现了测试完整性和有效性
5、。测试覆盖率应该是分阶段,比如单元测试阶段、组件测试阶段、验证测试阶段都应该分析测试覆盖率。一般建议都保持在80%以上。2、测试通过率测试通过率=通过的测试/全部测试用例,用以衡量软件产品在测试过程中的质量,寻找缺陷。3、缺陷泄露率缺陷泄露率=用户发现的缺陷数/(开发+测试环节发现的缺陷数),即鼓励大家在交付之前尽量多做测试来降低缺陷泄漏率。在组织文化中我们也提到,内建质量才是提高质量的基础,任何依靠检测的手段来提高质量都是治标不治本。日志可视化日志可视化对开发人员分析上线问题、运维人员掌控线上环境都非常重要,可参加DeVOPS实践集中日志管理实践监控可视化监控是运维的眼睛,通过监控的可视化我
6、们才能及时发现问题,预防问题,监控的指标项很多:基础设施状态常见指标如磁盘使用率趋势、内存使用率趋势、CPU使用率趋势。应用状态常见指标如用户访问量分析、用户页面加载时间趋势、用户满意度趋势、用户浏览器分析、用户来源地域分析、80端口是否监听、API是否响应、SQL执行时长等等。其中用户来源地域分析对查看网络质量,精准广告投放都有参考价值。二、研发内容和目标1 .项目主要内容、目标及关键技术;持续交付是一种促进团队在短期内开发软件,保证软件可以在任何时间可靠地发布的软件工程方法。持续交付的目标是更快更频繁地构建、测试和发布软件。持续交付通过更加频繁地增量式地更新生产环境来降低变更的成本、时间和
7、风险。简单可重复的部署流程是持续交付的基础,持续交付以全面的版本控制和全面的自动化为核心。简而言之,持续交付是发布可靠软件的系统方法。持续交付是DeVOPS能力建设的突破口和基础,从代码提交到部署上线,持续交付架设起了从开发到技术运营之间的桥梁。1、自动化能力自动化是持续交付的基础能力,目标是加速代码提交到部署上线的过程,主要包括如下几方面的自动化:构建、环境管理、应用部署、测试。2、配置管理能力持续交付的源头是配置管理,源代码、依赖、应用、环境都应该实现配置管理。配置管理工具不仅仅是GitSVN等版本控制工具,Maven的Nexus和自建的CMDB都可视为配置管理工具,只要能够根据版本定位到
8、具体时间点的状态即可。3、源代码配置管理源代码包括:业务代码、测试代码、构建脚本、部署脚本、相关文档等,这些源代码都需要配置管理起来,便于追溯历史版本,和团队成员间的协作。4、依赖管理依赖管理包括:外部库文件管理和内部组件管理。依赖管理应该采用类似Maven这样的自动化工具实现,而不是将库文件存储到代码库中。团队协作也应该基于组件进行协作,而不是直接依赖于源码。5、应用配置管理应用配置管理主要包括三要素:应用程序、应用程序版本、应用程序版本运行的环境,如JDK1.7Ubumu-Server-14.04-LTS6、环境配置管理环境配置管理的核心是通过全自动过程创建环境,创建全新的环境总是要比修复
9、已受损的环境更容易。配置项:操作系统版本补丁级别设置应用依赖的环境软件包应用需要的网络拓扑结构应用依赖的外部服务数据7、制品配置管理制品主要是是构建结果,包括.JAR、.WAR等类型的文件,这些构件都是制品成果,用于调用和部署等,制品也需要版本化。可以采用源代码管理的方式使用Git或者SVN来进行管理,或者采用依赖管理的方式使用Nexus进行管理。2 .技术创新之处;我们将DevOps总结为方向服务的交付模式,这种交付模式重点聚焦组织文化、可视化、持续交付、技术运营四方面的能力。持续交付覆盖从提交代码到部署到生产环境的全过程,技术运营覆盖生产环境等线上环境的管理过程,可视化贯穿服务交付的全过程
10、,组织文化则是促进研发与运维人员协作的基础。3 .主要技术指标或经济指标。交付流水线:通过定义流水线:代码管理、构建(编译、单元测试、打包、代码扫描)、部署、测试、发布上线等过程。对相应环节的工具进行数据分析,可以获取某个特性对应的代码当前出于何种环节,如:构建中、测试中或者已发布。并且可以可视化各个环节的时长,可以重点改进效果明显,优先级高的环节,对持续改进意义很大。运维过程:与运维事件的过程也可以可视化,如故障处理任务,运维改进任务等等,服务所处的状态等等。三、研发试验方法及技术路线(工艺路线)容器:容器从根本上解决了软件对环境的依懒性,解决了各个环境之间的差异问题;它可以加速部署的速度,
11、提高部署的效率;降低部署的成本。容器技术是在LinUX的基础之上发展起来的,因此它本身的实施成本很低,就是在任何物理机和虚拟机的Linux操作系统上安装DOCker服务(仅几十兆)就可以完成所有功能。在任何环境中实施Docker需要考虑好以下几个因素:主机的计算资源特性和容器允许的资源需求相匹配(计算密集型、内存密集型、IO密集型等);容器网络类型和服务路由的选型;容器镜像仓库的选择等。持续部署:这是所有企业普遍的短板,需要设计统一的自动化部署流水线作为软件系统部署和更新的基础设施。持续部署流水线底层是有Jenkins之类的工具来完成的,它能实现快速的、可重复使用的、适用于不同部署环境的发布流
12、水线。所有服务都可以通过它实现各种风格的发布;这些发布风格中比较重要的两种:蓝绿部署和灰度发布。微服务:为了解决传统软件所特有的巨石应用的缺陷,用微服务的思路,全面地重构巨石应用,全面的在新系统中应用这种架构。微服务架构是容器技术出现之后,有迅猛发展的一项软件架构技术。它的松耦合和面向服务基础架构的特性都是现代软件和数据中心必备的特质。以上三种技术相辅相成,有着比较深刻的关联。首先微服务和持续部署各自解决了特别多的传统IT的问题,这些问题都是长期以来制约企业业务发展的难题。容器技术由于它的快速、轻量、微服务化的天然特性,很好的从不同侧面支持了持续交付和微服务架构。容器可以为持续交付提供弹性和高
13、速的系统资源,环境管理和利用率提高了很多;容器的不可变性的特点也更好地支持了微服务架构。敏捷管理:在产品的计划、需求、设计和开发阶段主要采用敏捷开发方法论。在这些阶段中DeVoPS强调,设置合理的任务大小,从而确保能够开展快速迭代和开发;强调持续集成的实施,通过Cl提高软件的质量和可用性;强调用更短的发布周期,增强反馈的数量和频度。持续交付:在开发和部署运营阶段采用持续交付的方法自动化软件系统的发布、变更和升级等工作。DeVc)PS强调使用持续交付工具作为基础架构尽可能的自动化手工部署工作。在研发阶段就开始设计部署自动化的脚本,对其使用流水线工具来操作执行,并辅助自动化测试工具。通过严密的自动
14、化测试方案,确保实现可以重复使用的自动化部署流水线。通过它的反复运作,提高部署的效率,降低部署的风险,提高部署的质量。ITSM服务管理:DevOps强调从传统的ITSM管理理念上升到关注业务持续性的轻量ITSM管理方法。运维人员在项目的早期要和开发、测试和部署人员充分地沟通和落实运维需求。确保在业务系统开发的初期,系统的业务持续性和可运维性等非功能性需求,都得到充分的落实和满足。精益管理:业务开发运维的整个生命周期中,以上三类工作实践的所有工作活动中,都必须坚持贯彻精益的原则。DeVOPS特别强调的点包括:准时制业务流程、精益且无浪费的工作方法、单件流的运作流程、持续改进等。它的这些管理思路需
15、要严格的落实到所有工作环节中。四、现有研发条件和工作基础1 .承担单位开展本项目的优势(人才、设施条件);公司拥有一支年轻化、知识化、专业化、经验丰富、勇于创新的研发队伍,具有专业人才优势。根据项目开发内容和难度进行人员安排,并根据计划有序地进行。公司利用技术研发中心的技术平台,成立项目研发小组,实行项目负责人负责制,由项目研发小组提出项目试制的技术工艺和立项报告,外聘专家做技术指导,财务部安排科研经费,领导部门审批。整个组织实施过程做到定期检查、定期汇报,以确保项目的顺利进行。2 .已有的工作基础,如预试及小试成果等。已拥有十余项软件著作权,申请发明专利1项,具备核心自主知识产权,在试点园区积累了数据与经验。五、计划进度(包括总的研发期限、年度计划进度)目前项目已经完成部分功能,具体如下:序号功能模块完成备注平台自动部署60%主机管理90%存储管理80%网络管理90%用户管理30%容器全生命周期管理40%灰度升级30%GPU/FPGA15%大数据20%DeVOPs/微服务50%日志管理80%本年度建设内容:序号功能模块预计完成备注平台自动部署100%平台能在30分钟内,完成平台部署