基础设施即代码:概念、重要性与原则
1. 引言
在当今数字化时代,无论是使用公共云服务提供商,还是管理数据中心基础设施,都面临着诸多挑战。从数据中心基础设施概念、新的公共云服务,到容器编排器、编程语言和软件开发,需要研究的内容繁多。同时,还要满足公司创新和发展的需求,构建支持这些需求的系统变得极具挑战性。而基础设施即代码(Infrastructure as Code,简称 IaC)为解决这些问题提供了有效的途径。
2. 什么是基础设施?
2.1 传统定义
最初,基础设施常被定义为提供网络、存储或计算能力的硬件或设备。例如,应用程序在服务器(计算)上运行,通过交换机(网络)连接,并将数据存储在磁盘(存储)上。这三个类别与数据中心中管理的物理设备相匹配,在进行更改时,通常需要进入建筑物、连接设备、输入命令,并祈祷一切正常。随着云计算的出现,这些类别仍被用于讨论特定设备的虚拟化。
2.2 现代定义的扩展
然而,传统的基础设施定义已无法适应当今的服务和产品。当帮助其他团队将应用程序交付给用户时,仅完成设置足够的服务器、网络连接和数据库等任务是不够的。还需要考虑许多关键任务,如监控应用程序指标、导出指标用于业务报告、设置警报、添加健康检查、支持用户认证、记录和聚合应用程序事件以及在密钥管理器中存储和轮换数据库密码等。这些“操作”要求虽然看似是额外的任务,但实际上也需要基础设施资源。
此外,公共云提供商抽象了基础网络、计算和存储的管理,提供了平台即服务(PaaS)产品,如对象存储桶和托管的 Apache Kafka 等事件流平台。甚至还提供函数即服务(FaaS)或容器即服务(CaaS)等计算资源的额外