第 21 章 安全更换基础设施 安全地更换基础设施
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
频繁而快速地进行更改这一主题贯穿了本书的始终。正如本书一开始提到的("反对:'我们必须在速度和质量之间做出选择'"),速度不仅不会使系统变得不稳定,反而会促进稳定,反之亦然。本书的口号不是 "快速行动,破坏系统",而是 "快速行动,改善系统"。
然而,单纯从速度上进行优化并不会带来稳定性和质量。第一章中引述的研究表明,试图优化速度或质量,都不会达到预期效果。关键是两者都要优化。重点是能够频繁、快速、安全地进行更改,以及快速检测错误并从错误中恢复。
本书所推荐的一切--从使用代码持续构建基础架构,到让测试成为工作的一部分,再到将系统分解成更小的部分--都能实现快速、频繁和安全的变更。
但是,频繁更改基础设施会给提供不间断服务带来挑战。本章将探讨这些挑战和应对技术。支撑这些技术的思维方式不是将变更视为对稳定性和连续性的威胁,而是利用现代基础设施的动态特性。利用本书中介绍的原则、实践和技术,最大限度地减少变更带来的中断。
缩小变革范围
Agile、XP、Lean 和类似的方法通过以小增量的方式进行变更,优化了交付的速度和可靠性。与大的变更相比,小的变更更容易计划、实施、测试和调试,因此我们的目标是减少批量变更。1当然,我们经常需要对我们的系统进行重大更改,但我们可以通过将事情分解成一系列小的更改来做到这一点,我们可以一次交付一个更改。
举例来说,ShopSpinner 团队最初使用单一的基础架构堆栈构建基础架构。堆栈包括网络服务器集群和应用服务器。随着时间的推移,团队成员增加了更多的应用服务器,并将一些服务器变成了集群。他们意识到,在单个 VLAN 中运行 Web 服务器集群和所有应用服务器是一个糟糕的设计,因此他们改进了网络设计,将这些元素转移到不同的 VLAN 中。他们还决定采纳本书的建议,将基础架构分成多个堆栈,以便于逐个更改。
ShopSpinner 最初采用的是单 VLAN 单堆栈(见图 21-1)。
图 21-1. 开始实施示例,单堆栈、单 VLAN
该团队计划将其堆栈拆分成多个堆栈。其中包括本书前几章示例中的shared-networking-stack 和application-infrastructure-stack 。该计划还包括一个web-cluster-stack 来管理前端 Web 服务器的容器集群,以及一个application-database-stack 来管理每个应用程序的数据库实例(图 21-2)。
图 21-2. 分拆多个堆栈的计划
团队还将把单个 VLAN 分割成多个 VLAN。应用服务器将分布在这些 VLAN 中,以实现冗余(见图 21-3)。
图 21-3. 计划创建多个 VLAN
第 17 章介绍了划分这些示例堆栈的设计选择和一些实现模式。现在,我们可以探讨在生产系统中如何从一种实现模式过渡到另一种实现模式。
小变化
我在代码中造成的最大混乱就是在推送之前在本地积累了太多工作。专注于完成你心目中的完整工作是很诱人的。而做一个小改动,只让你向完整的目标更进一步,这就更难了。将大的改变落实为一系列小的改变,需要新的心态和新的习惯。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access