1. コマースDevOps

Sitecore XCソフトウェアアーキテクチャ

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore Experience Commerce(XC)ソリューションは、構成、スケーラビリティ、拡張性を実現するために複数のアーキテクチャエンティティを組み合わせて活用します。

方針

Commerce Engineプラグインは、Commerce Engineのポリシーを含むSitecore XCソリューションのすべてのコマース機能を提供します。これらはCommerce Engineの機能や挙動を制御するために設定可能なプラグインの要素です。

Sitecore XC JSONファイル内で設定用のポリシーを公開します。関連する環境ポリシーファイルを編集することで設定を変更することができます。

Sitecore XCはCommerce Engineの動作を制御するすべてのポリシーと設定を、Globalデータベース、すなわち集中型のCommerce Policy Storeに保存します。ポリシーはブートストラップ処理を用いてグローバルデータベースに永続化されます。ポリシーは厳重にキャッシュされており、デプロイシナリオ以外ではその値がほとんど変わりません。

環境

Sitecore Experience Commerceは 、環境 の概念を用いて異なるCommerce Engine構成を可能にします。Commerce Engineでは、環境がCommerce Engineの挙動と扱うデータセットを決定するポリシーの集合を定義します。クライアントがCommerce Engineに呼び出しを行うと、呼び出しヘッダー がターゲットとなる環境を指定し、Commerce Engineがその環境構成の文脈でリクエストに応答できるようにします。

コマース環境は、別々に設定可能なデータやサービス機能のプールを個別のCommerce Engine環境として稼働させ、呼び出しクライアントの要件に合わせてカスタマイズし、展開の需要に応じてスケールさせる柔軟性を提供します。単一のCommerce Engineサービスインスタンス上で複数のCommerce Environmentを設定することも、複数のCommerce Engineサービスインスタンスに分散して、同じサーバー上またはサーバー間でスケール展開が可能です。

コマース環境は、以下を含むコアコマースエンティティクラス(Sitecore.Commerce.Core.CommerceEnvironment)です。

  • Commerce Engineの呼び出しに対するシステムの挙動に影響を与えるポリシーの集合体です。
  • 商取引データセットに対応するアーティファクトストアのIDです。

クライアントがコマースエンジンに呼び出しを行う際、コールヘッダーにコマース環境の名前を指定します。環境名により、コマースエンジンはクライアントが期待する動作やデータセットを応答できます。

The ArtifactStoreID property and the environment "Name" property in the Plugin.Habitat.CommerceAuthoring.json file.

自分で環境を作成し、必要に応じて設定をカスタマイズできます。

ブートストラップ

ブートストラップとは、デプロイ中にディスク上で作成されたJSONファイルからポリシーおよび環境データを グローバルデータベースに読み込み、他のコマースエンジンがアクセスできるようにするプロセスです。

ブートストラップ後、Commerce Engineは通常のランタイム操作中にデータベースから直接環境設定を取得するため、環境JSONファイルは不要になります。ただし、環境のJSONファイルに変更を加えた場合は、変更がグローバルデータベースに伝播するようにCommerce Engineを再度ブートストラップする必要があります。

コマースエンジンの役割

Sitecore XCソリューションは、スケーラビリティをサポートする ためにCommerce Engineロール の概念を実装しています。Commerce EngineロールはコアCommerce処理のデプロイされたインスタンスであり、それぞれ異なる論理ロールを担当します。ロール間の区別は純粋に論理的なものであり、異なるインストールロール間でデプロイされるビットに実質的な違いはありません。ロール間の区別は、トラフィックの発生元と呼び出されるCommerce環境の設定によって定義されます。

クライアントがCommerce Engineに呼び出しを行う際、その呼び出しのヘッダーでターゲットとなるCommerce Environmentを指定する必要があります。Commerceエンジンの動作がリクエストヘッダーで指定された環境の文脈でどのように処理するかを決定するのは、ターゲット環境の設定です。

Commerce Engineの役割は同じサーバー上に共存することも、別々のサーバーに配置することも可能です。必要に応じて独立してスケールさせることも可能です。

本番環境では、トラフィックは通常、複数のインストールされたCommerce Engineインスタンスに分割されており、これらのインスタンスは通常、トラフィックソースの近くに物理的に配置されています(この 参照アーキテクチャ図に示されています)。

異なる環境ごとに異なるCommerce Engineインスタンスを使用することで、キャッシュ、データ保存、統合接続など、各展開ロールの機能を明示的に独立して制御できます。

サンプルSitecore XCソリューションは、それぞれの役割を表す4つのCommerce Engineインスタンスを定義しています:

表1。

役割

概要

著作

