环境隔离

许多组织使用多环境方法构建 IT 系统,无论他们将这些系统称为开发、暂存、预生产、QA、验收还是生产,这些术语都用于指定具有不同特征并用于不同目的的不同环境。 除了从 “较低”开发环境延伸到最终 “生产”环境的一般范围外,没有环境的标准定义或如何使用环境。 在每种情况下,这些环境的定义和约束都完全由组织定义,并且应该定义以匹配其他业务流程或标准并支持组织的业务需求。 虽然此领域没有单一的最佳实践(因为不同的系统要求不同),但以下部分提供了有关如何在架构流程中处理环境隔离主题的指导。

ArcGIS 系统的用户希望系统在他们需要执行工作时可用。 但是,如果未在与生产环境不同的环境中安全地开发和测试对系统配置的重大更改,则这些更改可能会导致停机。 隔离计算环境方法旨在通过为生产、测试和开发活动创建单独的系统,维护系统可靠性和可用性。 虽然并非所有更改(例如应用程序配置)都需要在每个环境中进行测试,但重大更新和新功能都可以从此主题的结构化方法中受益。

在某些情况下,用户的期望可能记录在服务级别协议 (SLA) 中,或者它可能只是对系统何时需要可用的期望。 在决定管理系统更改所需的环境隔离和管理级别时,请考虑用户的期望和业务需求。

建议

要以最佳方式为用户维护系统可靠性和可用性,需要遵守以下最佳实践:

  1. 如果对组织来说可行,实施隔离的生产、暂存和开发环境。
  2. 在对生产环境进行更改之前,请在暂存环境中测试系统更改,例如修补程序、升级或操作系统设置更改。
  3. 使用开发环境开发和测试新功能,而不会影响其他环境中的用户。
  4. 在跨环境推广内容和功能时,请遵循标准管理实践。
  5. 制定内容推广管理方式的计划:内容审核人、内容审批人以及内容迁移方式

环境目的

根据这些最佳实践建议,Esri 和我们的客户广泛使用以下三个环境定义。

  1. 生产环境是支持最终用户的实时系统。 正常运行时间要求通常通过 SLA 进行定义,并通过有效的变更管理和治理得到满足。 通常,如果未在暂存环境中进行测试,不应对生产系统进行软件、应用程序、配置或网络更改。 参与生产环境的员工通常在办公室内外查看应用程序以做出决策、收集和编辑信息以及协调以完成关键任务工作。 此环境通常会提高监测能力,可能具有专用硬件来确保性能优异,并且大部分的 IT 支持工作都与维护有关。
  2. 暂存环境通常设计为生产环境的代表性镜像,以在将系统更改部署到生产环境之前审查这些更改。 之所以使用 “代表性”一词是因为维护与生产相同的整个环境在资源和员工支持方面都非常昂贵。 虽然暂存环境通常从层、服务器、组件和角色方面反映生产,但您可能需要也可能不需要与生产相同的单个服务器容量,因此可以考虑缩小部署并节省成本。 您可以在暂存环境中执行用户验收测试、性能测试、负载测试和培训,以免对生产系统造成风险。 如果需要,您甚至可以为不同的测试和培训活动实施多个暂存环境。 参与暂存环境的员工通常运行负载测试、性能测试、集成测试、QA/QC 甚至可能进行培训。
  3. 开发系统是一个工作空间,开发人员和分析师可在其中创建和管理内容或更改,而不会影响大量受众。 此专用环境通常用于创建新功能(例如应用程序、服务、数据模型或地理处理模型)、单元测试以及设计和构建业务工作流。 环境的大小和复杂性取决于更改产生的风险级别、创建者数量以及系统中断和停机的潜在影响。 通常,只有在开发环境中积极处理内容的员工才能访问此系统,或者通常无法在组织内访问此系统。

environment-isolation-1

根据组织对风险和 IT 策略的容忍度,可能需要在生产、暂存和开发构建之外进一步分离某些类型的活动。 如果需要,您可以为不同的测试和培训活动实施多个环境,例如:

  • QA/QC
  • 集成或验收测试
  • 性能测试
  • 负载测试
  • 训练

环境隔离的优势和成本

环境隔离使您的生产环境免受可能对您的业务产生负面影响的已知风险和变更(例如升级、新软件或意外更改)的影响,从而帮助您更好地维护其功能、稳定性和性能。 意外的系统更改可能会导致操作系统无法提供用户期望的功能和性能。 实施这些隔离的计算环境有助于您交付稳定、可扩展且高性能的系统。

环境隔离还会产生 IT 资源(保持多个系统运行)、软件许可和人力资本方面的成本,因为越来越多的环境需要更大的支持网络和更多参与变更控制和部署的员工。 通常,业务更加关键的大型系统会部署更为复杂的环境隔离方法,但即使是较小的组织也可能选择部署此方法的某一版本来帮助隔离变更并保护其系统。 必须调查这些选择的成本并将其发送给利益相关方,以做出明智的决定,而不是仅仅因为 “我们一直都是这样做的”就默认选择拥有多个环境。

