系统设计 – 灵活性 or 安全性?

近日遇到一个这样的决策问题,在这里记录一下。

公司有多种技术栈,每种技术栈的构建和发布过程都不太一样,那么如何设计一套发布系统满足所有需求呢?

这里就存在2个不同的立场。

研发立场

一个是我站在研发角度看待,认为应该设计一套通用的流程,将构建、部署、启动、停止等动作抽象为若干的shell script hook,允许业务自定义实现,这样就可以灵活的cover各式各样的技术栈和玩法。

运维立场

但是运维对此持否定态度,究其原因在于该方案没有足够的安全性保证,它把流程的操控权交给了使用方,而不是标准化。虽然运维可以去review这些hook脚本,但是的确太依赖于”人治”。不过该方案并不是不可行,而是需要根据公司规模来抉择,比如我在百度时的noah平台其实就是放权管理,因为实在很难为每一种技术栈玩法去做一套标准流程,

所以最终还是决定为公司的每一种技术栈订制一套标准化的构建流程,通过为不同的技术栈提供不同的流程,填写不同的构建参数,来保证流程把控在运维手中,因此更加安全。

有利就有弊,该方案的缺点就是如果要满足业务方的需求,那么就得改造发布系统的实现去适应业务。

因为公司的各个技术栈玩法相对还是可控的,因此选择为不同的应用架构分别订制一套标准构建和发布流程是更加适合公司的方案。

 

 

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~