9 分钟
h1

本文介绍如何通过 Adobe Developer App Builder 重新思考 Adobe Commerce 的可扩展性,并用更具可扩展性的架构替换大部分自定义 PHP,从而改进可扩展性、稳定性和可维护性,这些改进专为实际生产环境中的长期增长而设计。

简介

多年来,PHP 的可扩展性一直是 Adobe Commerce 自定义的支柱。 但随着云原生架构的成熟,更好的替代方案也应运而生。在为欧洲一家领先的出行与金融服务提供商实施的最新项目中,我们用 Adobe 的云原生扩展平台 App Builder 取代了很大一部分传统的 Adobe Commerce 模块开发。我们通过利用运行时操作(无服务器功能)、事件和 API 来实现这一点,从而提供更具可扩展性和可维护性的解决方案。本文详细分析了这一决策背后的原因、架构结构以及经验教训。

概述

采用 Adobe Commerce 的 API 优先方法可以逐步进行,通过评估哪些功能作为云原生应用程序在核心 Adobe Commerce 平台之外运行最有益,并优先迁移这些功能。

这个过程带来了一个清晰的结果:

这种平衡使我们能够将与原生逻辑和结帐相关的逻辑保留在 Commerce 中,同时将集成、验证、后台处理以及编排卸载到 App Builder,因为在这些方面,App Builder 的扩展性、隔离性和部署灵活性优势得以充分发挥。

最终的架构(参见下图,仅概述了 App Builder 扩展)体现了这种混合方法:Adobe Commerce 仍然是交易型核心,而 App Builder 则充当了集成和自动化的骨干。该策略通过事件驱动的流程和 API 网格(Adobe 的 API 编排服务)连接了身份标识 (SSO)、PIM、ERP、第三方服务以及自定义商业逻辑。

默认替代文本

架构演练:混合模型的工作方式

该解决方案的核心是 Adobe Commerce,它将完成最擅长的工作:目录、定价、购物车、结账和订单下达。我们特意保持交易型核心的干净和稳定,避免在 Commerce 运行时中进行不必要的自定义。

该核心的一切(身份标识、数据验证、可用性逻辑、后台处理和第三方集成)均通过 App Builder 和 Adobe API Mesh 进行处理。

购物者体验基于新的 Commerce 店面(由 Edge Delivery Services 提供支持)构建。

1.进入层:CDN、Commerce Storefront 和身份标识

来自常规网站访客的所有流量首先会着陆 CDN + Edge Delivery Service,该服务可确保在任何请求到达后端系统之前实现最佳性能、安全性和全局交付。

身份验证通过 Keycloak SSO 进行处理,集成方式为:

此方法的主要优势

默认替代文本

2.编排层:Adobe API Mesh

我们的集成架构的核心是 Adobe API Mesh,它充当该平台涉及的所有业务系统之间的中心编排和通信中心:

EDS 前端或 Adobe Commerce 并未与这些系统建立直接的点对点集成,而是将所有通信都通过 API Mesh 进行路由。

使用 Adobe API Mesh 的主要好处

3.Storefront 和 SSO 层使用的 App Builder 服务

这些服务直接由 Commerce Storefront 和 SSO 层使用,而不是由 Adobe Commerce 使用,这使得关键商业逻辑独立于 Commerce 运行时运行。

客户数据接收器 (SSO → App Builder)

此服务接收并同步来自 SSO 层的客户数据,而不影响店面或 Commerce 的性能。使用 App Builder 可以确保安全处理、异步可扩展性,并且对 Adobe Commerce 零部署依赖。

每个客户的产品可用性 (Storefront → App Builder → PIM)

在请求到达 Commerce 之前,产品可用性会根据客户上下文和 PIM 数据实时得到解决。App Builder 允许此逻辑独立扩展,并保护 Commerce 免受繁重的外部依赖负载的影响。

默认替代文本

公司数据验证 (Dun & Bradstreet)(Storefront → App Builder → 第三方)

验证直接从店面通过 App Builder + API Mesh 触发,并使用第三方服务进行核实,这使得外部服务的延迟和故障与 Adobe Commerce 完全隔离。

