写点什么

规模 300+ 的研发团队,怎样保持工程高质高效?

  • 2019-10-05
  • 本文字数:2879 字

    阅读完需:约 9 分钟

规模 300+ 的研发团队,怎样保持工程高质高效?

七牛云从最初发展到现在已经七年了,目前有 300 多名研发同学、六大业务线:云存储、CDN、直播云、容器云、大数据、以及人工智能实验室。而在七牛云优秀的产品研发团队身边,还存在着一个负责质量管理、工程赋能、以及过程改进的重要部门——七牛云工程效率部。



本期由七牛云工程效率部负责人李倩和大家一起探讨工程效率的问题。分享她一路以来的心路历程,以及整个团队从 0 到 1 的演进过程。

01 工程效率部发展历程


我认为组织的变革应该基于对业务和发展更有利的角度进行,并不是非要有测试组、质量保障部、工程部等等。更重要的是在公司现有条件下,你能提供什么能力,以及这样的能力是否能让业务更好地发展。


同时,在创业公司最大的感受就是拥抱变化。在这个过程中,你会发现很多事情并没有为你准备好,你要做的就是去不断适应,不断地寻找最大价值,提升自我。下面我为大家简单介绍一下工程效率部的发展历程:


  • 2014 年,工程效率部介入,当时主要负责跟进前、后端测试。这时我们要做的第一步就是搭建完备的测试环境;

  • 2015 年 3 月成立测试组,对三大业务线(存储、数据处理、CDN 测试)进行日常质量保障。从一开始我们就倾向于用自动化的方式解决问题,所以招聘的也都是测试开发工程师。也是从这个时候,我们引进了基本的 CI / CD 交付能力;

  • 2016 年 2 月成立质量保证部,服务于整个研发,开始写测试服务,并完善 CI / CD 的能力,将 pipeline 自动化。除此之外,我们还同时管理着公司内部平台及工具链,并写了一套质效分析平台;

  • 2017 年 2 月成立平台服务组,并研发了效能平台,引入容器,把容器作为效能平台里最基础的技术使用。同时,部门正式改名为工程效率部(V1.0);

  • 2017-2018 年,工程效率部( V2.0) 内部组织结构优化,以适应七牛业务飞速增长,为技术体系赋能。

02 工程效率部的团队架构


作为一家做基础服务云计算的公司,我们要帮助客户更快、更好的提供技术能力。我们的内部愿景是:缩短优质代码到生产上线 / 客户间的距离。这也是工程上非常重要的一段距离。


我们的体系主要分三大块:质量管理、工程赋能、以及过程改进。虽然这里有虚线、实线组织,但整体来说是有机的整体。我们不但要做质量,更重要的是在有效率的情况下,如何把质量做到最好。


  • 质量管理:有专门的 QA 同学深入研发业务,识别质量风险,建立质量反馈闭环。同时围绕目标不断加深自动化程度,适配更多交互场景,大客户。这里主要的人员是测试开发工程师;

  • 过程改进:PMO 流程管理,保障我们整个流程尽量简化,并适于公司发展,适当的时候我们会通过它来做最佳实践传播;

  • 工程赋能:是 CI/CD 的主线,也是我们的轴心,它让我们做的所有工作都能有很好的平台化追踪。完善优化质效度量体系,让大家更有目标感,知道我们应该从哪些角度去解决问题。


总结成一句话就是:工程效率主要是关注交付链条中研发交付环节的品控,以及效率的整体的交付能力。

03 质量意识的传承与升级


那么如何做到质量意识足、代码敢交付、服务敢升级,主要有三点:


1.工程师对质量有极致的追求。代码和 Bug 都是人写出来的,所以我们会要求工程师对自己的代码负责 —— Eat your own dog food 。


2.内建质量的建立。内建质量决定外建质量,在交付之前的所有过程要尽量提前,并提升内部质量。比如:单测、静态扫描分析、集成测试等等,每一步失败就要去修复。每走一步都要提供验证机制,让代码有办法校验,对整体的质量负责;


