动态基础设施管理:基础设施即代码的目标、挑战与原则
1. 基础设施即代码的兴起
自动化基础设施管理平台和服务器配置工具是管理动态基础设施的起点,但仅有这些还不够。传统的基础设施管理方法难以适应动态基础设施的需求,而基础设施即代码(Infrastructure as Code)为动态基础设施管理提供了新的途径。
2. 基础设施即代码的目标
基础设施即代码支持以下目标:
- IT 基础设施应支持并推动变革,而非成为变革的障碍或限制。
- IT 人员应将时间花在能发挥其能力的有价值工作上,而非日常重复性任务。
- 用户应能自行配置和管理所需资源,无需 IT 人员代劳。
- 团队应知道如何从故障中快速恢复,而非依赖避免故障。
- 系统变更应成为常规操作,不会给用户或 IT 人员带来困扰或压力。
- 应持续进行改进,而非通过昂贵且高风险的“大爆炸”式项目。
- 问题的解决方案应通过实施、测试和衡量来验证,而非仅在会议和文档中讨论。
3. 动态基础设施面临的挑战
3.1 配置漂移
服务器在创建时可能是一致的,但随着时间推移会出现差异。例如,为解决特定用户问题对 Oracle 服务器进行修复,导致其与其他 Oracle 服务器不同;Jira 新版本需要更新的 Java 版本,使 Jira 服务器与其他安装 Java 的服务器不同;不同人员在不同 Web 服务器上安装 IIS 并进行不同配置;对高流量的 JBoss 服务器进行调优,使其配置与其他 JBoss 服务器不同。
这些差异本身并非坏事,但需要以易于重现和重建服务器及服务的方式进行管理。服务器间未管理的差异会