この記事では、Adobe Developer App Builder を通じてAdobe Commerce の拡張性を再考し、カスタム PHP の大部分をよりスケーラブルなアーキテクチャに置き換えることで、実際の本番環境での長期的な成長を目的にデザインされた、スケーラビリティ、安定性、保守性を向上させる方法について説明します。
概要
長年にわたり、PHP の拡張性は、Adobe Commerce のカスタマイズの基盤となってきました。ただし、クラウドネイティブアーキテクチャが成熟するにつれ、より優れた代替手段も提供されるようになります。ヨーロッパの大手モビリティおよび金融サービスプロバイダー向けの最近の実装では、従来の Adobe Commerce モジュール開発の大部分を、アドビのクラウドネイティブ拡張プラットフォームである App Builder に置き換えました。これは、ランタイムアクション(サーバーレス関数)、イベント、API を活用することで、よりスケーラブルで保守性の高いソリューションを実現しました。この記事では、この決定の背後にある理由、アーキテクチャ構造、そこから得られた知見について詳しく説明します。
概要
Adobe Commerce での API ファーストのアプローチは、コアとなる Adobe Commerce プラットフォームの外部でクラウドネイティブアプリとして実行した場合に最もメリットのある機能を評価し、これらの機能を最初に移行することで、段階的に導入できます。
このプロセスにより、次のような明確な成果が得られました。
-
機能の約 70%は App Builder を使用して実装されました。
-
約 30%はネイティブの Adobe Commerce PHP カスタマイズとして残されました。
このバランスにより、ネイティブロジックとチェックアウト関連のロジックを Commerce に近接させながら、統合、検証、バックグラウンド処理、オーケストレーションを、スケーラビリティ、分離性、導入の柔軟性が最大限に発揮される App Builder にオフロードできました。
結果として得られたアーキテクチャ(App Builder 拡張機能のみを示す以下の図を参照)は、このハイブリッドアプローチを反映しています。Adobe Commerce はトランザクションのコアであり、App Builder は統合と自動処理の基盤として機能します。この戦略では、イベント駆動型フローと API メッシュ(アドビの API オーケストレーションサービス)を通じて、ID(SSO)、PIM、ERP、サードパーティサービス、カスタムビジネスロジックを接続します。
アーキテクチャウォークスルー:ハイブリッドモデルの仕組み
ソリューションの中核を成すのは Adobe Commerce で、カタログ、価格設定、買い物かご、チェックアウト、注文処理など、その得意とする機能を担っています。Commerce ランタイム内での不要なカスタマイズを回避して、トランザクションコアをクリーンで安定した状態に維持しました。
このコアに関するすべての要素(ID、データ検証、可用性ロジック、バックグラウンド処理、サードパーティ統合)は、App Builder と Adobe API メッシュを通じて処理されます。
買い物客のエクスペリエンスは、新しい Commerce ストアフロント(Edge Delivery Services を活用)に基づいて作成されています。
1. エントリレイヤー:CDN、Commerce ストアフロント、ID
通常の web サイト訪問者からのすべてのトラフィックは、最初に CDN + Edge Delivery Service に到達します。これにより、リクエストがバックエンドシステムに到達する前に、最適なパフォーマンス、セキュリティ、グローバル配信が確保されます。
認証は Keycloak SSO を通じて処理され、次を介して統合されます。
-
App Builder SSO 統合
-
コア SSO 設定の Marketplace 標準の Adobe Commerce PHP モジュール
-
この設定により、プラットフォームの安定性とクラウドネイティブの柔軟性を組み合わせることができます。
このアプローチの主なメリット
-
実証済みの Marketplace モジュールによる一元的な Identity Management
SSO 設定、ユーザーマッピング、コア認証フローには、適切にサポートされている Adobe Commerce 拡張機能を採用しているので、Commerce ランタイム内でカスタム認証ロジックを維持する必要がありません。
-
最小限の変更で最大限の安全性
SSO モジュールを書き換えたりフォークしたりする代わりに、App Builder を介して小規模なターゲットの拡張機能のみを適用することで、元のモジュールを完全にアップグレード可能な状態に維持します。
-
API ファーストの統合モデル
すべての通信は厳密に SSO API に依存しているので、PHP モジュールの内部実装の詳細から切り離されています。モジュール内部に変更があっても、API の契約が維持される限り、統合は安定した状態を維持します。
2. オーケストレーションレイヤー:Adobe API メッシュ
Adobe API メッシュは、統合アーキテクチャのコアを成し、プラットフォームに関与するすべてのビジネスシステム間の一元的なオーケストレーションと通信のハブとして機能します。
-
Commerce ストアフロント(フロントエンドとして)
-
Adobe Commerce
-
PIM
-
ERP
-
外部検証サービス
-
すべての App Builder アプリケーション
EDS フロントエンドや Adobe Commerce がこれらの各システムと直接ポイントツーポイント統合を確立する代わりに、すべての通信は API メッシュを通じてルーティングされます。
Adobe API メッシュを使用する主なメリット
-
単一の統合サーフェス
システムは、バックエンド統合エンドポイントであるメッシュのみを「認識」する必要があります。すべての外部依存関係は、統合 API ゲートウェイの背後に隠されています。 -
一貫性のある API 契約
すべてのシステムは、明確に定義されバージョン管理された契約を通じて通信するので、隠れた結合が排除され、互換性を損なう変更のリスクが大幅に軽減されます。 -
バックエンドシステム間の完全な分離
PIM、ERP、検証サービス、App Builder アプリは、相互に完全に分離されています。ランドスケープをまたいで変更を強制することなく、どのシステムも独立して進化できます。 -
一元的なセキュリティとガバナンス
認証、承認、トラフィック制御は、複数のカスタム統合をまたいで分散されることなく、メッシュレベルで適用されます。 -
シンプル化された Commerce コードベース
Adobe Commerce またはフロントエンドには、複雑な統合ロジックが含まれなくなりました。メッシュで公開される API を使用するだけで、PHP レイヤーはリーンでトランザクション状態を維持します。
3. ストアフロントと SSO レイヤーで使用される App Builder サービス
これらのサービスは、Adobe Commerce ではなく、Commerce ストアフロントと SSO レイヤーにより直接使用されます。これにより、重要なビジネスロジックを Commerce ランタイムから独立して動作できます。
お客様データレシーバー(SSO → App Builder)
このサービスは、ストアフロントや Commerce のパフォーマンスに影響を与えることなく、SSO レイヤーからお客様データを受信および同期します。App Builder を使用すると、安全な処理、非同期スケーラビリティが確保され、Adobe Commerce でのデプロイメント依存関係がなくなります。
顧客ごとの製品の可用性(ストアフロント → App Builder → PIM)
製品の可用性は、リクエストが Commerce に到達する前に、顧客のコンテキストと PIM データに基づいてリアルタイムに解決されます。App Builder を使用すると、このロジックを個別に拡張でき、Commerce を外部依存関係による大きな負荷から保護します。
会社データ検証(Dun & Bradstreet)(ストアフロント → App Builder → サードパーティ)
検証は、App Builder + API メッシュを介してストアフロントから直接トリガーされ、サードパーティサービスを使用して検証されます。これにより、外部サービスの待ち時間やエラーが Adobe Commerce から完全に分離されます。
外部 ID リダイレクトエンジン(ストアフロント → App Builder)
外部システムからのインバウンドトラフィックは、ストアフロントに入る前に App Builder を介して処理およびマッピングされます。これにより、安全なトラフィック正規化、柔軟なリダイレクトルール、Commerce コアへのリスク回避が実現します。
4. Commerce ストアフロントの事前レンダリング:UX を損なうことなく SEO を実現
AEM Commerce ストアフロントは、ブラウザーで製品データを読み込む際に JavaScript を多用する、最新のフロントエンド駆動型アプリケーションです。これにより、優れたユーザーエクスペリエンスを実現する一方で、SPA 特有の課題も生じています。
サーチエンジンのクローラーやブラウザーレスシステムは、JavaScript を安定して実行できないので、多くの場合、ほとんど空の HTML を受信します。
この課題を解決するのに、App Builder に基づいて作成された公式 Adobe ソリューションである AEM Commerce 事前レンダリングを実装しました。
アーキテクチャでの事前レンダリングの仕組み
App Builder 事前レンダリングアプリケーション:
-
Adobe Commerce カタログサービスから製品データを直接読み取ります。
-
定義済みテンプレートに基づいて、完全にハイドレーションされた HTML ページを生成します。
-
事前レンダリングされた出力を独自の BLOB ストレージに保存します。
次に、Commerce ストアフロントは、このストレージをオーバーレイソースとして使用するように設定されます。次のいずれかの場合:
-
サーチエンジンのクローラー
-
任意のブラウザーレスクライアントが製品 URL をリクエスト
JavaScript を実行することなく、実際の製品データを含む、完全にレンダリングされた HTML 応答を即座に受信します。
同時に:
- 通常のユーザーは引き続き、ブラウザーでライブ PDP レンダリングが行われ、標準の SPA エクスペリエンスを受信します。
App Builder がここで中核的な推進力となる理由
App Builder は、事前レンダリングプロセス全体の中央制御の基盤となります。次の内容を定義できます。
-
データ取得頻度
-
含まれる製品とロケール
-
HTML と JSON-LD 構造
-
SEO メタデータの生成
これらすべては、App Builder の設定を少し変更するだけで調整でき、メインのストアフロントや Adobe Commerce のダウンタイムは発生しません。
また、アドビでは、事前レンダリング App Builder アプリケーションのスターターキットも提供しています。これにより、非常に短期間でソリューションを本番環境に対応させ、SEO 効果を即座に向上させることができました。
このアプローチの主なメリット
-
SEO の大幅な改善
クローラーは、空の HTML の代わりに、構造化データを含む、完全にレンダリングされた製品ページを受信します。 -
ストアフロントのパフォーマンスに影響なし
通常のユーザーは、高速で動的な SPA エクスペリエンスを維持できます。 -
リスクのないデプロイメントモデル
すべての事前レンダリングロジックは、Adobe Commerce とストアフロントランタイムの外部で実行されます。 -
App Builder を介した完全な制御
プラットフォームの再デプロイメントを行うことなく、事前レンダリングルール、データモデル、スケジュールを調整できます。
5. 注文と ERP の同期:デザインによる非同期
チェックアウトと注文処理は、Adobe Commerce 内で完全に処理されるので、データの整合性とトランザクションの一貫性が維持されます。注文を作成すると、書き出しプロセスは、App Builder に基づいて作成された専用のスケジュール済み注文エクスポーターにより引き継がれます。
このエクスポーターは、ストアフロントと Commerce リクエストのライフサイクルの外部で、注文を ERP に非同期的に同期します。
このアプローチの主なメリット
-
ストアフロントの稼働時間が ERP の可用性から完全に切り離される
ERP が低速または一時的に利用できなくなった場合でも、顧客は中断することなく注文を続行できます。 -
ダウンストリームエラーによるチェックアウトのブロックなし
注文の作成はリアルタイムの ERP 応答に依存しなくなったので、コンバージョンリスクの主なソースが排除されます。 -
安全な再試行と制御されたデータフロー
App Builder を使用すると、Commerce のパフォーマンスに影響を与えることなく、スケジュール実行、再試行メカニズム、エラー処理を行うことができます。 -
独立したスケーリングとデプロイメント
注文の同期は、再デプロイメントや Adobe Commerce でのパフォーマンスへの副作用なしに、ボリュームに基づいてスケーリングできます。
App Builder に完全に移行しない理由
アーキテクチャに関する最も初期および最も重要な決定の 1 つは、App Builder を PHP モジュールの完全な代替として扱わないことと、「これまで常に行ってきたから」という理由ですべてを PHP にデフォルト設定しないことでした。
代わりに、すべての要件に対して、次のシンプルなフィルタリングを行います。
アップグレードに関連付けられたメンテナンスコストは削減されますか?
PHP に残ったもの(30%)
PHP のカスタマイズは、本当に属する次の場所にのみ残しました。
-
チェックアウトと注文処理の調整
-
価格設定、買い物かご、見積もりロジック
-
ディープ GraphQL とパフォーマンス重視のフック
-
待ち時間をほとんどゼロにし、完全に同期させる必要がある領域
これらの領域では、データベースへの直接アクセス、Commerce 内部との緊密な結合、リクエストライフサイクル制御が依然として完全に正当化されます。
App Builder に移行したもの(70%)
次のその他すべては移行しました。
-
ID と SSO のオーケストレーション
-
顧客と会社の検証
-
製品の可用性の解決
-
外部システムの調整
-
ERP とサードパーティの統合
-
リダイレクトエンジンと自動処理
-
バックグラウンドジョブとスケジューラー
これらはすべて、PHP モジュールが過去に問題を抱えていた領域です。
-
緊密な結合
-
困難なデプロイメント
-
不十分なエラー分離
-
スケーラビリティの制限
得られた主なメリット
ビジネスロジックと統合ロジックの約 70%を App Builder に移行することで、プラットフォームの作成、デプロイ、運用方法を根本的に変えました。その影響は、アーキテクチャの品質だけでなく、配信速度、システムの安定性、長期的なコスト制御にも顕著に表れました。
独立したデプロイメント
App Builder が統合とビジネスワークフローの大部分を処理するので、ほとんどの変更で Adobe Commerce の完全な再デプロイメントは不要になりました。統合の更新、検証、バックグラウンドプロセスは独立してデプロイできるので、次の項目が大幅に削減されます。
-
リリースリスク
-
デプロイメントウィンドウ
-
チーム間の調整オーバーヘッド
これだけでも、日常業務における最大の生産性向上の 1 つになりました。
最も重要な部分でのスケーラビリティ向上
以前は、次の状況においてトラフィック急増が発生していました。
-
可用性チェック
-
会社の検証
-
または外部 API 呼び出し
これらが、Commerce のパフォーマンスに直接影響を与えていました。
現在、これらのワークロードは App Builder 内で独立してスケーリングされます。これにより、次の内容を実現できます。
-
チェックアウトのパフォーマンスの安定性を維持します。
-
Commerce リソースをトランザクションワークロード専用に確保します。
-
予測不可能なサードパーティトラフィックがコンバージョン率を低下させることはなくなります。
真のエラー分離
最も重要な改善点の 1 つは、エラー抑制です。サードパーティシステムで待ち時間、パフォーマンス低下、停止が発生した場合:
-
App Builder が影響を吸収します。
-
再試行とフォールバックロジックがそこで適用されます。
-
Adobe Commerce が引き続き完全に動作します。
これにより、以前はストアフロントの一部または全体のダウンタイムにつながっていた一連のインシデントシナリオ全体が効果的に排除されました。
よりクリーンなコード所有権と明確な責任
プラットフォームのアーキテクチャ境界が明確になりました。
-
Adobe Commerce → トランザクションロジック、チェックアウト、価格設定、買い物かご
-
App Builder → 統合、オーケストレーション、検証、バックグラウンドジョブ
この分離の結果:
-
新規開発者のオンボーディングがシンプル化されます。
-
チーム間の依存関係が軽減されます。
-
統合を重視するカスタムコードにより、Commerce コアが徐々に損なわれるのを防ぎます。
今後を見据えたデザイン
このハイブリッドアーキテクチャは、アドビの長期的な SaaS、API ファースト、構成可能なコマース戦略と完全に整合しています。ほとんどのカスタムロジックを外部化した場合:
-
プラットフォームのアップグレードの安全性が向上します。
-
コードレベルでのベンダーロックインが軽減されます。
-
ソリューションは、Adobe Commerce as a Cloud Service への移行に向けて既に準備されています。
今日の要件を解決するだけでなく、Adobe Commerce の今後に向けて構造的に対応できるプラットフォームを作成しました。