写点什么

平台级 toB 产品的研发品控管理解析

  • 2020-04-14
  • 本文字数:3257 字

    阅读完需:约 11 分钟

平台级toB产品的研发品控管理解析

前言

产品质量是吸引和积攒用户的重要因素,业内不乏由微小 bug 引起的灾难事故,对用户或公司造成巨大的损失。从业务角度,质量是产品口碑、市场、收益背后的助力;从技术角度,高可用性是衡量系统架构的核心指标之一。对质量的高要求并不区分产品类型,但是从研发团队的角度上,toB 产品的研发团队更加需要强化品控的意识,尤其是平台级 toB 产品。


腾讯云云开发是一个一云多端的应用开发平台,日调用量达 7 亿多次。作为一个平台级 toB 产品,云开发的研发团队又是如何做好研发品控管理,以确保交付的产品高可用呢?本文将从职能分工、研发规范、研发流程三个维度,与大家分享云开发研发团队的品控管理。

平台级 toB 产品的质量危机和信任危机

平台级 toB 产品提供的功能大多是细粒度、可组合的原子能力,B 端开发者通过组合不同的能力完成业务逻辑,属于 C 端应用背后的间接支撑。



toB 平台不直接接触 C 端一线用户,发生问题后需要经过二次传导才会影响 C 端逻辑。这种性质决定了 toB 平台在产生质量问题时与 toC 产品的两个差异点:


  • 影响面大

  • 反馈链长

影响面大

以云开发为例,B 端开发者针对不同的业务模块编写对应的云函数,某些云函数也可能被多个业务模块之间共用。一旦支撑云函数运行的底层系统出现问题,其影响范围可能会覆盖多个函数,进而扩散至业务逻辑层造成无法预估的破坏。

反馈链长

C 端用户在使用应用程序遇到问题时可以通过客服、社区等方式反馈,很多研发团队还会提供直接联系研发人员的渠道,目的是尽快收集问题并且第一时间解决。而使用 toB 平台开发的应用程序如果问题的症结在平台本身,B 端开发者则需要经过一轮排查之后进一步反馈至 toB 平台的研发团队,反馈链远比 toC 产品更长。这从侧面表明 toB 平台品控的敏感和重要程度。


toB 平台的质量危机极易引发信任危机。toB 平台作为生产工具为客户提供价值,一旦出现质量问题,客户对产品信任度将直线下降,产品需要恢复原有的信誉、口碑极其困难。需要时间、数据、市场等组合拳去挽留。事实上有一些 toB 公司就是“千里之堤溃于蚁穴”。


产品质量的把控并不仅仅是技术问题,高可用的系统架构背后同样有流程、分工等人的因素。研发过程严格的品控管理是保证产品质量的必要因素。云开发作为一款平台级 toB 产品,支撑小程序、Web、移动应用等多端平台,下面将简单介绍云开发背后的研发流程管理经验。

腾讯云云开发团队研发流程管理

首先介绍一下云开发研发团队的职能结构,一次完整的迭代流程中存在以下职能:


  • 项目经理 PM:负责发起需求宣讲和评审,把控迭代节奏,保证在预排期时间内顺利完成迭代;

  • 产品 FO(Feature Owner):一次迭代需求很可能涉及多个子需求,每个子需求由指定的产品经理负责,产品 FO 把控主需求。产品 FO 往往由负责某个子需求的产品经理兼顾;

  • 技术 FO:同产品 FO 的角色类似,技术 FO 把控主需求,每个子需求由指定的研发人员负责。技术 FO 也同样由负责某个子需求的研发人员兼顾;

  • 产品经理:负责子需求的产品把控;

  • 研发人员:负责子需求的技术把控 ;

  • 测试人员:负责集成测试、多重回归并且在研发人员配合下完整测试 case 清单的制定和审核;

  • 运维人员:负责与产品和技术人员评估可能存在的风险并提前预案并实施。



金字塔形的职能结构能够覆盖迭代需求中的所有细节,并且由于产品 FO 和技术 FO 的总筹调度,当子需求发生未提前预估到的风险时也能够从全局的角度及时协调各个子需求的优先级和人员分配以保证整体进度的正常推进。

研发规范:坚持“三隔离”法则

通用的研发规范分为技术和流程管理两部分。


技术方面,为保障研发环境的安全性,相关人员需严格遵守“三隔离”法则,即:环境隔离、权限隔离和网络隔离。


环境隔离


