DevOps案例 | *网络* 项目端到端应用实践

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

640?wx_fmt=png&wxfrom=5&wx_lazy=1

【摘要】

以敏捷研发模式运作,结合其主要使用Java语言开发,产品架构包括后台服务、前端Web和APP以及多个软件部件的特点,对整个产品计划研发应用中需求管理、特性故事管理、代码托管、持续构建、自动化测试、版本发布、故障管理等都做了合适的规范要求和约定,并很快建立起一套比较完整的DevOps工具链支持。


【关键词】

DevOps,Docker,云CI,制品库,自动化测试,度量


【工具链介绍】

整个产品规划研发应用使用一序列工具链支撑:

DevOps案例 | *网络* 项目端到端应用实践_第1张图片

1) 原始需求由最贴近市场的用户录入原始需求管理系统系统并由规划组人员收集分析整理形成正式的产品需求。

2) 产品需求录入需求管理系统后由需求分析人员组织需求实例化分析,在线完成需求到特性再到故事任务的分解。

3)需求管理系统中待实现的特性故事任务由开发团队评估并纳入迭代开发计划,开发人员进行开发,经过代码审查、故事特性测试、BA验收后在线变为开发完成状态。

4)代码托管使用Gerrit系统,编译构建使用云CI系统,代码静态检查使用Klockwork云检查系统,版本使用制品库管理,自动化测试接入云测试管理系统。

5)整个产品研发过程使用Wiki进行产品研发应用及各个团队协作信息共享管理,各个阶段信息接入度量系统进行度量分析和信息共享展示。


实践情况

DevOps案例 | *网络* 项目端到端应用实践_第2张图片

DevOps几个重要支撑工具关系图

 

代码库迁移:

SVN向Gerrit迁移,Gerrit迁移使用后带来一下好处:

1. 除了创建子库和配置子库访问权限组需要由管理员配置操作之外,频度较高的子库访问权限成员增减交给团队自己决定,解决之前SVN权限管理审批流程较长的问题。

2. 单库下载速度提升较多,约10倍的提速率。

3. 代码规模统计与度量系统接口简单,能够快速通过度量系统配置个人代码规模统计和统计结果邮件自动推送至项目组。

4. 公司层面Gerrit代码托管整理效率更高更安全。


云CI部署使用:

DevOps提供的基于Jenkins的CI服务,拥有海量资源供项目实现高并发调度,使得项目不必关心底层资源,只专注于业务本身。


代码Klockwork静态检查:

项目开发语言以Java为主,使用Klockwork工具对Java代码进行静态扫描检查。Klockwork静态检查分为两步进行:

1. 开发人员编码完成归档代码之前,本地通过集成到Eclipse开发环境中的Klockwork插件对新增代码进行扫描,发现告警消除后再归档到Gerrit上。项目约定,归档代码到Gerrit库之后发现的Klockwork告警,按开发人员泄漏故障对待。KW本地Java代码扫描告警消除配置参阅《Klocwork Eclipse插件的安装和使用》。

2. 项目部署云KW扫描,每日对项目代码进行静态扫描,发现告警信息推送到项目组。每日KW扫描邮件推送结果。


版本发布管理:

开发团队按版本计划开发完成版本后,向版本需求者发布不同性质的交付版本。历史发布版本记录到版本发布管理系统,能够回溯查询和版本应用管理。开发团队交付发布版本分为项目内部集成版本、外部集成版本、内部验收版本、外部验收版本、正式商用版本、实验定向版本、用户试用版本、商用补丁版本。根据外部关系协作及上下游交付流程,不同时期发布不同性质的版本满足各方需求。开发团队对外发布的各种不同性质的版本,记录到版本发布管理库中,能够支持历史版本信息查询,历史版本信息度量统计,方便内外部干系人很容易获取版本相关信息,减少版本相关信息沟通成本,提升DevOps链在交付版本环节管理效率。


外部故障跟踪管理:

鉴于产品外部应用面分布交广,外部故障信息收集和跟踪比较困难的情况,借用需求开发管理系统的外部故障管理跟踪功能,用户直接将外部问题录入需求开发管理系统,自动推送邮件到项目研发团队进行跟踪处理,并向外部干系人自动推送问题解决进度。如下图所示:

DevOps案例 | *网络* 项目端到端应用实践_第3张图片

协作与度量:

借助Wiki系统实现项目团队间信息传递与共享,通过度量系统推送项目团队和成员等不同维度的研发构成度量指标信息。


度量系统应用:

研发过程与度量系统对接,各个阶段研发过程指标通过度量系统汇总分析并推送给项目组。度量指标展示说明:

 

度量系统应用极大效率提升及时了解研发过程各个环节各个团队度量指标信息,将人力从人肉度量数据统计中解放出来,度量数据展示更灵活,速度更快,且自动实施。


效果评价

项目有一套完整的DevOps端到端的应用实践,为提升项目研发效率,快速便捷地实现信息共享发挥积极作用。需求管理线借助原始需求管理系统系统、需求开发管理系统支撑需求分析、迭代开发和版本交付的流程。Gerrit、云CI、云KW、制品库、云测试、版本发布管理支撑从代码托管、版本构建、静态检查、版本管理、自动化测试和版本发布管理的各阶段管理。


DevOps工具链改进建议

1. 原始需求管理系统系统与下游需求分析管理系统实现对接。

2. 云KW增量代码扫描结果推送,将引入KW告警关联到个人。

3. 云测试增强对第三方测试工具报告解析格式转换兼容支持,方便获取更多自动化测试细节信息。

4. 度量系统配置项较多时,上下翻滚寻找比较困难,建议增加下一级分类。

5. 度量系统右面趋于弹出对话框与滚动条位置没有关联,建议弹出对话框显示在滚动条当前位置。

6. 度量系统指标项过滤条件过于简单,计算过滤昨天数据不方便实现。

7. 云KW扫描规则需要方便配置和修改。

 640?wx_fmt=png

你可能感兴趣的:(DevOps案例 | *网络* 项目端到端应用实践)