默认替代文本

外部 ID 重定向引擎 (Storefront → App Builder)

来自外部系统的入站流量在进入店面之前会通过 App Builder 进行处理和映射,这样可以实现安全流量标准化、灵活重定向规则,并且不会给 Commerce 核心带来任何风险。

4.Commerce Storefront 预渲染:不影响 UX 前提下的 SEO

AEM Commerce 店面是一个现代化的前端驱动应用程序,它严重依赖于 JavaScript 在浏览器中加载产品数据。虽然这提供了卓越的用户体验,但它带来了经典的 SPA 挑战:

搜索引擎爬虫和无浏览器系统通常收到几乎空的 HTML,因为它们无法可靠地执行 JavaScript。

为了解决此挑战,我们实施了 AEM Commerce 预渲染,这是一项基于 App Builder 构建的官方 Adobe 解决方案。

预渲染在我们的架构中如何工作

App Builder 预渲染应用程序:

然后,将 Commerce Storefront 配置为将此存储用作叠加源。出现以下任一情况时:

它立即收到包含真实产品数据的完全呈现的 HTML 响应,而不执行任何 JavaScript。

与此同时:

为何 App Builder 在此处是核心推动力

App Builder 是整个预渲染过程的中央控制平面。它允许我们定义:

所有这些功能都可以通过小幅度的 App Builder 配置更改进行调整,在主店面或 Adobe Commerce 中无需停机。

Adobe 还为预渲染 App Builder 应用程序提供了一个入门工具包,这使我们能够在非常短的时间内做好解决方案生产准备,并立即实现 SEO 提升。

此方法的主要好处

5.订单和 ERP 同步:按设计异步

结账和订单下达仍完全在 Adobe Commerce 内部进行,从而保持数据完整性和交易一致性。创建订单后,导出流程将由基于 App Builder 的专用计划订单导出程序接管。

此导出程序在店面和 Commerce 请求生命周期之外,以异步方式将订单同步到 ERP。

此方法的主要好处

默认替代文本

为何不完全迁移到 App Builder?

最早也是最重要的架构决策之一,就是既不将 App Builder 视为 PHP 模块的完全替代品,也不“因为一直以来都是这么做的”就默认将所有事情都用 PHP 处理。

相反,每个要求都经过一个简单的筛选:

将此逻辑迁移到 App Builder 是否会提升弹性和扩展能力?
这是否会降低与升级相关的维护成本?

PHP 中保留的内容 (30%)

我们仅在真正需要的地方保留了 PHP 自定义:

在这些地方,直接数据库访问、与 Commerce 内部紧密耦合以及请求生命周期控制仍然是绝对合理的。

迁移到 App Builder 的内容 (70%)

其他内容都移走了:

这些都是 PHP 模块历来存在的问题领域:

获得的主要优势

通过将大约 70% 的业务和集成逻辑转移到 App Builder,我们从根本上改变了平台的构建、部署和操作方式。不仅在架构质量方面,而且在交付速度、系统稳定性以及长期成本控制方面都能看到这种影响。

独立部署

由于 App Builder 处理了大多数集成和业务工作流,因此大多数更改不再需要完全重新部署 Adobe Commerce。集成更新、验证和后台进程可以独立部署,从而显著减少:

仅这一点就成为日常运营中生产力提高幅度最大的举措之一。

在最需要的地方实现更好的可扩展性

以前,流量尖峰出现在:

可能会直接影响 Commerce 的性能。

现在,这些工作负载在 App Builder 中独立扩展。因此:

真正的故障隔离

最重要的改进之一是故障控制。当第三方系统遇到延迟、降级或中断时:

这有效地消除了以前导致部分或完全店面停机的整类问题情景。

更清晰的代码归属与明确的责任划分

平台现在具有明确的架构界限:

这种分离:

面向未来的设计

这种混合架构完全符合 Adobe 的长期 SaaS、API 优先和可组合商务策略。通过将大多数自定义逻辑外部化:

我们不仅解决了当下的需求,还构建了一个在结构上为 Adobe Commerce 的转型做好准备的平台。