完整的迭代周期需要经过研发、联调、测试、发布流程,每个环节都分别对应不同的环境,各个环境之间的数据不能共用和混淆。


  • 开发环境:即研发人员独立的环境空间;

  • 联调环境:前后端联调所用的环境;

  • 测试环境:开发完成后集成测试的环境;

  • 体验环境:测试完成之后供产品经理体验完整流程的环境;

  • 预发环境:灰度发布之前有一个完全仿真现网的预发环境,此环境的数据与现网共用,用来做发布前的最后验证和缓冲;

  • 现网环境:即线上环境,发布现网需渐进灰度。


权限隔离


对于涉及服务变更的需求,研发人员不能直接登录服务所在的服务器进行变更,必须经过跳板机授权。权限的严格隔离是为了维护服务器的稳定性以及权限的集中管理和收归操作。


网络隔离


办公网络、开发网络、公共网络之间的可访问权限分离,这对于 IT 研发来说是普遍的规范。


在流程管理方面实施以下原则:


  • 提前预案:对迭代需求可能存在的风险进行提前预估和预案;

  • 研发测试排期 1:1:一次完整的迭代周期一般是 4 周,研发和测试的排期分别占据 2 周。

研发流程:品控意识贯穿全流程

在整体流程上,云开发与其他大多数研发团队并没有太大区别,一次迭代流程依次经过评审、研发、测试和发布。品控意识体现在细节把控上。


需求宣讲


需求宣讲是发起迭代后的第一个步骤,PM 发起宣讲会议,有需求的产品经理们在会议中描述需求的背景、优先级、重要程度、成本以及预期等细节,所有参会者们共同对所宣讲的需求进行评估,确定是否加入到本次迭代中。最终宣讲结束后确定本次迭代的需求清单,进入技术评审环节。


技术评审


技术评审由项目经理发起,所有职能人员均需到场。产品经理提前建立需求单,在发起评审时进行逐行逐字描述,然后由研发人员和测试人员进行技术可行性评估,对需求描述中不清晰的地方进行讨论和纠正,以及预估可能存在的风险和对应的预案。需求明确后给出研发和测试方案以及各自的排期。研发和测试的排期比例为 1:1。


研发


在进入研发阶段之前,测试人员需要根据本次需求产出测试案例清单,并且由研发人员和产品经理共同审阅、补充和纠正。


前后端研发人员在各自的开发环境中编写代码,如果涉及服务变更则需严格遵守环境隔离规范借助跳板机登录服务器。


测试


在将需求提交测试之前有两项预备工作,缺一不可:


  • 研发人员需要根据测试案例清单产出进行自测并产出自测报告;

  • 产品经理需在联调环境下体验完整的功能和操作流程。


测试人员首先在测试环境下进行功能验证,在此过程中研发人员和产品经理共同协助。测试完成后由研发人员将代码部署至体验环境,然后测试人员进行完整的案例回归,通过后再部署至预发环境,再次完整回归之后才可达到发布标准。也就是说在测试环境需经过一次完整测试和两次回归。


发布


服务发布需严格遵循渐进灰度的策略进行,SDK 的发布需要依次按照“alpha->beta->正式版”的流程推进。除此之外,功能的变更不仅仅是代码本身,不同的产品类型往往还会涉及文档、多渠道等周边工作,比如服务的发布会影响多端 SDK,每个 SDK 的 API 及其对应的文档都需要同步进行更新。所以根据服务模块或 SDK 渠道进行专人专项划分也是很有必要的。保证发布出口的唯一性,并且在发布之前进行严格的涉及工作清单遍历。


回归


灰度发布过程中和全量发布之后,测试人员需要同步跟进对已发布的功能进行回归测试,完全通过后即本次迭代结束。



虽然从整体流程上与绝大多数技术研发团队并无二致,云开发团队对品控的管理意识体现在:借助完善和严格的规范制度将每个环节中可能出错的细节均通过技术和人的双重角度进行覆盖,很大程度上减少了质量问题的产生。

总结

计算机技术经过几十年发展到今天,人的很多工作可以由机器协助完成甚至被完全取代。技术力量的伟大无可置疑,但人的因素同样不可或缺。产品质量的把控容不得一丝大意,不论是技术缺失还是人为失误。云开发作为一款平台级 toB 产品,其高可用性背后是技术与人的双重加持。云开发研发团队在提高技术能力的同时,并未忽略人在其中的伟大性,未来我们也将继续秉承这项原则,将技术和人的双重因素渗透至研发品控管理的每个细节之中。

作者介绍

周俊鹏,腾讯高级前端工程师,就职于腾讯云云开发 CloudBase 团队,负责云开发 Cloudbase 相关技术研发工作。Qcon2017 讲师,GMTC 2018/2019 出品人,主要研究方向是前端图形编程、工程化和 web 应用层架构。著有《前端工程化:体系设计与实践》和《前端技术架构与工程》。


