News: PWA Kit 3.0.0 现已推出,并支持 Node 18。升级您的项目 和环境以维护功能。您_无法_使用旧版本部署您的站点。

Managed Runtime 概述

Managed Runtime 提供部署、托管和监控 PWA Kit 网店的基础架构。

Managed Runtime 仅支持通过 PWA Kit 模板创建的应用程序。可用模板的源代码可以在 GitHub 上的 PWA Kit 存储库template-* 文件夹中找到。

本指南介绍 Managed Runtime 的主要部分以及如何访问它。

在使用 Managed Runtime 和 Runtime Admin 之前必须启用它们,并且您必须请求访问它们。要为您的组织启用 Managed Runtime 和 Runtime Admin,请联系您的 Salesforce 帐户团队。要获得访问权限,请让您的 Commerce Cloud 管理员使用 Account Manager 将以下角色之一添加到您的帐户:Managed Runtime User(托管运行时用户)或 Managed Runtime Admin(托管运行时管理员)。

环境是用于描述 Managed Runtime 托管的特定网店的所有云基础架构和配置值的术语。环境用于将您的生产环境 (Production) 网店与为其他目的(例如开发或测试)部署的网店分开。

Managed Runtime API 中,环境称为“目标”,但两个术语指的是同一事物。

由于环境在可自动扩展和缩减的高效微服务上运行,因此您可以根据需要创建任意数量的环境,而无需额外费用。例如,您可以创建一个短期环境,专门用于单个敏捷开发冲刺或该冲刺中的单个用户故事。当您不再需要某个环境时,我们建议您将其删除。

标记为生产的环境优先由 Salesforce 的支持团队监控。对于生产环境,您还可以使用 Log Center 调试。要将环境标记为生产环境 (Production),您有两种选择:

  1. 使用 Runtime Admin 工具。有关创建环境或编辑现有环境的分步说明,请参见管理指南的环境部分。
  2. 使用 Managed Runtime API。projects_target_createprojects_target_partial_update 端点都具有 is_production 参数。要使用这些端点将环境标记为生产环境 (Production),请将 is_production 设置为 true

默认情况下,您最多可以将 10 个环境标记为生产环境 (Production)。要增加您的限度,请联系支持部门。

在环境中运行的网店代码称为捆绑包。使用 PWA Kit 中包含的开发人员工具生成一个捆绑包并将其推送到 Managed Runtime。

捆绑包是您的代码在特定时间点的快照。它是_不可变的_:创建捆绑包后,将无法更改。拥有完整且准确的捆绑包历史记录可以更轻松地解决部署问题。

推送捆绑包后,您可以使用 Runtime Admin(运行时管理员)或 Managed Runtime API 将该产品指定为“已部署”。每个项目可以有多个捆绑包,但每个环境只能有一个指定为已部署的捆绑包。您可以随时更改指定为已部署的捆绑包。有关更多信息,请参阅推送和部署捆绑包

为了帮助您管理多个环境,每个环境也属于一个项目,每个项目都属于一个组织。一个组织可以包含多个网店的多个项目,每个项目可以包含多个环境。Managed Runtime 用户可以属于多个组织以分隔不同的工作流。

每个组织最多总计可以有 100 个环境和最多 10 个生产环境。如果您需要提高这些限度,请联系您的 Salesforce 支持代表。

组织和用户组织成员资格由 Account Manager 中的设置确定。用户可以作为成员或管理员属于组织。成员只能与分配了项目角色的 Managed Runtime 中的项目进行交互。管理员可以与组织内的所有项目进行交互。

要为用户分配管理员组织成员资格,请联系 Salesforce Support。

对于 Managed Runtime 项目,用户可以具有以下能力:

  • **浏览:**在 Runtime Admin 中查看项目。
  • **管理重定向:**管理项目的重定向。请查看重定向文档以了解更多信息。
  • **部署:**部署新捆绑包或将部署恢复为旧捆绑包。
  • **管理团队:**查看、添加、邀请、删除和编辑项目团队成员的角色。
  • 访问日志: 跟踪全部环境的日志。

每个用户均被分配项目角色,该角色决定他们拥有哪些能力。(一个用户只能有_一个_角色。)项目角色可以分配给组织内的任何用户。

下表显示了与每个角色相关的能力:

角色浏览管理重定向部署管理团队访问日志
管理员
开发人员
营销人员
只读

在每个 Managed Runtime 环境中,已发布捆绑包中的 React 应用程序在 Node.js 环境中运行。为了响应页面请求并渲染结果,我们在 PWA Kit 的渲染路由系统的帮助下使用 Express Web 框架。我们称这种 React、Node 和 Express 的组合为应用服务器。(尽管从技术上讲,应用服务器在“无服务器”技术上运行。)应用服务器经过优化,可在提供低计算成本、高可用性、快速渲染和大规模扩展能力的云基础架构上运行。

因为 PWA Kit 的渲染和路由系统处理本地开发环境和 Managed Runtime 环境之间的差异,所以您的代码在部署时以可预测的方式运行。这种可预测性鼓励开发团队更频繁地部署捆绑包,从而提高开发团队的生产力。

目前,应用服务器支持 Transport Layer Security (TLS) 版本 1.2 及更高版本。

