代码混乱?bug 不断?这个研发效能工具矩阵或许对你有用——研发效能系列分享(一)

2018-08-01   出处:小米云技术  作/译者: 王福  

前言
小米研发效能工具矩阵(下称工具矩阵)是小米云平台通用架构与工具团队根据行业趋势和公司互联网业务发展现状提供的一系列 CICD 工具的集合。作为整个研发效能技术底层支撑,工具矩阵通过服务 2000 + 工程师、1000 + 项目,为手机、MIUI、TV 和人工智能与云平台等多个部门的软件研发提供了质量改进、法律审计、效率提升方面的帮助。


背景

为什么会在人力和资源紧缺的情况下依然义无反顾坚持在研发效能领域进行投入?
首先,从软件开发的趋势上来讲,现今的软件产品交付已然涉及一套完整的供应链。大型客户端软件如此,服务化、微服务化趋势下服务端项目亦如此。基于分解与还原理论的技术分工的确能在一定程度上解决原始方式的一些问题,但是由此带来的交付频率和成本变高等问题也越来越严重。尤其对大公司来讲,一个软件项目涉及的内外依赖方、上下游团队关系错综复杂,实现一次完整的健康的软件交付过程成本越来越高。
其次,从行业角度,国内各同行在研发效能领域也一直投资不断。远如华为、阿里等公有云服务提供商,均投入整建制的研发资源深耕研发效能领域(华为软件研发云参与工程师在 100 人以上)。近如百度,将内部使用的研发效能相关平台打包为『百度效率云』平台对外开放使用。同时,诸如头条、美团等公司,也在其他城市新开设的研发中心招募研发效能方向的技术人才。
最后,从公司角度,随着公司规模不断增长,人员和组织扩展之后带来诸多问题。比如 10 人团队推行某套标准吼一嗓子抓一两周可能就达标了,但是 50 人团队吼了很多次还是有人钻空子不遵守标准和规范;测试环境原本每天部署频率不高,团队共用一套测试环境不会出现问题,但是业务规模多了之后多个 feature 并行开发,A 同事刚部署完测试代码还没结束测试,B 同事部署了新的 feature 代码;再比如,某些审计场景下,无论业务主管、审计、法律还是基础数据部门,没有哪个团队能够给出符合某个特征的待审计的项目的完整名单,导致各项审计工作即便投入大量精力依然有一定概率出现漏网之鱼。


现有工具

基于上述诸多背景考量,我们在综合权衡成本、效率和效果三个维度的基础上,通过开源 + 采购 + 自研三种方式,构建了如下所述的研发效能工具矩阵。
1. 持续集成引擎 Jenkins
介绍:
Jenkins 是一个开源的持续集成工具,用于监控和调度重复的任务,该工具使软件的持续集成成为可能。在做了充分调研和沟通后,我们选择 Jenkins 作为持续集成的引擎。

做的工作:
平台搭建:为了提高 Jenkins 集群的资源利用率,我们基于 K8s 集群搭建了多套可伸缩的 Jenkins 集群。
运营接入:目前公用集群已经接入 530 个 Job,涵盖云平台、AI、小爱、手机 BSP 等多个公司重要业务或服务。
接入:如有接入需求,可联系刘欣(liuxin11@xiaomi.com)、王福(wangfu@xiaomi.com)


2. 代码扫描审计平台

介绍:
代码扫描平台,主要包含 Sonar、Coverity两个平台。


3. 二进制存储与扫描平台
介绍:
二进制存储与扫描平台,主要包含 Docker Registry 、Artifactory、Xray 三个平台,主要提供各种二进制文件的存储、扫描等功能。




技术规划

结合业界其他公司的实践和现有业务现状,我们将研发效能领域的技术架构分为三层,从下到上分别是工具层、平台层、数据层。



如图所示,
工具层,即为本文前述的各项平台的总和。主要通过基于开源项目搭建、采购或自研的方式提供服务,供不同技术类型的团队选择使用。
平台层,为正在开发中的功能。主要包括项目登记注册管理、一站式工作流平台(Pipeline)等功能。
项目登记注册管理:主要是为了解决目前公司内多套代码仓库等背景下,无法无遗漏的完整覆盖某些特定需要审计的项目类型的问题。
一站式工作流平台(Pipeline): 主要是为了解决用户在使用上述独立平台时操作和配置过于繁琐的问题。期望通过在平台上一次简单的配置就能立刻获取平台提供的绝大部分共用的基本能力。
数据层,是鉴于在上述两层的基础之上,依然存在诸如平台数据单点等问题。因此,我们正在逐步整理上述两层产生的各项数据,逐步构建数据仓库。然后在数据仓库基础之上,提供工程质量报告、异常数据监控等能力,以满足工程质量改善和审计风控等需求。


未来计划

目前,在工具矩阵层面,我们也正在努力推动 GitLab 版本升级和 DockerRegistry 统一整合,以期为大家提供更优质的代码和二进制存储服务;我们也在加紧推进一些安全扫描、法律审计扫描平台的搭建和推广工作,以协助相关部门降低因安全或法律问题导致业务损失的风险。
同时,我们正在全力推进一站式工作流平台(Pipeline)的开发,一期将于 3 季度上线,将主要提供打通基于容器部署测试环境、一键接入代码检测工作流等功能,以求更快捷更高效的赋能业务工程质量改进和研发效率提升。



欢迎给测试窝投稿或参与内容翻译工作,请邮件至editors@testwo.com。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
180°|1802 人阅读|0 条评论

登录 后发表评论
最新文章