2020-04-14 16:452686

评论 1 条评论

发布
用户头像
SDK的开发,就跟APP迭代一样,把SDK当成产品严格按照流程来开发,一旦SDK出现严重的质量问题,被投诉的压力巨大:
1、需求采集和排期:定期采集开发团队的需求、技术规划的落地以及技术债务的梳理汇总成需求池,然后和各干系团队探讨排定需求优先级,以及整体计划,并将需求作为featurelist上研发流程;
2、方案设计和评审:基于需求特性,设计方案并邀请干系团队一起参与评审,确定方案是否OK,尤其是接口设计;
3、编码:SDK本身的编码要遵守SDK的开发规范(SDK要有版本号、异常情况的错误码等),除了SDK外,还要编写Demo(基于各个接口的调用、各个接口的压力测试等,便于接入SDK的同学使用和SDK开发者自测);
4、提测:将代码和设计文档开放给测试工程师,以便于测试工程师设计更为合理、更能全面验证SDK的方案,SDK测试通过的前提是测试要输出一份专项测试报告,报告内容包含SDK的功能、性能、稳定性等体现SDK质量的指标,专项测试通过后才能进入发布流程;
5、发布:同APP发布流程一样,先灰度再全量,将影响控制在足够小的范围。
展开
2020-04-16 08:17
回复
没有更多了
发现更多内容

【LeetCode】二叉搜索树中的搜索Java题解

Albert

算法 LeetCode 12月日更

高效设计一个LRU

bigsai

数据结构 算法 LRU

Android C++系列:Linux网络(二)通信过程

轻口味

c++ android 28天写作 12月日更

python scrapy极细拆解,打开Spider类看内容,顺手爬了一下优设网

梦想橡皮擦

12月日更

Go语言学习查缺补漏ing Day6

恒生LIGHT云社区

golang 编程语言

大厂面试算法题之链表

程序员学长

好习惯影响孩子的一生

Tiger

28天写作

API标准化对Dapr的重要性

行云创新

人人都能读懂的react源码解析(大厂高薪必备)

buchila11

React React Hooks

数据分析从零开始实战专栏导航@老表

老表

Python 数据库 数据分析 pandas 数据分析从零开始实战

李飞飞力荐:阿里巴巴高可用数据库解决方案

博文视点Broadview

基于MRS-Hudi构建数据湖的典型应用场景介绍

华为云开发者联盟

数据仓库 数据湖 华为云 Apache Hudi MRS-Hudi

Perforce用户文章转载:用了P4这一招,九成问题能自救

龙智—DevSecOps解决方案

报错 perforce

Go语言逆向技术:恢复函数名称算法

华为云开发者联盟

二进制 函数 go语言 逆向分析 恢复函数名称

了解 Flutter 的Timer类和Timer.periodic【Flutter专题19】

坚果

flutter 28天写作 签约计划第二季 12月日更

dart系列之:浏览器中的舞者,用dart发送HTTP请求

程序那些事

flutter 浏览器 dart 程序那些事 12月日更

【报名中】我们把你对 ShardingSphere 的好奇,都放在这场 Meetup 中

SphereEx

数据库 开源社区 ShardingSphere Meetup SphereEx

前端面试题之模块化开发

@零度

大前端 模块化

Flutter 详解 CupertinoSegmentedControl 分段控制器

阿策小和尚

28天写作 0 基础学习 Flutter 内容合集 签约计划第二季 12月日更

第三天用 Mac,我安装了这些玩意

悟空聊架构

Mac 28天写作 悟空聊架构 12月日更

通过接口上传文件到百度网盘

为自己带盐

28天写作 百度网盘 签约计划第二季 12月日更

2.react心智模型(来来来,让大脑有react思维吧)

buchila11

React

架构师实战营模块一作业

圈圈gor

「架构实战营」

管人理事

张老蔫

28天写作

年度重磅!华为云2021应用构建技术实践精选集,免费下载!

华为云开发者联盟

数据库 大数据 云原生 数字化 华为云

【量化】实战获取资产组合理论模型的数据源

恒生LIGHT云社区

资源 量化投资 量化

如果TGO是经纪人,我们会怎么办?(9/28)

赵新龙

28天写作

给弟弟的信第7封|离开大学的喜与悲

大菠萝

28天写作

java开发之java开发环境的快速构建

@零度

Java java开发环境

模块一课程作业

李晓笛

万众提供素材,万众联合创作

mtfelix

28天写作

平台级toB产品的研发品控管理解析_大前端_周俊鹏_InfoQ精选文章