基础设施即代码的原则与实践
1. 可处置性原则
“像对待牛群一样对待你的服务器,而不是宠物。”这一理念由前微软员工比尔·贝克提出。我们应假定任何基础设施元素随时都可能毫无预兆地被破坏,可能是硬件故障导致的意外破坏,也可能是为了减少容量或替换而故意破坏。
如果我们设计的服务能让基础设施的消失不产生重大影响,那么我们就可以随时自由地销毁和替换元素,以进行升级、重新配置资源、在需求低时减少容量等。手动登录服务器进行更改除了用于调试或测试潜在更改外,毫无意义,重要的更改应通过创建和配置服务器的自动化系统进行。
例如,有一个团队使用VMWare和Chef搭建了自动化基础设施,习惯随意删除和替换虚拟机。一名开发人员在开发环境的服务器上安装了一个Web服务器来托管文件供队友下载,几天后他惊讶地发现服务器和文件都消失了。经过一番困惑后,开发人员将文件存储库的配置添加到Chef配置中,利用现有工具将数据持久化到SAN,最终团队得到了一个高度可靠、自动配置的文件共享服务。
2. 服务连续性原则
托管在基础设施上的服务,即使个别基础设施元素消失,也必须对其用户保持持续可用。要在可处置的基础设施组件上运行持续可用的服务,我们需要确定服务绝对必需的要素,并确保它们与基础设施解耦,这主要涉及请求处理和数据管理。
请求处理方面,我们要确保服务始终能够处理请求,即使服务器消失,也有其他服务器正在运行,并能快速启动新服务器,以确保服务不中断。数据管理则更为复杂,服务数据可以通过复制等方法在服务器故障时保持完整。在设计基于云的系统时,需要扩大需要持久化的数据定义,通常包括应用程序配置、日志文件等。
对于状态和事务的处理,最可靠的方法
基础设施即代码:原则、实践与未来展望
超级会员免费看
订阅专栏 解锁全文
942

被折叠的 条评论
为什么被折叠?



