如何做好上线发布

921 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

刚刚写完了一份上线checklist清单,对于C端业务而言,上线发布尤为重要,因为一不留神就会影响到用户。

我在入职后的一段时间内,没有养成对生产环境的敬畏之心,上线前不懂得整理上线方案,上线后也不知道要去留意线上状态,因此踩了比较多的坑,吃了非常多的亏。在这里,我将整理一系列的上线心得,供大家参考。

今天重点分享一下,写checklist的一些思路

上线checklist会帮助你盘点出上线事项,回忆在开发中的各个细节。

上线checklist也许可以包括以下几个关键内容

  1. 上线前准备

包括需要申请的服务器、数据库、redis资源等

一些需要提前写好的配置文件等等

  1. 上线步骤

如更新的SQL,各个模块的更新顺序

如果是C端应用,还需要注意服务端跟前端的发布先后顺序。

  1. 需验证的东西

每个模块更新完成之后,需要有相应的措施,来验证是否真的是正常的。

包括,观察页面是否正常,观察日志和监控是否正常等等

  1. 明确人、时间

checklist越详细越好,也许需要明确到具体的人,已经特定时间段该怎么什么事情

  1. 评估对用户的影响

每一个步骤做完,都可以想一想,此时对用户有影响的有哪些,需要关注哪些内容

  1. 提前做好预发回归

预发环境是一个好东西,一般是跟生产环境的数据源相通。我们可以在预发环境,模拟线上更新的步骤,提前预演一遍。

如何避免预发环境对线上的影响。可以考虑在预发使用白名单,只有白名单的用户才能看见预发的内容。

另外也要注意用户权限的回收,避免预发环境的误操作,影响了线上。

  1. 灰度

我们很多模块在上线时,都可以设置灰度,减少对线上用户的影响,初始上线完成后,可设置灰度百分比为0,内部人员开白验证,等到无问题后,再逐步放量。

  1. 黑白名单

黑白名单基本在我设计每个模块的时候,都会用到。主要是配合灰度做一些数据验证。

  1. 开关

我在开发时,经常会去设置一些开关,好让发布到线上时,控制哪些功能应该关闭,而去验证另外一些功能,减少对用户的影响。比如发私信的功能,如果线上一旦出问题,会直接曝光给用户,难以撤回,造成较大的影响。因此,我会先看数据,而不发私信。比如在日志里看一些数据是否正确,确认没问题后,我再打开开关。

  1. 关键日志

在日常开发中,error日志一般我们都会记得打印,但是对于INFO日志,我们常常忘记去打印。INFO日志可以帮助我们记录一些关键的流程节点,让我们更好的观测线上情况。尤其对于那种直接触达用户的场景,比如发私信。

以上就是我总结的一些,从上线checklist到上线注意事项的关键注意点,这些都是我多年工作经验沉淀下来的宝贵财富。未来也许会选其中的几点,具体做一些案例分析。

想要做好C端业务,需要有大量的经验,踩得坑越多,干起活来也就越来越熟练,我所闯下的货,成了我成长路上的一个个印记。