9 分鐘
h1

本文說明如何透過 Adobe Developer App Builder 重新思考 Adobe Commerce 的可擴充性,並以更可擴充的架構取代大部分自訂 PHP,以提升可擴充性、穩定性及可維護性,適合實際生產環境中的長期增長。

簡介

多年來,PHP 的擴充性一直是 Adobe Commerce 自訂的支柱。但隨著雲端原生架構的成熟,也有更好的替代方案。在最近為一家領先的歐洲行動與金融服務供應商進行的實作中,我們以 App Builder (Adobe 的雲端原生擴充平台) 取代大部分傳統 Adobe Commerce 模組開發。我們透過利用執行階段動作 (無伺服器功能)、事件和 API 來達成此目標,以提供更可擴充和可維護的解決方案。本文將說明該決定背後的原因、架構結構和經驗教訓。

概觀

Adobe Commerce 的 API 優先方法可逐步採用,方法是評估哪些功能最有利於在核心 Adobe Commerce 平台之外以雲端原生應用程式的形式執行,並先移轉這些功能。

此流程會產生明確的結果:

此平衡可讓我們保持結帳相關的原生邏輯貼近於 Commerce,同時解除安裝 App Builder 的整合、驗證、背景處理和協調流程,以發揮擴充性、隔離和部署彈性的優勢。

產生的架構 (請參閱下圖,僅概述 App Builder 擴充功能) 反映此混合式方法:Adobe Commerce 仍然是交易核心,而 App Builder 則作為整合和自動化支柱。此策略會透過事件導向的流程和 API Mesh (Adobe 的 API 協調流程服務) 連線身分識別 (SSO)、PIM、ERP、第三方服務和自訂商業邏輯。

預設替代

架構逐步說明:混合式模型的運作方式

解決方案的核心是使用 Adobe Commerce 進行其擅長的操作:目錄、定價、購物車、結帳和訂購位置。我們特意保持交易核心整潔且穩定,避免 Commerce 執行階段中不必要的自訂。

圍繞該核心的一切 (身分識別、資料驗證、可用性邏輯、背景處理和第三方整合) 都透過 App Builder 和 Adobe API Mesh 處理。

購物者體驗建立於新的 Commerce 店面 (由 Edge Delivery Services 提供支援)。

1. 進入層:CDN、Commerce 店面與身分識別

來自一般網站訪客的所有流量會先抵達 CDN + Edge Delivery Service,確保最佳績效、安全性和全域傳送,然後所有請求才能送達後端系統。

驗證會透過 Keycloak SSO 處理,透過以下方式整合:

此方法的主要優點

預設替代

2. 協調層:Adobe API Mesh

我們整合架構的核心是 Adobe API Mesh,它是平台所涉所有業務系統之間的中心協調與通訊中樞:

與其使用 EDS Frontend 或 Adobe Commerce 建立與這些系統的點對點直接整合,所有通訊都會透過 API Mesh 路由。

使用 Adobe API Mesh 的主要優點

3. 店面與 SSO 層使用的 App Builder 服務

這些服務由 Commerce 店面和 SSO 層直接使用,而非由 Adobe Commerce 使用,這可讓關鍵商業邏輯獨立於 Commerce 執行階段運作。

客戶資料接收器 (SSO → App Builder)

此服務會接收並同步來自 SSO 層的客戶資料,而不會影響店面或 Commerce 績效。使用 App Builder 可確保安全處理、非同步擴充性,以及 Adobe Commerce 上的零部署相依性。

每個客戶的產品可用性 (店面 → App Builder → PIM)

在請求觸達 Commerce 之前,產品可用性會根據客戶內容和 PIM 資料即時解決。App Builder 可讓此邏輯獨立擴充,並保護 Commerce 免受繁重的外部相依性負載的影響。

預設替代

公司資料驗證 (Dun & Bradstreet) (店面 → App Builder → 第三方)

驗證會透過 App Builder + API Mesh 直接從店面觸發,並使用第三方服務進行驗證,這會保持外部服務延遲和失敗與 Adobe Commerce 完全隔離。

預設替代

外部 ID 重新導向引擎 (店面 → App Builder)

來自外部系統的傳入流量在進入店面之前會透過 App Builder 處理和對應,如此可實現安全流量標準化、彈性重新導向規則,以及 Commerce 核心的零風險。

4. Commerce 店面預先轉譯:SEO 不會影響 UX

AEM Commerce 店面是現代化的前端驅動應用程式,重度依賴 JavaScript 在瀏覽器中載入產品資料。雖然這可提供絕佳的使用者體驗,但同時也帶來傳統 SPA 挑戰:

搜尋引擎爬蟲和無瀏覽器系統通常收到幾乎空白的 HTML,因為它們無法可靠地執行 JavaScript。

為了解決這項挑戰,我們實作了 AEM Commerce 預先轉譯,這是以 App Builder 為基礎的官方 Adobe 解決方案。

預先轉譯在我們的架構中如何運作

App Builder 預先轉譯應用程式:

Commerce 店面接著會設定成使用此儲存體作為覆蓋來源。當出現下列任一情況時:

它會立即收到包含真實產品資料的完整轉譯 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 的轉型做好準備的平台。