最佳实践

更新时间:2018-03-05 20:24:18

简介

对于工程代码量大,研发人员较多,需要多人多项目并行开发的工程,EMAS 平台提供了一整套解决方案,覆盖工程的容器化管理、模块拆分到研发、集成、测试、发布的整个生命周期。

典型流程

假设你处于一个 10 人以上的移动研发团队之中,团队里面有项目经理、开发和测试同学,有多个项目同时进行,其中有些项目参与到各种大促活动(如双十一)之后,需要和其它团队进行协作。所有的代码都耦合在一个客户端里面,每个月至少要发布1个版本有时2个,大家开始两周各自开发暂时相安无事,一旦要合代码到一起就出现各种诡异问题导致构建不成功、功能不可用、测试需要反复无数次验证依然惴惴不安。如何才能更好地协作开发,提升效率呢?

在这里我们基于 EMAS 给出一个参考方案:核心流程

典型流程详解

  • 工程解耦

对于 10 人以上的研发团队,非常需要提高研发协同效率,首先工程需要解耦,各自独立,减少相互依赖和影响,尽量做到每个模块可以独立构建独立发布。

  • PMO:定义项目规范和版本计划

PMO,先根据团队人员配比等制定适合当前团队的项目管理方案和项目规约,同时定义清楚客户端版本发布计划,例如每周五发布一个灰度版本,每个月底发布一个正式版本,计划清晰后同步到所有人员,方便大家安排工作。

  • 产品经理:设计需求

产品经理通过分析用户反馈、分析市场诉求,从而抽象出业务需求,研发TL也会自行添加技术升级类需求,统一沉淀到平台做需求管理。

  • 项目经理:排期分工

根据需求和版本计划,会拆分出多个并行项目,如技术改造项目、日常需求项目、促销活动项目,项目经理或者研发TL会把这些需求细化拆分成任务,分派给不同的研发人员。

  • 研发:代码变更

研发实现需求后,在 Native 研发项目中添加变更,测试自己的变更。

  • 研发:持续集成

EMAS 支持项目中构建后自动触发静态扫描,也可以配置 webhook 或者定时任务触发,实现持续集成。同时也支持各种真机适配任务,提供智能 Monkey 服务,实现深度遍历测试、稳定性测试、性能测试等。

  • 研发:版本集成

研发在项目空间中完成代码变更和测试后,按照约定的发版计划,再约定好的时间自行提交版本集成。

发布上图是一个典型的每周发布版本的业务场景。

  • 测试:功能、验收测试

参加集成后,测试会对最终集成完成准备发布的包进行功能回归和验收测试,只有测试通过后的包,才能发布到用户手中。

  • 研发:版本发布

版本发布过程,支持丰富的灰度策略,支持多批次缓慢放量,发布过程中实时监控 Crash、用户反馈,发生问题可及时止血。

  • 研发:运维监控

线上监控运维,除了实时 Crash 分析之外,还提供线上问题快速定位分析,用户日志跟踪等服务,10 秒内发现问题。

  • 研发:热修复

支持 iOS 和 Android 的热修复,在用户无感知的情况下,迅速下发到用户手机端,结合高可用服务,实时查看恢复情况。