第 6 章 利用堆栈构建环境 使用堆栈构建环境
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
第 5 章将基础架构堆栈描述为基础架构资源的集合,您可以将其作为一个单元进行管理。环境也是基础设施资源的集合。那么堆栈和环境是一回事吗?本章将解释,也许是,但也许不是。
环境是围绕特定目的(如支持测试阶段或在某个地理区域提供服务)组织的软件和基础设施资源的集合。堆栈或堆栈集是定义和管理基础设施资源集合的一种方法。因此,你可以使用一个栈或多个栈来实现一个环境。您可以使用单个堆栈来实现一个环境,也可以使用多个堆栈来组成一个环境。你甚至可以在一个堆栈中创建多个环境,尽管你不应该这样做。
环境的意义
在 IT 行业,环境的概念是理所当然的事情之一。但在不同的语境中使用这个术语时,我们的含义往往略有不同。在本书中,环境是与操作相关的基础设施资源的集合。也就是说,环境中的资源支持特定的活动,如测试或运行系统。通常情况下,存在多个环境,每个环境都运行同一个系统的实例。
在多个环境中运行同一系统的实例有两种典型的使用情况。一种是支持交付流程,另一种是运行系统的多个生产实例。
交付环境
我们最熟悉的多环境用例是支持渐进式软件发布流程,有时也称为 "生产路径"。应用程序的特定构建依次部署到每个环境,以支持不同的开发和测试活动,直到最终部署到生产环境(图 6-1)。
图 6-1. ShopSpinner 交付环境
我将在本章中使用这组环境来说明以代码形式定义环境的模式。
多种生产环境
您还可以使用多个环境,为生产中的系统提供完整、独立的副本。这样做的原因包括
- 容错
-
如果一个环境发生故障,其他环境可以继续提供服务。这可能需要一个故障转移过程,以转移故障环境的负载。您也可以在一个环境中实现容错,方法是为某些基础设施提供多个实例,如服务器集群。运行额外的环境会复制所有基础设施,从而产生更高的容错性,但成本也更高。有关利用基础架构即代码的连续性策略,请参阅"连续性"。
- 可扩展性
-
您可以将工作负载分散到多个环境中。人们通常会按地理位置这样做,每个地区都有一个单独的环境。多个环境可用于实现可扩展性和容错性。如果一个地区出现故障,负载会转移到另一个地区的环境中,直到故障排除。
- 隔离
-
您可以为不同的用户群(如不同的客户端)运行多个应用程序或服务实例。在不同环境中运行这些实例可以加强隔离。加强隔离有助于满足法律或合规要求,并增强客户的信心。
ShopSpinner 为每个电子商务客户运行一个单独的应用服务器。随着业务的扩展,ShopSpinner 要为北美、欧洲和南亚的客户提供支持,因此决定为每个地区创建一个单独的环境(见图 6-2)。
图 6-2. ShopSpinner 区域环境
使用完全独立的环境,而不是分散在不同地区的单一环境,有助于 ShopSpinner 确保遵守不同地区存储客户数据的不同法规。此外,如果需要进行涉及停机的更改,可以在每个地区的不同时间进行。这使得停机时间更容易与不同时区保持一致。 ...
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