跳到主要内容
Nexlyh.
归档

工程实践

升级不该让人担心数据

用户点“更新”的那一刻,心里其实在问:我的东西会不会没了。这个问题的答案不能是“应该不会吧”。

Nexlyh 团队约 5 分钟
  • Soke
  • 升级

升级前先问自己一个问题

用户点下“更新”的那一刻,心里其实有一个问题:我的东西会不会没了。

这个问题的答案不该是“应该不会吧”。只有能明确回答“不会,而且不行还能退回去”,升级才算是一个安全的操作。

可回滚是前提

正式升级之前先做一份可回滚的快照。升级过程中出问题,能回到升级之前的状态;升级完成之后发现不对劲,也能手动退回去。

这一条比把升级做快更重要。快只是省几分钟,丢数据是没法补救的。

说清楚这一版改什么

升级之前会列出三件事:这一版做了什么、会不会动到已有的数据、需不需要用户做什么。

跳过说明直接升级的系统,本质上是把不确定性丢给用户。用户不是怕变化,是怕不知道会变成什么样。

不强制升级

除了安全更新,功能版本不强制。用户可以选择什么时候升级,也可以一直停在某个版本上,直到自己愿意动。

强制升级看起来能让所有人保持最新,但它把升级的风险全部转给了用户,而且是在用户最没有准备的时刻。

这一条会影响开发节奏

可回滚意味着每个版本都要写迁移方案、要测回滚路径,功能推进速度会明显变慢。

我们认为这个代价必须付。对一个要用很多年的系统来说,用户敢不敢点升级,比这次多做了几个功能重要得多。