前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在企业推行DevOps,先规划好这几件事

在企业推行DevOps,先规划好这几件事

作者头像
用户7533190
发布2020-07-14 14:15:33
8590
发布2020-07-14 14:15:33
举报
文章被收录于专栏:基哥杂记基哥杂记

1.先把代码质量做好

企业IT建设中想要推行DevOps,第一步先做好质量内建,质量内建的方式有哪些呢?首先我们通过自动化测试、重构、简单设计等手段,可以使在编码阶段引入的缺陷变少,因为我们代码写清楚了,bug就藏不住了。同时当我们做到自动化测试等工作时,在编码阶段发现的缺陷也变多了。那么通过质量内建,我们在编码阶段就把大部分的问题都捕获到,同时引入的缺陷更少,降低了软件的开发成本。

今年软件平台部的目标围绕着产出、质量、规范来推进工作,这半年来,缺陷数有明显的下降,产品的交付质量有较大的提升。在软件的过程质量管控取得了一些成效:

  • 重视需求设计,在每个迭代开始的前半个月,PM内部就会组织需求内审,由PM老大整体把关,让团队内部聚焦于高价值的需求产出。内审完成后,组织研发Leader、架构师从技术上评估可行性,同时安排外部需求评审,并最终将需求文档落地到conflucence。PM、研发、QA的协作逐步变得有序和高效。
  • 项目过程管控,去年PJM的项目管理主要还是依靠WBS,先由PJM将需求拆分成任务,再由技术Leader维护子任务,如果涉及到跨项目协同,整体WBS的维护工作量很大。项目开展过程中,如果有临时任务变更,调整WBS就更痛苦了。因此经常出现月初定的WBS计划,在实际落地的时候偏离较大,需求的交付不可控。今年项目过程管控最大的改变是回归平台(JIRA工具),通过Scrum看板,维护需求/任务状态泳道,让状态流动起来,团队成员的协作可视,大幅减轻PJM的项目管理工作,同时也让成员更直观看出团队的产出和质量。
  • 编码规范要求,静态代码扫描,sonar的质量门禁已经逐步建立起来,也把阿里的p3c编码规范集成进来,严重级别为Blocker、Critical的规则,研发开始重视并在迭代中任务进行修复。整理Restful的接口开发规范,新上的云端接口开发,基本都是按Restful规范来执行。
  • 迭代评审验收,研发同学提测前需要进行迭代演示验收。由SQA同学提前准备演示剧本,研发要执行对应的业务场景测试用例,由PM和QA进行验收打分,通过3次迭代的试运行,效果还是显而易见的,缺陷数下降很明显。团队内部也逐步形成了这样的质量意识,对整体交付质量负责。Eat your own dog food,自己的狗食再难吃,也要含着泪吃完。O(∩_∩)O
  • 聚焦全流程业务测试,之前Arnoo和workwith业务的测试是分离的,如产品创建流程、App打包流程。经常会出现两端测试没问题,但合起来业务流程走不通,有不少低级缺陷流出。重新梳理以业务场景重构设计测试用例,弱化Arnoo和workwith的系统边界。

2.快速搭建基础平台

1.CI平台

持续集成平台是整个DevOps的基础,当前是基于Jenkins来实现的,Jenkins社区很活跃,插件也很丰富。Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变。Pipeline将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。Pipeline是一组插件,让Jenkins可以实现持续交付管道的落地和实施。初步先定义以下3条Pipeline:

  • 提交阶段的Pipeline,代码提交后,自动触发静态代码扫描,严重级别为Blocker、Critical的规则需要修复完成方可提交。
  • 验收阶段的Pipeline,Feature分支合并到Dev分支后,自动触发自动化测试、性能测试、安全扫描,这些测试用例执行异常需要马上修复,通过且研发自测OK,方可发起Merge Request。
  • 线上部署的Pipeline,选择发布策略(灰度、蓝绿、滚动),通过Ansible部署到公有环境,并通过监控公有云主机、组件服务状态来发现发布后是否存在异常。

2.ATP平台

ATP平台是自主研发的,一个集自动化用例管理、多终端UI、固件自动化、安全、性能测试等多功能一体的自动化测试管理平台。

  • 缩短软件端测试时间,测试分层,将一些功能测试用例通过API、APP自动化测试覆盖;pre回归测试,自动化测试用例先行,手工测试为辅,缩短测试周期;减少繁锁的重复性测试,如多语言文案,手机兼容性测试。
  • 提升固件测试效率,开发各种不同协议的客户端,ZB/WIFI/zwave/BLE,将一些功能测试用例通过脚本实现自动化;发现一些低概率事件问题,如配网成功率、设备控制等。
  • 提前发现系统性能问题,web后端、api、MQ集群的性能压测,提供性能分析报告:响应时长、吞吐量、CPU/内存/IO等;每个大版本发布之前都会触发性能检测,通过高并发模拟用户请求发现系统的性能瓶颈,提前规划资源。

3.发布平台

上半年运维基于K8S容器化的升级改造已全部完成,目前的发布基本还是半自动化,人为工作量不少且容易出错。K8S基于容器化编排,通过定义Deployment,就可以快速实现灰度、蓝绿和滚动发布,这个发布平台需要满足以下几点:

  • 对已部署的组件版本追踪
  • 全球多数据中心:统一部署管理
  • 多种应用的部署方式:传统java、镜像
  • 多种部署方案:部署顺序(多服务依赖串行、并行),部署上下线方式(更新实例步长、更新下线方式)
  • 部署系统全部平台化操作,无需登录服务器进行人为操作
  • 完全自动化,满足CD交付要求

3.如何来度量

DevOps落地是否带来了交付效率和质量的提升,如何度量就显得尤为重要,度量指标前期可以先考虑以下几个:

  • 平均需求交付周期,从需求提出,到需求可正常交付使用的时间,衡量研发的产出效率;
  • 单测覆盖率,重点关注行覆盖率和分支覆盖率;
  • 自动化测试覆盖率,主要是API的覆盖度;
  • 测试金字塔比例,手工测试占总测试任务的比例;
  • CI构建成功率,持续集成的稳定性和性能;
  • 自动化部署成功率,部署时长,衡量发布平台的性能和稳定性。

1.数据采集

从当前的各种平台(JIRA、jenkins、sonar)提取有用的数据,可以考虑流水线设计的思路,通过插件来实现数据采集,架构示意图如下:采集器是针对每一个对接的数据源平台实现的,它的作用就是对每个数据源进行数据建模,从而对平台屏蔽各种数据获取方式,将采集到的数据进行统一格式化上报和存储。在采集器上面可以设计一个 Operation 层,用来调整采集器的执行频率,控制采集数据的范围。如果数据量比较大,你也可以让采集器对接类似 Kafka 这样的消息队列,这些都可以按需实现。这样一来,新平台如果想要接入,只需要针对这个平台的数据特性实现一个采集器即可,平台的整体架构并不需要变化。

2.看板度量,通过看板可直观的了解这些关键指标的度量数据,很清楚地看到在DevOps推行后,研发效能是否有效提升,对度量较差的数据持续改进优化。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 基哥杂记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.快速搭建基础平台
  • 3.如何来度量
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档