3.DevOps 工程文化引入:做一件事情如果超过两遍的,我们就需要去思考这样做是否真的更有效率。所以我总结了一句话:Everything is Code。

04 技术演进

这方面我主要想跟大家讲一下质量小组的基本的技术实践路径,这是每个 QA 同学都要去做的,以及每个开发同学都要理解的。



首先,我想解释一下为什么会有上图这种看似 step by step 的效果。我们的产品很多是从 0 到 1、再到 10,所以一开始我们需要介入很多工作,而不是自始至终做同一件事。每个技术人都要不断进化自己,把自己的工作重心从 A 转到 B,再到 C。


  • 第一阶段,提升代码本身的质量、内建质量,我们为开发人员提供反馈,让他知道哪里做得有问题;

  • 第二阶段,针对产品业务,输出 API 级测试服务;

  • 第三阶段,从代码分析去提高测试的覆盖率,基于测试覆盖率,辅助进行精准化测试;

  • 第四阶段,针对服务间的依赖,做 mock 或回调的辅助测试;

  • 第五阶段,考虑错误注入,模拟故障情况下的应对表现;

  • 第六阶段,推出更多维度的检测手段,不仅是 e2e,还需要有基于业务的调用链衡量,服务自身健康状况等等,评估产品的每一次迭代;

  • 第七阶段,将各个阶段的产出、总结、抽象,进行服务化,产品化输出,以服务模式提供质量保证。

05 平台演进

平台演进比较重要,我们需要考虑是否有可能把更多的东西搬上服务。同时,平台化是服务化之后的阶段 —— 如何把服务融入到整个流程中,并且被完整的管理,提供一定的工程能力。我们的目标就是量化产品的质量和效率,提供质效分析能力,识别薄弱环节。



上图是以服务级别或模块级别列出来的主要功能:包括单测覆盖数据、静态扫描和代码检查、集成测试覆盖、缺陷和事故分析、发布跟踪、服务探测,竞品性能 benchmark 检测和工具箱。



这是我们质效平台的后台,这是其中的几个指标,里面有冠、亚军之分,是一种激励和评比。我认为,没有对比就没有伤害,没有对比也就没有进步。我们会把一些关键指标量化,也会相应推出奖励措施。但并不是奖励冠军,我们会按照各团队的成长速度进行奖励。



工程效率平台狭义上是 Devops 或 CI/CD 平台,广义上是软件工程的信息化平台。


  • 编译:通过 Jira HOOK 定时触发任务,同时在 GitHub 上 声明要讨论的任务,触发系统编译。再将构建结果 push 到容器里,把结果 Archive 到存储里做备份;

  • 部署:对服务进行分组,提供一定的组装能力,让多个服务构成服务组,同时支持实时日志检索,把生成的日志打到 Pandora 大数据平台;

  • 测试:因为测试服务和生产服务比较类似的,所以部署方式也类似的。我们会生成 test report ,同时让 Log 打到质效平台。在测试方面比较重要的一点是:和质效平台交互产生大量的数据,每一个数据都记录下来;

  • 分发:我们针对对象存储做分发。容器化部署会用容器平台做发布;物理级部署会用相应统一的位置发布。



下面我和大家分享一下七牛在实践上的结果。指向会从上图的两方面考虑:质量和效率。


质量方面:核心服务单测覆盖包括上传、下载、删除、直播推流播放等,这些核心服务覆盖率在 60% 以上、合规 80% 左右、pipeline 通过率 80% 以上、集成测试覆盖率 35%;


效率方面:pipeline 构建 2 - 10 分钟、缺陷解决率 82%+、发布频度每周 40+、核心服务 MTTR 在 2 小时以内。


效率方面:pipeline 构建 2 - 10 分钟、缺陷解决率 82%+、发布频度每周 40+、核心服务 MTTR 在 2 小时以内。


最后,说一点自己的感悟:做正确的事情,不要给自己设限。尤其在创业公司,你会发现有很多事要做,也许你会认为有些事该做,有些不该做,但我认为没有应该与不应该,只要这件事是正确的,就一定要推动 get it down。


本文转载自公众号七牛云(ID:qiniutek)。


原文链接:


