持续交付加速产品迭代
· 阅读需 7 分钟
悦库网盘最早期仅支持window平台部署,现在服务端和客户端都支持多平台,随着支持的功能越来越多,系统的复杂度也大幅增加,每次迭代时间越来越长,导致迭代经常延期,产品交付后问题频发。
面临的问题1: 需求实现后不能立即测试验收
在敏捷开发模式中,产品需求在迭代中开发完成后需要尽早进入测试阶段,而不是等到所有需求都完成才进行测试,这样可以让问题更早被发现和处理,降低集成测试的BUG数量,从而降低迭代延期风险。
在悦库网盘产品的前期迭代过程中,我们就遇到很多问题,举例:
在需求开发阶段,通常是开发人员各自实施自己的任务,将完成任务并提交代码后认为需求开发完毕。但此时做完的需求由于没有集成和打 包,通常处于一种测试人员不可用状态,测试人员只能等待开发人员打包后才能进行测试。
在需求测试阶段,如果发现BUG,开发人员修改后需要重新打包测试人员才能验收。
每次版本发布前问题都特别多,需要不断的 “测试->修复->打包->验收”,对于复杂的多平台兼容系统,打包和部署的时间成本是非常高的,阻碍了整个团队工作进度。
面临的问题2: 产品集成复杂
每一个复杂的软件产品从程序员写完代码到安装包部署到用户生产环境都是一个复杂的过程,仅以悦库网盘windows客户端的构建流程为例:
- 编译32位虚拟盘服务。
- 编译64位虚拟盘服务。
- 编译3个32位explorer扩展dll
- 编译3个64位explorer扩展dll
- 构建electron资源文件。
- 执行打包脚本:包括注册explorer扩展dll、检查并下载安装系统补丁、安装虚拟盘驱动、修复和升级处理等。
- 对安装包签名。
在前期只有windows客户端时,我们通过编写一个批处理文件进行自动打包可以很好的解决问题,随着产品技术栈的复杂度和平台数量的增加打包的复杂度呈指数级增长,目前我们需要分别在windows、linux x64、linux arm64、mac 四个平台上构建客户端和服务端,并将四个平台客户端分别集成到不同平台的服务端中,再考虑后续的手机端,这样的集成复杂度是靠人工是难以实现且非常低效的。