产品环境中 Go 语言的最佳实践(4)

构建与部署有其技巧性,因此它与你的操作环境耦合紧密。我要描述下我们的场景,因为我认为它是个好模型,但它可能无法直接应用到你的组织机构中。

就构建而言,我们通常直接使用 go build 来开发,以及一个 Makefile 用于剪裁官方构建。这主要是因为我们熟悉多种语言,并且我们的工具使用需要做到最小功能合集(最小公倍数)。并且,我们的构建系统始于一个空环境,也需要自备编译器( Makefile 文件很难看!)。

对部署而言,对我们最大的吸引是无状态之于有状态。

模式样例模型部署名称部署形式
无状态   Request router   12-Factor   Scaling   Containers  
有状态   Redis   None, really   Provisioning   Containers?  

我们主要部署无状态的服务,方式类似于 Heroku。

$ git push bazooka master

$ bazooka scale -r <new> -n 4 ...

$ # validate

$ bazooka scale -r <old> -n 0 ...

结论

我有意让这些成为一种来自一个大组织在生产环境相对较长地运行Go 的经验报告。虽然这些都是有根据的意见,但他们仍然只是意见,所以请持保留态度。这就是说,Go 最大优势是它结构简单。最终的最佳做法是拥抱,而不是试图绕过它。

Ubuntu 安装Go语言包

《Go语言编程》高清完整版电子书

Go语言并行之美 -- 超越 “Hello World”

我为什么喜欢Go语言

Go语言内存分配器的实现

Go语言的国际化支持(基于gettext-go)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/f83da06d239a59aa25b6f62cdc715281.html