NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

华为开发者大会2023:云空间筑牢鸿蒙生态“云基因”

HMS Core

HarmonyOS

专家老师带教!现场答疑!阿里云实时计算 Flink 版线下训练营北京站来啦!

Apache Flink

大数据 flink 实时计算

2024杭州国际伺服系统与控制技术展览会

吹吹晚风

生成式AI:数字医疗前瞻的新引擎

百度开发者中心

医疗 百度文心一言

LeetCode题解:617. 合并二叉树,JavaScript,详细注释

Lee Chen

JavaScript LeetCode

文档比对技术难点与使用场景

合合技术团队

人工智能 算法 文字识别 文档对比

生成式AI在金融行业的创新应用

百度开发者中心

金融 文心大模型

达芬奇DaVinci Resolve Studio 18 for mac(视频调色软件) v18.5.1正式激活版

mac

苹果mac Windows软件 DaVinci Resolve Studio 专业视频剪辑软件

上央视啦!扫描全能王科技助力社会跑步进入无纸化办公时代

合合技术团队

人工智能 环保 无纸化办公

ARTS薪火重启之第一周

渣渣辉

算法 职业规划 心得分享

GeaFlow图计算快速上手之K-hop算法

TuGraphAnalytics

大数据 流计算 图计算 图论

2024杭州国际3D打印技术展览会

吹吹晚风

Python 运行 shell 命令的一些方法

互联网工科生

Python Shell Shell命令

“这对我个人能力的认可意义重大”!数据库“小白”到 Apache IoTDB committer 的心路历程!

Apache IoTDB

如何仅用几分钟就能破解8个字符长的密码?

高端章鱼哥

黑客 密码安全 破译密码

Apache Dubbo 云原生可观测性的探索与实践

阿里巴巴云原生

Apache 阿里云 云原生 dubbo

揭穿DevOps的5个谣言!

互联网工科生

DevOps 运维 自动化运维

腾讯云ES:一键配置,LDAP身份验证服务来了!

腾讯云大数据

ES

使用K8s的一些经验和体会

这我可不懂

Java Kubernetes 运维

用低代码实现企业敏捷运营

力软低代码开发平台

Waves 14 Complete for Mac(后期混音效果全套插件)v2023.08.09激活版

mac

苹果mac Windows软件 Waves 14 Complete 后期混音效果全套插件

生成式AI产业趋势:技术升级与广泛应用

百度开发者中心

百度文心一言 文心大模型

生成式AI:引领我们进入零信任世界

百度开发者中心

文心一言

生成式AI崛起,元宇宙发展遭遇挑战

百度开发者中心

元宇宙 文心一言

首起针对国内金融企业的开源组件投毒攻击事件

墨菲安全

网络安全 安全 投毒分析

盘古开天、AI落地,走进华为看AI如何重塑千行百业

彭飞

Office 2019 for Mac v16.77 beta中文激活版

mac

office办公软件 苹果mac Windows软件 office 2019

解决并发冲突:Java实现MySQL数据锁定策略

高端章鱼哥

Java MySQL 数据库

如何唤醒潜在用户?选择智能化推送系统的重要性

MobTech袤博科技

前端 前端开发 APP开发 前端开发工具

到底该不该使用Python?

这我可不懂

Python Go 数据库

基于eBPF技术构建一种应用层网络管控解决方案

统信软件

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