基础设施、云与 DevOps · 进阶

基础设施即代码

一句话: 如果你没法从版本控制里的一个文件重建出环境,那你拥有的不是基础设施,而是一部点击历史。

原则

云资源在文件里定义、经过同行评审、由自动化流程应用。在云控制台里的手工改动是一次偏差,要记录下来并回归到代码里。

实际能带来什么

灾难恢复、完全一致的环境、一份「谁在什么时候为什么改了什么」的历史,以及在事情发生之前就能看清「将要改变什么」的能力。

还有:成本。你能在合并请求里看到有人想拉起一个昂贵的资源,而不用等账单来揭晓。

状态文件存在本地或者没有加锁——两个人并行执行可以毁掉一个环境。把它放在远端并加锁。

巨大的模块,任何改动都牵动一切。按生命周期拆分:网络和数据库很少变,应用经常变。

深入一层

在每个合并请求上执行一次变更计划,并把差异打印到回复里。大多数基础设施故障都始于一次没人真正理解其影响范围的改动,而在评审里展示差异几乎能完全避免它们。