为什么需要基础架构作为代码?
在传统基础设施上,当你需要一台服务器资源,则需要运维团队去创建一个虚拟机实例或为应用准备物理服务器,配置中需要使用到脚本或手动安装的方式。
当有了更多应用需求,则需要更多的虚拟机,用于DNS,邮件服务器,数据库等等。还有要对操作系统,Web服务器,JVM和其他所有相关架构进行持续的更新。而且随着时间的发展,它们彼此之间的配置会发生变化,带来配置的漂移,从而产生了雪花服务器(snowflake servers)。跟踪配置更改是很大的挑战。
如果服务器很少且使用周期较长,那么还可以接受。
随着AWS等公有云服务的广泛使用,企业对计算资源的选择发生了很大变化。许多企业没有了在硬件和数据中心上的投资,而是开始将其应用程序迁移到云中。在云端,可以在数分钟内部署服务器。
为了保持最佳性能和可用性,可能必须部署更多实例来满足需求。然后,不需要时对资源弹性释放来节省成本。当按小时付费时,可能需要每天按比例弹性的缩放,所以如果每天多次手动进行操作,显然具有挑战性。
通过自动化的方式,获取代码中部署或终止实例,以及其他基础结构组件所需的配置步骤,云可以帮助更快,更可靠地交付价值。
什么是基础架构即代码?
所以,基础设施即代码是使用软件开发原则和实践的基础设施自动化。
简单理解,就是基础架构像软件一样来对待,然后编写,测试和执行代码以定义,部署,更新和释放基础架构。通过编写代码来管理服务器,数据库,网络,日志,应用程序的部署和配置。当要更改基础结构时,可以更改代码,对其进行测试,然后将其应用于系统中。