将内存、CPU、存储和网络进行软件表示的能力将我们带进了虚拟化时代:我们可以在单个硬件上轻松拥有多个虚拟机。这带来了几个明显的好处:首先是打破了传统漫长的硬件采购周期、给基础设施的建设带来了敏捷性;其次可以更有效利用资源降低成本。2000年就出现了虚拟化技术,在多年之后随着云计算而变得流行。
随着很多云平台推出的基础设施即服务(IaaS),围绕虚拟机的运维生态也急速发展。随着虚拟化带来的服务器数量迅速增加,为每个虚拟机器的软件提供统一和最新的配置和版本逐渐成为调整。随着时间的推移,每一台服务器的软件环境都有一定的差异,而这些差异积累到一定程度之后将会对应用带来不可预知的影响!因此,云平台上的服务器出现故障之后很难完美复刻一个相同的现场重现问题,开发环境正常的应用在部署到产品环境只能靠烧香拜佛来提高成功率。人们用“雪花服务器”来描述这个困境:含义和没有完全相同的两个雪花类似,云平台也没有两个完全相同的服务器,这对开发和运维都带来了新的挑战。
为了应对雪花服务器带来的问题,人们提出了“凤凰服务器”:也就是定期销毁虚拟机的服务器重新创建新的服务器,就像凤凰在烈火中涅盘重生一样。同时,在新创建的服务器中人们借助Terraform等类似工具根据配置代码完成服务器从零开始的配置,也就是实现了基础设施代码化IaC。IaC的每一个配置步骤需要的代码均通过文件在Git完整保存,从而可以实现可以复现、可以追溯变更历史的目的。有人说IaC和IaaS是一个完美的组合,实现了基础设施的一致性、可重复、有弹性的基础设施配置和管理。
2021年 Terraform 工具的母公司 HashiCorp 上市市值超过150亿美元,但是到了2022年底市值已经跌到60亿美元,这可能预示着 IaC 的最后的辉煌。