写点什么

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

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

Go语言的设计哲学

不负青春不负己🤘

Go 语言 语言设计

聊一聊利用Dijkstra求有向图的最短路径

Regan Yue

算法 10月月更

北鲲云超算平台能够为CAE行业发展提供哪些支持?

北鲲云

架构实战营-hw1

WWH

架构实战营

云栖发布|阿里云消息队列 RocketMQ 5.0:消息、事件、流融合处理平台

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件 云栖大会

硝烟弥漫的安全战场,只等一位超级英雄登场

脑极体

Python 编码规范

不负青春不负己🤘

Python Pythonic 编码规范

Docker Desktop 如何运行第一个 Docker 项目

HoneyMoose

和12岁小同志搞创客开发:如何驱动LCD1602液晶显示屏?

不脱发的程序猿

少儿编程 智能硬件 创客开发 LCD1602液晶显示屏

HMS的三年一诺,开放出璀璨星河

脑极体

[ 职场 ] 发现问题容易

baiyutang

职场 10月月更

模块一作业:微信业务架构图与学生管理系统毕设架构设计

dean

架构实战营

网络安全:SSRF+XXE漏洞挖掘笔记

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

作业六:电商微服务系统设计

紫云

在线文字转图片工具

入门小站

工具

中文字节长度引起的数据丢失

看山

Netty 10月月更

LogUtil日志工具类的封装

Changing Lin

10月月更

实作中的 std::is_detected 和 Detection Idioms (C++17)

hedzr

算法 c++17 Detection Idioms

官方线索|1024和腾讯课堂一起摇霸符

搬砖人

1024我在现场

聊聊开发日常的效率提升工具(全)

机器人主板需求配置参数有哪些呢?

双赞工控

从零开始,基于焱融 SaaS 数据服务平台搭建私有 WordPress blog

焱融科技

云计算 技术 分布式 高性能 文件存储

管理者如何授权

石云升

职场经验 10月月更

025云原生之Prometheus介绍

穿过生命散发芬芳

云原生 10月月更

ES索引mpping字段数据类型更改过程

李印

elasticsearch 经验分享

如何呈现一款软件产品的介绍页面

boshi

创业 学习笔记

微信对外部搜索引擎开放:自媒体平台开放搜索引擎有哪些意义

石头IT视角

微信朋友圈的高性能复杂度分析

Beyond Ryan

架构实战营

HarmonyOS 3.0.0开发者预览版全新发布

科技汇

dddd

askuy

nil,看这篇就够了

Rayjun

Go 语言 nil

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