最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

平台级 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:452489

评论 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
回复
没有更多了
发现更多内容

windows11泄露版尝鲜体验新功能!!!

学神来啦

win10 win11 windows10 windows 11

腾讯同事内推的那位Linux C/C++后端开发同学面试没过......

Linux服务器开发

Linux C/C++ Linux服务器开发 Linux后台开发 Linux网络编程

数据校检

若尘

计算机组成原理 6月日更

Flutter Webview添加Cookie的正确姿势

小呆呆666

flutter ios android 大前端

为什么vacuum后表还是继续膨胀?

华为云开发者联盟

索引 GaussDB 元组 VACUUM 行存表

网络攻防学习笔记 Day54

穿过生命散发芬芳

网络攻防 6月日更

最强大的内在激励:自我承诺

石云升

激励 职场经验 管理经验 6月日更

Flutter&Dart Callback转同步

小呆呆666

flutter ios android 大前端

nodejs学习记录

Node

不愧是Alibaba技术官,Kafka的精髓全写这本“限量笔记”里,服了

Java 架构 面试 分布式

CloudQuery 使用教程之《No.1 基础入门》

BinTools图尔兹

数据库 程序员 dba 国产数据库 运维开发

Quick BI的可视分析之路

瓴羊企业智能服务

阿里云 数据中台 数据分析 数据可视化 商业分析

fish_redux使用详解---看完就会用!

小呆呆666

flutter ios android 大前端 社区

马士兵强推面试前必刷:Alibaba内部Java高级架构师380道面试题

Java架构追梦

Java 阿里巴巴 面试 java架构

从五大结构体,带你掌握鸿蒙轻内核动态内存Dynamic Memory

华为云开发者联盟

鸿蒙 内存管理 结构体 动态内存 Dynamic Memory

去中心化的互联网,区块链域名如何对抗在线审查

CECBC

一进商场就迷路?ThingJS用室内导航拯救路痴!

ThingJS数字孪生引擎

程序员 大前端 可视化 3D可视化 数字孪生

4个改变你编程技能的小技巧,建议细读

欢喜学安卓

android 程序员 面试 移动开发

仿imtoken钱包源码开发,imtoken去中心化钱包开发

自定义 View 功能上线,你的小程序可以更多变

蚂蚁集团移动开发平台 mPaaS

小程序 mPaaS 自定义控件

企业想要升级生产管理系统,有哪些好用的低代码平台推荐?

优秀

低代码

4面字节跳动拿到Offer,灵魂拷问

欢喜学安卓

android 程序员 面试 移动开发

一周信创舆情观察(6.14~6.20)

统小信uos

一觉醒来,发现自建的数据库被勒索了,好可怕…

华为云数据库小助手

数据库 高可用 安全性 DAS

EBean ORM 框架介绍-3.实体草稿功能

Barry的异想世界

jpa ORM Ebean

“区块链指导意见”重磅发布 场景化应用昭示新蓝海

旺链科技

区块链应用 区块链供应链金融落地

用node写个简单的脚手架!

Node cli

限量!Alibaba首发“Java成长笔记”,差距不止一点点

Java 编程 程序员 架构 面试

Python接口自动化之常见用例读取方法介绍

行者AI

测试 #python

高性能计算对生命科学研究有何帮助?

北鲲云

云计算 高性能计算 生命科学 虚拟筛选

Rust从0到1-自动化测试-如何编写测试

rust 自动化测试 如何编写测试 Automated Tests

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