在 App Server 上运行的代码可以访问以下环境变量:

  • DEPLOY_TARGET:环境的 ID。
  • EXTERNAL_DOMAIN_NAME:在环境中设置的域名。
  • MOBIFY_PROPERTY_ID:环境所属项目的 ID。

支持应用服务器的是几个边缘服务,包括:

  • 用于保护您的环境免受攻击的 Web 应用程序防火墙 (WAF)
  • 加速 API 请求的代理服务器
  • 用于缓存请求并加快页面加载的内容交付网络 (CDN)
  • 处理请求和处理重定向的 Edge 函数

我们的代理请求指南中详细介绍代理服务器和 CDN。我们的最大化缓存命中率指南中介绍称为请求处理器的边缘函数。

Managed Runtime 的边缘服务战略性地分布在我们的公共云基础架构中。每个服务都尽可能靠近用户,以获得更快的性能。

为了管理您的组织、项目、环境和捆绑包的设置,我们提供两种不同的工具:

  1. Managed Runtime Admin,基于 Web 的 UI。
  2. Managed Runtime API,这是一种 REST API,提供与基于 Web 的工具相同的功能和一些附加功能。

将 Runtime Admin 工具用于日常任务,例如将新代码捆绑包部署到环境。在您需要编程控制时使用 API,例如自动创建作为持续集成脚本一部分的环境。

管理工具为您提供了一种自助方式来配置许多设置,包括:

  • 允许的 IP 地址
  • 允许的访问控制标头
  • 当前部署的捆绑包
  • 部署区域
  • 代理
  • 重定向
  • 用户权限
  • 生产环境标记

对管理工具的访问由 Account Manager 角色和 API 密钥控制。对于持续集成 (CI) 和持续交付 (CD) 流程,具有自己 API 密钥的专用机器人用户通常由您的组织设置。

有趣的事实:与您的网店一样,Runtime Admin 工具是部署到 Managed Runtime 的无标头 React 应用程序。

在构建网店时,请牢记 Managed Runtime 环境的以下限制条件:

  • 环境仅响应其 HTTP Host 标头与 Runtime Admin 中设置的“外部主机名”匹配的请求。
  • 路径 / 仅接受 HTTP GET 请求。
  • 请求和响应大小不能超过 6 MB。
  • HTTP 请求行和标头的最大大小为 10240 字节。超过此大小的请求将返回 HTTP 413 内容过大
  • 默认情况下不支持 Cookie,包括 HTTP 请求 Cookie 和 HTTP 响应 Set-Cookie 标头。可以通过在具有 projects_target_partial_update 端点的环境中设置 allow_cookies 属性来启用它们。您还可以在 Runtime Admin环境设置中启用 Cookie。PWA Kit 版本 3.1.0 或更高版本支持 Cookie。请参阅使用 Cookie 进行个性化设置
  • 不支持以 _ 开头的标头请求。这些请求将被丢弃。
  • 源自 Managed Runtime 环境的 HTTP 请求不使用固定 IP 地址。要允许来自 App Server 的列表请求,请使用 EC2AWS IP 范围。要允许来自代理的列表请求,请使用 CLOUDFRONT_ORIGIN_FACING
  • 路径前缀 /mobify 是为受管端点保留的。这些端点包括:
    • /mobify/ping:当环境正常运行时,返回 HTTP 200 响应代码。
    • /mobify/redirect/$path:返回与 projects_target_redirect_retrieve 类似的响应。
    • /mobify/proxy/$name:返回来自代理的响应。
  • 您可以使用 HTTP 请求标头绕过 CDN 缓存:x-mobify-cachebreaker: 1
  • 环境 IP 允许列表最多支持 250 个 IP 地址。无法提高此限制。
  • 环境访问控制标头最多支持 2 个标头。每个标头:
    • 最多可包含 128 个字符。
    • 可以是字母数字字符和 - 和 _ 字符的组合
    • 请参阅访问控制标头
  • App Server 请求的执行时间限制为 20 秒。
  • 未处理的承诺拒绝会破坏应用程序渲染。
  • 捆绑包的最大大小为 400 MB,捆绑包内所有 ssr_onlyssr_shared 文件的最大大小为 249 MB。
  • 可以上传和提供的静态资源仅限于以下内容类型:application/javascriptapplication/jsonimage/pngimage/gifimage/jpegimage/svg+xmlimage/webptext/csstext/plain和字体(ttfwoffwoff2otf等)。所有其他内容类型都需要由外部系统提供服务。

Managed Runtime 代理有不同的 约束条件

您可以在 Salesforce Status 上订阅有关 Managed Runtime 服务可用性的更新。

现在您已经了解了 Managed Runtime 的主要部分,是时候动手实践了!推送并部署捆绑包指南就是很好的起点。

在使用 Managed Runtime 和 Runtime Admin 之前必须启用它们,并且您必须请求访问它们。要为您的组织启用 Managed Runtime 和 Runtime Admin,请联系您的 Salesforce 帐户团队。要获得访问权限,请让您的 Commerce Cloud 管理员使用 Account Manager 将以下角色之一添加到您的帐户:Managed Runtime User(托管运行时用户)或 Managed Runtime Admin(托管运行时管理员)。