实施环境隔离

治理在成功实施环境隔离方面至关重要。 该方法可降低风险、优化资源和提供业务优势。 治理应定义团队将利用哪些策略、程序和技术来维护这些环境并促进这些环境之间的变更。

不存在一套跨环境管理软件、应用程序、服务和数据广度的通用注意事项或标准途径。 但是,有一些资源可以帮助一致地部署环境,例如 Chef Cookbooks、Enterprise Cloud Builder、ArcGIS Enterprise Builder 以及数据库复制工具和资产包。 有关详细信息,请参阅 ArcGIS Enterprise 部署工具。 此外,建议尽可能避免手动配置,以降低人为错误 error 的可能性。 请考虑使用 PowerShell DSC for ArcGIS、 ArcGIS REST API 和 ArcGIS API for Python 自动执行其中一些任务。 切记创建这些脚本是适合开发环境的活动。

开发过程中所做的每一个选择,本质上都会导致在暂存和生产环境中,相关人员必须掌握某种知识或操作能力。 采用良好的部署实践,确保将适当的知识和/或技能传授给生产人员,以便他们能够按预期操作。

使用多个 ArcGIS Enterprise 部署

一些组织使用多个 ArcGIS Enterprise 环境来分隔这些不同的层。 以一致的方式跨环境成功迁移和管理内容可能极具挑战性。 但是,可以使用一些工具来帮助自动执行这些任务。 例如,ArcGIS REST API 提供了一些操作,可用于简化图层、地图和应用程序的跨环境移动过程,这些操作称为导出群组内容和导入群组内容。

environment-isolation-2.png

例如,假设以下场景:您开发了一个自定义 Experience Builder 应用程序,该应用程序引用了开发环境的某一群组中的 Web 地图和一组要素图层,现在可随时将其移动到暂存系统以进行结构化审查。 要使用这些导出/导入群组迁移操作执行此操作,需要执行以下步骤:

  1. 将群组内容从开发导出到包中。
  2. 将该包作为项目添加到暂存环境中。
  3. 将包的内容导入到暂存环境的群组中。
  4. 将自定义应用程序部署到暂存托管环境,并将配置指向暂存环境 URL。

environment-isolation-3

此时,可以在暂存环境中发现、共享、编辑和使用包中的项目,具体取决于暂存群组的设置。 当项目准备就绪时,可以使用相同的工作流将项目提升到生产环境。 也可以使用 ArcGIS API for Python 中的 GroupMigrationManager 模块编写此工作流的脚本。

蓝绿部署

部署某些类型的更改(例如系统升级或重大配置更改)可能会造成中断。 一些组织使用称为蓝绿部署的策略为用户无缝部署新变更。 蓝绿部署是一种部署策略,您可以在其中创建两个独立但相同的环境。 一个环境(蓝色)正在运行当前应用程序版本,一个环境(绿色)正在运行新的应用程序版本或一组配置。 系统将使用标准机制(如路由器、负载均衡器、反向代理或 Web 服务器)将流量定向到任一环境。

environment-isolation-4.png

蓝色和绿色环境轮流用作生产环境。 在任何给定时间,只有一个环境处于活动状态。 例如,当需要升级 ArcGIS Enterprise 时,将首先在绿色系统上执行升级。 如果一切都已完全正常运行并可随时用于生产并且测试团队对此感到满意,唯一变化的是流量方向从代理或负载均衡器流向绿色系统而不是蓝色系统,而对于生产最终用户不会有明显的变化。 此时,新内容和功能将在蓝色系统中进行开发,直到成功进行的测试足以保证再次切换流量。

始终保持两组环境正常运行可能会带来高昂的成本。 幸运的是,云端提高了蓝绿部署的可行性。 每个主要的云平台提供商都提供诸多工具,可用于按需启动和关闭基础设施。 例如,可以使用基础设施即代码启动和停止服务器,并自动执行系统的正常运行时间和配置一直到具体的细节。

最终建议

实施这些隔离的计算环境有助于您交付稳定、可扩展且高性能的系统。 通过利用这些环境来支持有效的变更管理,您可以保护系统免受意外故障的影响,并避免业务运营中断。 大多数组织至少应该有两个计算环境:生产和暂存,因为它们可能不参与任何使用开发环境的自定义开发活动,或者主要使用低代码和无代码应用程序。 但是,根据组织的风险偏好,您可以拥有更多环境。

考虑如何尽早实施和管理环境隔离(以及每个环境中隔离的活动)。 虽然适用于这些选择的万能方法,但您可以参考许多工具和常见做法以获得指导。

最近发布的另一项资源涵盖了环境之间内容推广的概念,并提供了该主题的脚本化方法示例:Esri 社区文章:ArcGIS Enterprise 内容推广。

Top