https://mp.weixin.qq.com/s/ZO7vDUKBh-DXucev9iSXWA


2019-10-05 17:451228

评论

发布
暂无评论
发现更多内容

【FlinkSQL】Flink Table & SQL 数据类型

Alex🐒

flink 翻译 FlinkSQL flink1.13

都啥年代了,求你别再说Redis是单线程了!

Java redis 编程 程序员

JAVA中的浮点数与二进制

加百利

Java 后端 二进制 6月日更

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之EXCEL数据导入(九)

crudapi

Vue crud crudapi qusar 数据导入

阿里最新发布的 Spring Cloud ALiBaBa 全解第三版,一睹庐山真面目!

Java 程序员 架构 微服务

MTU带来的问题

BUG侦探

网络技术 网络运维 GRE 隧道

👋 Agora Flat 开源教室 Web 版上线啦~

千竹

开源 音视频 在线教育 互动白板 互动课堂

竞赛|数据竞赛Top解决方案开源整理

不脱发的程序猿

开源 数据竞赛

【布道API】API端点/资源命名最佳实践

devpoint

RESTful Rest API 6月日更

4面拿华为offer的水平,面试阿里居然一面就被吊打?

Java架构师迁哥

36氪企服点评|中国企服软件金榜-项目管理系列榜单揭晓,Worktile夺魁!

爱吃小舅的鱼

项目管理 研发管理 研发工具 项目管理工具

教你三种jQuery框架实现元素显示及隐藏动画方式

华为云开发者联盟

jquery 动画 元素 JQuery框架 网页

一文你带快速认识Vue-Router路由

华为云开发者联盟

html Vue vue-router 路由 路由管理器

一款超牛的 Linux 终端复用神器(附安装、使用教程)

学神来啦

Linux 学习 运维 安全

5分钟带你玩转国内首款研发自动化工具PingCode Flow

PingCode研发中心

研发管理 研发效能 自动化管理 研发工具

百度大规模Service Mesh落地实践

百度Geek说

Service Mesh 软件架构

基于 Flink 打造的伴鱼实时计算平台 Palink 的设计与实现

Apache Flink

flink

淘宝“618”双11系统架构是如何设计的呢?这份Java千亿级并发系统架构设计笔记告诉你答案

Java 程序员 架构 计算机

揭秘视频千倍压缩背后的技术原理之预测技术

拍乐云Pano

从零开始学习3D可视化之场景层级(1)

ThingJS数字孪生引擎

大前端 物联网 可视化 3D可视化 数字孪生

6月18日华为云携手中科院上海药物所,深度解读AI药物研发技术

华为云开发者联盟

AI 华为云 药物 TechWave EIHealth

QCon演讲| 从团伙到团队,PingCode研发团队敏捷实践血泪史

爱吃小舅的鱼

敏捷 研发管理 研发效能 开发

对话吴军:人工智能如何推动金融行业的数字化转型

索信达控股

人工智能 大数据 金融科技 数字化转型 金融

【FlinkSQL】Flink Table & SQL 时间属性

Alex🐒

flink 翻译 FlinkSQL flink1.13

微服务架构中的两款流量防卫兵

悟空聊架构

sentinel 高并发 Hystrix 6月日更 流量防控

北京人工智能产业联盟成立,百度CTO王海峰出任联盟理事长

百度大脑

人工智能

2021年马士兵老师1000道Java大厂面试真题视频解析+笔记+源码

Java架构追梦

Java 架构 面试 马士兵

奇亚矿机系统,Bzz分币系统,云算力APP开发

智慧工厂|全方位监控管理,可视化让生产变的透明

一只数据鲸鱼

数据可视化 工业互联网 智慧农业 智慧工厂 纺织企业

汽车之家:基于 Flink + Iceberg 的湖仓一体架构实践

Apache Flink

flink

爱奇艺于首届MediaAIAC与首届高新视频创新应用大赛斩获三项权威大奖,技术实践领跑行业创新

爱奇艺技术产品团队

规模 300+ 的研发团队,怎样保持工程高质高效?_文化 & 方法_李倩_InfoQ精选文章