Magentoが登場した2007年当時から現在まで、私は様々なシーンでこんな質問を受けてきました。

「Magentoって、モールできるんですよね?」

この質問に対して私はいつも「No」と答えてきました。
このエントリではその理由について説明したいと思います。

マルチサイトとショッピングモールの違い

マルチサイトとは

マルチサイトとは、1つのシステム上で複数のサイトを運用することを意味します。
基本的には単独の運営者が、複数のサイトをテーマ別に作成し、運用することを想定しています。
組織の規模によっては職務分掌の都合で、事業部別に取り扱うデータを制限したい場合もあるでしょうが、組織としては1つです。

時折複数の企業から委託を受けた単独の企業が複数のサイトを1つのシステム上で運営することがありますが、これも結局は日常の運営をする主体が単独の組織になるため、大きな違いはありません。 

ショッピングモールとは

楽天市場やYahoo!ショッピングなどを筆頭にしたショッピングモールは、ある企業が管理・運用する1つのシステムの上に非常に多くの加盟店となる企業が共同でシステムを利用することを意味します。
マルチサイトと異なる点としては、絶対的な権限を持つ運営者が加盟店に対してシステムの利用権を貸与しているため、個別のデータはきちんと分離されていて、相互に見ることは何があっても起きえません。
ですがマルチサイトではないので、ドメイン名が変わるようなことはなく、1つのサイト内の1つのコンテンツとして加盟店のページができていきます。
そのためショッピングモールではショッピングモール全体で商品を横断的に検索することができ、価格や納期の比較が容易にできるようになっています。  

Magentoのマルチサイト運用

Magentoのマルチサイト運用は、Community Editionの標準状態とEnterprise Editionの標準状態で多少異なります。

Community Editionは小〜中規模のサイトを対象としているため、個人〜小規模な組織が運用することを想定しています。
そのため、標準状態では管理者の権限をウェブサイトやストアビュー単位で制限する機能は備わっていません。
(商用のエクステンションを導入することで解決は可能です)

Enterprise Editionは中〜大規模なサイトを対象としているため、ある程度職務分掌が進んでいる組織が運用することを想定しています。
ですから標準状態で管理者の権限をウェブサイトやストアビュー単位で制限することができるほか、本番環境内にテストサイトを用意する、ステージングサイト機能を持っています。

ですが、両方に共通して言えるのは、「1つの組織が運用することを想定している」ということです。
決して、ショッピングモールのような複数の組織が入り混じった運用を想定しているわけではありません。 

サイトが増えていくとどうなるか

Magentoでサイトまたはストアビューを1つ増やすと、以下のデータが増えていきます。

  • 商品属性データ
  • カテゴリ属性データ
  • URL書換データ

本来ストアビューは言語を切り替えるために使用するものなので、ストアビューを増やし、言語固有のデータを設定していくとその分だけデータが増えていきます。

また、商品やカテゴリのフラットデータ(商品データやカテゴリが多い場合に使用するMagentoの高速化機能)を使用している場合には、ストアビュー単位でこれらのデータを格納するためのテーブルが、データベース上に増えていきます。

また、URL書き換えデータも同様に増えていきます。

そうしてサイトが増えれば増えるほどMagentoのデータベースは巨大化していき、インデックスの更新にかかる時間もどんどんと伸びていきます。

サイトが増えても変わらないものがある

サイトやストアビューが増えていくと、Magentoの商品やカテゴリのデータが増え、それに伴いストアビューごとの区分けがなされていきます。
会員データや注文データもウェブサイトやストアビューの単位で区切られていくため、一見するとこれらの仕組みと管理者権限をウェブサイト単位で区切ることができさえすれば、Magentoをショッピングモールのように運用することができるように見えてきます。
ですが、実際にはそうはいかないのです。

たとえ商品データや顧客、注文データなどをウェブサイトやストアビュー単位で区切ることができたとしても、

  • キャッシュ
  • インデックス
  • 商品番号(SKU)
  • 商品属性のコード

といったデータはシステム全体で管理されているものなので、ウェブサイトやストアビュー単位で切り分けることができません。
また、システム設定と商品属性の一部、及び商品属性のパラメータの一部はシステム全体で共有されていることに注意が必要です。

これらの要素がサイトが増えていけばいくほどに相互の都合を考えながら運用をしていかなければならなくなるため、利害関係が対立するようなショッピングモール的な運用は難しいと考えるのが妥当であると言えます。

ちなみに私はMagentoの開発者が集うDevelopers Paradiseで、Magento, Inc.の開発者が1つのMagentoインストールでショッピングモール的な運用をした実例を見せてもらったことがあります。
その例では前述のとおりインデックスの問題だけでなく、パフォーマンスの面でも問題があると言われていました。
つまり、Magentoをショッピングモール的に利用することはかなり大変である、ということになります。 

結論

  • マルチサイトとショッピングモールは根本的に異なる
  • Magentoではマルチサイトはできるが、ショッピングモールはできない
  • その理由は運用するサイト数が増えても管理範囲を分離できないデータが存在するため
  • ステークホルダーが増えれば増えるほど運用の調整は難しくなっていく
  • Magentoでショッピングモール運用は難しいか、基本的には無理