- 网站发布:我们通过关闭负载均衡中的一部分服务器,再对这部门关闭的服务器进行更新,接着再重启这部分服务器,再让负载均衡服务器指向这部分服务器,再关闭其余服务器进行更新重启,最后再在负载均衡服务器中开启这部分服务器从而实现网站的发布
- 自动化测试:我们通过自动化测试工具来更高效的做回归测试
- 代码控制:我们通过分支开发,主干发布的模式来实现代码的有效管理,防止将错误的开发中的代码发布出去
- 预发布验证:我们通过部署预发布服务器来先将测试通过要发布的包部署到预发布服务器上,利用现网真实的环境来更加真实的验证要发布的功能的正确性,再发布到真实的服务器上
- 自动化发布: 我们通过火车发布模型来做自动化发布
- 灰度发布:我们通过先更新服务器集群上的一部分服务器,运行一段时间没问题了再发布一部分服务器,依次类推,直至将所有的服务器发布更新。如果中间出现bug,我们就可以只回滚更新的那部分服务器从而避免大集群情况下一旦发现发布的应用有错需要回滚全部的情况
我们需要思考的是如何在软件迭代的生命周期中更好的保证软件的高可用
首先我们需要在开发过程中做好代码控制,通过分支开发,主干发布的模式来避免将开发中的有误的代码发布到线上环境,当我们开发完代码合上主干后,我们就需要发布网站了,我们采用预发布验证,首先将要更新的功能应用先发布到预发布服务器上验证,用真实的环境来更好的还原验证,当验证无误后我们需要发布网站,我们采用负载均衡服务器首先关闭部分服务器并对这部分服务器进行更新重启,然后再将负载均衡服务器指向这部分已经更新的服务器上,再关闭另一部分服务器进行更新重启,最终再将负载均衡服务器指向向全部已经更新的服务器,更新完后我们需要自动化测试来回归这些应用,从而减少人力消耗,最后为了减少发布过程中的人为失误,我们可以采用火车发布模型来实现自动化发布,最后由于集群数量的不断增多,我们一次性更新所有的服务器会带来一旦更新的应用出错,就算回滚,也要回滚半天的短板,我们通过灰度发布来解决,先发布一部分服务器,经过一段时间的用户使用没问题再逐步更新其他集群服务器,一旦发现错误,我们只需要回滚这部分已更新的服务器即可,从而避免集群回滚的弊端