2.6 KiB
2.6 KiB
title, type, tags, sources, last_updated
| title | type | tags | sources | last_updated | ||||
|---|---|---|---|---|---|---|---|---|
| Immutable Infrastructure | concept |
|
|
2026-04-26 |
定义
不可变基础设施(Immutable Infrastructure)是一种基础设施管理范式,服务器一旦部署就不再进行原地修改。当需要更新配置或修复问题时,整个服务器被替换为新版本,而不是在原有服务器上打补丁或更新。
核心原则
- 不修改已部署的服务器:任何变更都生成新服务器镜像
- 完整镜像部署:使用预构建的镜像完整部署
- 自动化替换:通过自动化流水线处理服务器生命周期
- 环境一致性:所有环境使用相同的基础镜像
在 DevOps 成熟度模型中的位置
不可变基础设施是 Phase 4(高度优化阶段) 的关键特征:
"Immutable infrastructure replaces old servers rather than updating them."
在该阶段,组织通过流水线管理基础设施和代码更新,不再依赖手动服务器修改。
不可变 vs 可变基础设施
| 维度 | 不可变基础设施 | 可变基础设施 |
|---|---|---|
| 更新方式 | 替换整个服务器 | 在原服务器上打补丁 |
| 一致性 | 所有环境高度一致 | 环境间可能存在差异 |
| 回滚难度 | 简单(切换回旧镜像) | 困难(需反向补丁) |
| 调试复杂度 | 低(快照确定) | 高(变化累积) |
| 部署速度 | 快(预构建镜像) | 慢(需逐步更新) |
实现方式
容器化(推荐)
# 每次构建生成新镜像
FROM base-image:latest
RUN ./build.sh
# 部署时拉取新镜像,不修改原容器
虚拟机镜像
# Packer 创建镜像
packer build template.json
# Terraform 用新 AMI 替换旧实例
terraform apply
云基础设施
# Kubernetes 中使用 Immutable Pod
spec:
containers:
- image: myapp:v2.0 # 替换镜像而非修改容器
与相关概念的关系
- Infrastructure as Code:不可变基础设施通常依赖 IaC 工具(Terraform、CloudFormation)实现
- CI/CD Pipeline:不可变基础设施通过 CI/CD 流水线自动化构建和部署
- DevOps Maturity Model:是 Phase 4 高度优化阶段的核心特征
- Container-Lifecycle-Hardening:容器天然支持不可变范式,结合使用可提升安全性和一致性