许多组织使用多环境方法构建 IT 系统,无论他们将这些系统称为开发、暂存、预生产、QA、验收还是生产,这些术语都用于指定具有不同特征并用于不同目的的不同环境。 除了从“较低”开发环境延伸到最终“生产”环境的一般范围外,没有环境的标准定义或如何使用环境。 在每种情况下,这些环境的定义和约束都完全由组织定义,并且应该定义以匹配其他业务流程或标准并支持组织的业务需求。 虽然此领域没有单一的最佳实践(因为不同的系统要求不同),但以下部分提供了有关如何在架构流程中处理环境隔离主题的指导。
ArcGIS 系统的用户希望系统在他们需要执行工作时可用。 但是,如果未在与生产环境不同的环境中安全地开发和测试对系统配置的重大更改,则这些更改可能会导致停机。 隔离计算环境方法旨在通过为生产、测试和开发活动创建单独的系统,维护系统可靠性和可用性。 虽然并非所有更改(例如应用程序配置)都需要在每个环境中进行测试,但重大更新和新功能都可以从此主题的结构化方法中受益。
在某些情况下,用户的期望可能记录在服务级别协议 (SLA) 中,或者它可能只是对系统何时需要可用的期望。 在决定管理系统更改所需的环境隔离和管理级别时,请考虑用户的期望和业务需求。
要以最佳方式为用户维护系统可靠性和可用性,需要遵守以下最佳实践:
根据这些最佳实践建议,Esri 和我们的客户广泛使用以下三个环境定义。
根据组织对风险和 IT 策略的容忍度,可能需要在生产、暂存和开发构建之外进一步分离某些类型的活动。 如果需要,您可以为不同的测试和培训活动实施多个环境,例如:
环境隔离使您的生产环境免受可能对您的业务产生负面影响的已知风险和变更(例如升级、新软件或意外更改)的影响,从而帮助您更好地维护其功能、稳定性和性能。 意外的系统更改可能会导致操作系统无法提供用户期望的功能和性能。 实施这些隔离的计算环境有助于您交付稳定、可扩展且高性能的系统。
环境隔离还会产生 IT 资源(保持多个系统运行)、软件许可和人力资本方面的成本,因为越来越多的环境需要更大的支持网络和更多参与变更控制和部署的员工。 通常,业务更加关键的大型系统会部署更为复杂的环境隔离方法,但即使是较小的组织也可能选择部署此方法的某一版本来帮助隔离变更并保护其系统。 必须调查这些选择的成本并将其发送给利益相关方,以做出明智的决定,而不是仅仅因为“我们一直都是这样做的”就默认选择拥有多个环境。
治理在成功实施环境隔离方面至关重要。 该方法可降低风险、优化资源和提供业务优势。 治理应定义团队将利用哪些策略、程序和技术来维护这些环境并促进这些环境之间的变更。
不存在一套跨环境管理软件、应用程序、服务和数据广度的通用注意事项或标准途径。 但是,有一些资源可以帮助一致地部署环境,例如 Chef Cookbooks、Enterprise Cloud Builder、ArcGIS Enterprise Builder 以及数据库复制工具和资产包。 有关详细信息,请参阅 ArcGIS Enterprise 部署工具。 此外,建议尽可能避免手动配置,以降低人为错误的可能性。 请考虑使用 PowerShell DSC for ArcGIS、 ArcGIS REST API 和 ArcGIS API for Python 自动执行其中一些任务。 切记创建这些脚本是适合开发环境的活动。
开发过程中所做的每一个选择,本质上都会导致在暂存和生产环境中,相关人员必须掌握某种知识或操作能力。 采用良好的部署实践,确保将适当的知识和/或技能传授给生产人员,以便他们能够按预期操作。
一些组织使用多个 ArcGIS Enterprise 环境来分隔这些不同的层。 以一致的方式跨环境成功迁移和管理内容可能极具挑战性。 但是,可以使用一些工具来帮助自动执行这些任务。 例如,ArcGIS REST API 提供了一些操作,可用于简化图层、地图和应用程序的跨环境移动过程,这些操作称为导出群组内容和导入群组内容。
例如,假设以下场景:您开发了一个自定义 Experience Builder 应用程序,该应用程序引用了开发环境的某一群组中的 Web 地图和一组要素图层,现在可随时将其移动到暂存系统以进行结构化审查。 要使用这些导出/导入群组迁移操作执行此操作,需要执行以下步骤:
此时,可以在暂存环境中发现、共享、编辑和使用包中的项目,具体取决于暂存群组的设置。 当项目准备就绪时,可以使用相同的工作流将项目提升到生产环境。 也可以使用 ArcGIS API for Python 中的 GroupMigrationManager 模块编写此工作流的脚本。
部署某些类型的更改(例如系统升级或重大配置更改)可能会造成中断。 一些组织使用称为蓝绿部署的策略为用户无缝部署新变更。 蓝绿部署是一种部署策略,您可以在其中创建两个独立但相同的环境。 一个环境(蓝色)正在运行当前应用程序版本,一个环境(绿色)正在运行新的应用程序版本或一组配置。 系统将使用标准机制(如路由器、负载均衡器、反向代理或 Web 服务器)将流量定向到任一环境。
蓝色和绿色环境轮流用作生产环境。 在任何给定时间,只有一个环境处于活动状态。 例如,当需要升级 ArcGIS Enterprise 时,将首先在绿色系统上执行升级。 如果一切都已完全正常运行并可随时用于生产并且测试团队对此感到满意,唯一变化的是流量方向从代理或负载均衡器流向绿色系统而不是蓝色系统,而对于生产最终用户不会有明显的变化。 此时,新内容和功能将在蓝色系统中进行开发,直到成功进行的测试足以保证再次切换流量。
始终保持两组环境正常运行可能会带来高昂的成本。 幸运的是,云端提高了蓝绿部署的可行性。 每个主要的云平台提供商都提供诸多工具,可用于按需启动和关闭基础设施。 例如,可以使用基础设施即代码启动和停止服务器,并自动执行系统的正常运行时间和配置一直到具体的细节。
实施这些隔离的计算环境有助于您交付稳定、可扩展且高性能的系统。 通过利用这些环境来支持有效的变更管理,您可以保护系统免受意外故障的影响,并避免业务运营中断。 大多数组织至少应该有两个计算环境:生产和暂存,因为它们可能不参与任何使用开发环境的自定义开发活动,或者主要使用低代码和无代码应用程序。 但是,根据组织的风险偏好,您可以拥有更多环境。
考虑如何尽早实施和管理环境隔离(以及每个环境中隔离的活动)。 虽然适用于这些选择的万能方法,但您可以参考许多工具和常见做法以获得指导。
最近发布的另一项资源涵盖了环境之间内容推广的概念,并提供了该主题的脚本化方法示例:Esri 社区文章:ArcGIS Enterprise 内容推广。