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

Managed Runtime 概述

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

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

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

Before you can use Managed Runtime and Runtime Admin, they must be enabled and you must request access to them. To enable Managed Runtime and Runtime Admin for your organization, reach out to your Salesforce account team. For access, ask your Commerce Cloud administrator to add either one of the following roles to your account using Account Manager: Managed Runtime User or Managed Runtime Admin.

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

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

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

标记为生产的环境优先由 Salesforce 的支持团队监控。要将环境标记为生产环境 (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 框架。我们称这种 React、节点和 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)
  • 处理请求和处理重定向的边缘函数

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

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

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

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

Before you can use Managed Runtime and Runtime Admin, they must be enabled and you must request access to them. To enable Managed Runtime and Runtime Admin for your organization, reach out to your Salesforce account team. For access, ask your Commerce Cloud administrator to add either one of the following roles to your account using Account Manager: Managed Runtime User or Managed Runtime Admin.