本文主要是讲如何建立有效的环境、程序、配置、SQL变更和管理平台。
几天前和一个朋友聊到环境、程序的配置变更,SQL变更和整个上线流程。之前我们在这块也做了很多,有做的好的也有做的一般的,借机都总结下来,希望对你有用。
通常情况下,我们最关注的也是最重要的部分是应用的变更,就是程序的部署上线发布这块,因为这部分最高频,每天上线很多次的情况都可以发生,所以我们在平台建设的时候也是优先做好这部分,但是对于环境、程序配置和SQL变更部分,通常情况下会优先级低一些,不是这些不重要,只是暂时通过手工操作或者人力顶一下这部分的任务,最终这些问题是要通过平台自动化来解决的。
底层物理环境配置
很久以前,计算资源成本高昂,导致机器匮乏,很难做到「开发-测试-预发-生产」物理环境配置的统一。线上用高配的物理机,线下用低配的过保机器,甚至用虚拟机,这都是很常见的做法。不同环境之间物理资源的不同加大了环境配置的管理难度。比如一个Java 程序需要 4G 的内存,这在线上没问题,但是线下的虚拟机可能 1G 的内存都没有。同样的配置在两个环境中需要小心维护否则程序就崩了,所以经常有很多文档记录这些「魔法」骚操作,然后在操作环境时拿出来翻一翻。
现在随着计算资源价格下降、云计算快速普及,尤其是 k8s 的出现,大大降低了保持「开发-测试-预发-生产」环境一致性的成本,同时操作起来简便易行。所以工作中,我们要「尽量」保持这些底层基础设施的统一,这是做好上层很多工作的基础。
基础设施即代码(Infrastructure as Code, IaC)的出现把环境配置的问题变得更简单。IaC解决的最大问题是基础设施配置和管理的自动化。之前通过手工操作来配置和管理的服