オーサリングの役割は、Business Toolsからのトラフィックを処理するCommerce Engineのインスタンスです。この役割はトラフィックが少ないため(eコマースソリューションはビジネスユーザー数が比較的少ないため)、スケーリング要件は通常比較的低いです。

商店

ショップの役割は、1つ以上の店舗からのトラフィックを提供するコマースエンジンのインスタンスです。ストアフロントからのリクエストはコマース・Connectおよび Commerce Engine Connectによって処理されます。このコンテンツ配信の役割は需要に応じてスケールでき、通常はトラフィックを生み出すSitecore XPインスタンスの近くに設置されます。

手下たち

ミニオンロールは、コマースエンジンのインスタンスで、独立して動作し、非同期処理(ポストオーダーキャプチャ処理やクリーンアップを含む)をサポートします。ミニオンロールは通常ワーカーロール(ウェブロールではありません)として設定され、ウェブトラフィックを受け取りません。このロールには、それぞれ特定のタスク(例えば、保留中の注文キューを処理するための保留中のミニオン)を持つ一連のミニオンが含まれます。

>[!重要]
> Commerce ソリューションは、Minionロールを実行するCommerce Engineのインスタンスを1つだけ持っていなければなりません。複数のMinionロールを複数のCommerce Engineのインスタンスで実行すると、並行性エラーが生じます。

DevOps

DevOpsロールは、内部でDevOps担当者のみが利用可能なCommerce Engineのインスタンスです。この役割はより高い権限を割り当てることができ、DevOps担当者が他の役割では許可されていないメンテナンス作業(例

)を実行できるようにします。

データベース

Sitecore XCは以下のCommerceデータベースを使用しています。

  • すべてのCommerceデータセットを保存する共有環境データベース(SitecoreCommerce_SharedEnvironments)。
  • Commerce Engine環境の設定を保存するグローバルデータベースです。

Commerce Shared Environmentsデータベース

Commerce Shared Environmentsデータベースは、カタログデータ、顧客記録、価格情報、設定済みプロモーションなど、すべてのCommerce Business Dataを保存します。ビジネスデータに加え、Shared Environmentsデータベースには、さまざまなプラグインが提供するコアコマース機能をサポートする汎用エンティティやリストも保存されています。

同じビジネスデータセットに属する商取引エンティティは共通のアーティファクトストアの値ID共有します。例えば、デフォルトの共有環境データベースでは、Habitatデータセットに含まれるすべてのコマースエンティティが同じアーティファクトストアID値に対して保存されます。Adventure Worksデータセットに含まれるエンティティは、異なるアーティファクトストアIDに対して格納されます。以下は、エンティティが異なるアーティファクトストアのID値に対して格納されているsitecore_commerce_storage.CatalogEntityテーブルの例を示しています。

Commerce entities with different Artefact store ID value based on dataset.

クライアントがCommerceデータの要求をすると、呼び出しリクエストで指定された環境IDは 、Commerce Environmentファイルで設定されているArtifactストアのIDに対応します。ArtifactストアのIDはデータ初期化プロセス中に生成されます。Shared Environmentsデータベースでは、同じCommerceデータセットに属するすべてのCommerceエンティティが同じArtifact store ID値を共有します。

!注販売可能なアイテムなどの商取引エンティティは、この参照アーキテクチャ図に示されているように、ストアフロントでの公開のためにSitecore Webデータベースに移されることはありません。商品がストアフロントに公開されるかどうかにかかわらず、コマースデータは共有環境データベースに残ります。コマースエンティティの場合、ストアフロントへの公開は、例えばBusiness Toolsでの公開ワークフローの結果としてエンティティに対して設定された"published"プロパティ値(bool.)の関数です。

グローバルデータベース

グローバルデータベースは、クライアントが特定のコマース環境に対して開始したリクエストに対して、コマースエンジンがどのように動作するかを制御するすべてのCommerce Engine環境設定データを保存します。

ブートストラッププロセスは、環境、構成およびポリシーデータをグローバルデータベースに登録する役割を担います。

プラグイン

Commerce Engineには既存機能を拡張・変更するためのプラグイン可能なフレームワークが含まれています。Sitecore XCプラグインアーキテクチャは、カスタマイズ機能のための拡張ポイントを提供しつつ、アップグレードの可行性を損なうことなく実現します。

このプラグインアーキテクチャは、オプトインによる複雑さとSitecore XCソリューションの段階的な強化を可能にします。サードパーティシステムとの統合のためのコネクタを書くこともできます。また、ビジネスロジックを拡張したり、Business Toolsを拡張したりするためのプラグインも作成できます。

この記事を改善するための提案がある場合は、 お知らせください!