优界网

首页 > 产品经理 > 前后端应用平滑发布方案设计

前后端应用平滑发布方案设计

71

0

0

2015-10-14 00:03:05

萤火

分享一下,又不会怀孕!

本作品为转载作品,版权为作品原作者所有,感谢上传者的分享!

前言:

我们讨论的场景依然是对可用性有着极高要求的web大型站点,这种类型的web站点通常前后端的代码是分离的(前端指JS、CSS代码,后简称样式代码; 后端指模板、Java等后端语言) — 各自有独立的代码分支,且部署在不同的服务器上。这种的架构能带给我们更好的代码可维护性,以及对静态和动态资源更好的服务能力。但也不免会带来一些问题:

例如需求同时涉及到前后端代码的改动,且与线上的当前版本不兼容,这种情下况我们是希望前后端代码能够“同时上线“生效的,但由于两者部署在不同的服务器,发布流程通常也是分开进行,要做到“同时上线”并不是一件容易的事情,就会造成一定时间内页面发生异常的情况(大型web站点的后端服务器通常是一个集群,完成一次代码的集群部署有时需要20–30分钟)。

一:? 常见的解决方案

在网站开发的过程中,上述的场景是非常常见的,页面总是会改版,一个区块被反复多次修改那不是什么新鲜事~ 我们的开发同学在遇到这样的情况时,常见的解决方案有这几种:

1) 对出现不兼容的JS或是CSS文件重新命名,代码分支中多提交一个物理文件,同时更新后端模板上的引用地址。

2) 不重新命名JS或是CSS文件,直接把新需求所需的新的样式或是JS追加在原有文件中,本次发布完成后再清理上个版本的历史代码。

3) 直接忽略前后端代码发布过程中的20-30分钟的时间差,用户不投诉就好:)

以上的几种处理方式要么降低了代码可维护性,要么牺牲了用户体验甚至可用性,都不是很好的解决方案,我们理想的解决方案需要做到:

  • 前端代码SVN分支中不出现为兼容线上版本而保留的历史代码或是文件。
  • 完全消除前后端发布过程中因代码不同时上线而出现的可用性问题,做到平滑过渡。
  • 保持前后端发布流程的独立性,不带来新问题(比如多次发布的问题)。
  • 平滑发布方案做到自动化,对开发者透明。

二: ?总体解决思路

其实解决这个问题的总体思路比较简单,如果发布系统能做到对前端代码的增量发布(线上同时存在多个版本),则可以在发布时先发布前端的CSS和JS文件,然后再控制后端的代码生效,那么无论后端的服务器集群有多少台,也能够做到对不兼容需求发布的平滑切换。

已有0人赞过

+1赞

认真评论的都成大咖了

还可输入1000个字

我要评论 我要评论
  • 刚刚
  • 登录优界网 ×