云原生落地:企业级DevOps实践
上QQ阅读APP看书,第一时间看更新

1.8.2 可变与不可变基础设施之间的差异

1.1.1节介绍云计算时,我们用“牛与宠物”来类比可变与不可变基础设施在处理服务器(例如创建、维护、更新、销毁)方面的巨大差异。传统可变基础设施中的服务器是不可替代的,共独特的系统必须始终保持运行。在这种方式下,服务器就像宠物一样,独一无二,无法模仿,并且倾向于手工制作。不可变基础设施中的服务器是一次性的,易于复制或使用自动化工具进行扩展。在这种方式下,服务器就像牛一样,牛群中没有哪个是独一无二或不可或缺的。

可变与不可变基础设施之间最根本的区别在于它们的核心思想:前者旨在部署后进行更改;后者旨在通过完整替换来保持更新与迭代。在容器和云出现之前,实现不可变基础设施是很难的,因为一个服务的正常运行包括多个组成部分,我们通过虚拟机等技术可以实现多个环境底层操作系统、库、运行时的统一,但是配置项、代码合并很容易引发开发环境与测试环境不一致,以及生产环境间不一致的问题。处理这样的问题只能通过人工接入的方式在服务器上修修补补,进而导致了基础设施的可变。

容器镜像的出现,使不同的环境、标准化配置变成了可能,我们可以快速拉起成千上万个一模一样的服务,服务的版本升级、快速拉起变为常态,进而不可变基础设施也逐步变为可能。