互联网企业要求的都是快速迭代满足用户需求而且还要有一定的可靠性。那如何能做到上面三点呢?
一般是两种策略,对于每个新上的功能和bug都需要做一个开关,当这个功能有问题的时候可以直接关掉回归稳定版本
另外一种策略就是建一个stage环境,这个环境就是一个稳定可靠环境,当新部署的产品不可解决的问题时候需要回滚的时候就可以将stage环境顶上去,满足基本需求从而留有足够的时间来解决新部署产品的问题,再次上线。
很多时候也两个方法一起使用
那如何判断是否有严重问题呢?就需要一个monitor来监控这个产品,定义一些规则当feature出现问题的时候关掉feature,出现不可逆的问题时候则回滚到stage,从而保证整个产品的稳定性。
有了stage就可以做自动化部署上线,每次代码更新自动化上线测试,这样既能保证质量又可以保证功能的快速上线
那如何做到自动化部署上线,这就需要在主分支上有一个稳定的版本,那如何保证更新的代码有一定质量,除了有严格的代码审查流程,还得有UT保证一定的测试代码覆盖度,至少在90%以上的覆盖才可以认为有一定的代码质量,最好有smoke test,但是这和实际的环境有关系,因为往往实际上环境只有一个,如果有多个可能会好很多。有了这些保证之后可以考虑将经过checkin的代码做每次build的部署或者daily的部署,这才有意义,要不然部署也是一堆的bug,毫无意义。