Magento2.4では、機能面の改良・追加だけでなく以下の2点について変更が行われています。

  • Elasticsearchの必須化
  • Webインストール機能の廃止

導入コストや、インストールの難易度がこれらの変更によって起こりますので、これからMagentoを使ってみようという方は十分注意が必要です。
今回はこれらの変更点について解説したいと思います。

Elasticsearchの必須化

最初はElasticsearchの必須化です。
Magento2.4 beta ついに登場」で取り上げましたが、Magento2.4ではElasticsearchが必須になりました。
もともとMagentoの検索機能は、MySQLのLike検索から始まり、MySQLの全文検索、Apache Solr(Enterprise Editionのみ)という形で進化してきました。
Magento2系ではMySQLの全文検索が標準で、Elasticsearchは利用できたものの、あくまでも任意で利用するものでした。

これが2.4ではMySQLによる全文検索が廃止され、Elasticsearchのみに一本化されたわけです。

MySQLの全文検索の長所と短所

Magento2.4で廃止されたMySQLの全文検索ですが、長所も短所もありました。
それぞれ整理してみましょう。

長所

これは一言で表現するならば「サーバー維持費が安く済む」ということでしょう。

MagentoはMySQLをデータベースとして使用するため、すべてのMagentoベースのサイトではMySQLを何らかの形で稼働させています。
Webサーバーと同居させているサイトもあるでしょうし、別のサーバーで動かしているサイトもあるでしょう。
オンプレミスのCommerceの場合では、読み取り専用のサーバーを用意し、データベースの負荷を分散させているかもしれません。
いずれの形態であっても、「追加でサーバーが必要になる」ということではありません。

また、検索処理自体はMySQLに対するものなので、一般的なSQLを使用しています。MySQL固有の構文はありますが、どのような検索を行っているかについては比較的簡単にログに取り出して調べることができます。

これがMySQLを使う長所です。

短所

短所はいくつかあります。大きなものとしては、

  • 検索に使用するデータの作成コストが高い
  • 検索キーワードに対する検索処理の調整がし難い
  • 検索時にデータベースに対する負荷が常に発生する

というものがあるでしょう。また、日本語や中国語向けについては、検索キーワードに対するヒット率があまり良くないこともありました。
(Elasticsearchにした場合でも、日本語向けはチューニングが別途必要です)

小規模サイトであればほとんど気にならない問題ですが、大規模サイトやサイト内検索に頼るサイトにとっては深刻な問題になることがありました。

Elasticsearchの長所と短所

さて、Magento2.4で標準化されたElasticsearchですが、こちらにも当然長所と短所があります。
それぞれ整理してみましょう。

長所

長所ですが、

  • 検索に使用するインデックスの調整ができる
  • 検索キーワードに対する調整ができる
  • Elasticsearch単体での水平分散ができる
  • 言語別の最適化ができる

といったところでしょうか。
全文検索エンジンならではの機能をフルに活用することによって、MySQLよりも質の高い検索機能が提供できます。
また、水平分散が容易にできるため、より多くの検索処理を捌くことができます。

短所

そして短所ですが、

  • 別途専用のサーバーが必要
  • 検索結果に対する検証がやや面倒
  • 検索インデックスの調整には専門知識が必要
  • 日本語や中国語向けにはさらに踏み込んだ調整が必要

といった点があります。

2番目以降の点については、標準機能に不満がなければ特に問題にしなくても構いませんが、1番目はサイトの維持コストに直接のしかかってきます。
Magento2系全体を通して言えることではありますが、Magento自体が中〜大規模サイトをターゲットにしている余波だと考えれば合点がいきます。

Magento2.3以前からアップデートする際に気をつけるべきこと

Elasticsearchが必須化されたことによって、Magento2.3以前からのアップデートの際には注意が必要になりました。
事前にElasticsearchが動いているサーバーを用意してからアップデートを行っていただきたいわけですが、2.3系の場合は今でもElasticsearchを利用可能です。
できれば2.4系にアップデートする前にElasticsearchに切り替えておくことを強くおすすめします。

もし、Magento Open Source 2.2系より前のバージョンから移行される場合は、一旦2.3系にあげてからのほうが良いかもしれません。
一足飛びには対応するPHPバージョンの関係でアップデートができないはずなので、2.3系で経過観察をしてからのほうが無難です。

Webインストール機能の廃止

多くのWebアプリケーションでは、ブラウザからアプリケーション自体をインストールできる機能が用意されています。
Magentoにも初期バージョンから一貫してブラウザ経由のインストール機能が用意されてきました。

Magento2.4ではこの部分にも変更が加えられ、以下の2つの機能が廃止されました。

  • Magento自体のWebインストール機能の廃止
  • Magento管理画面からのエクステンションインストール・アップデート機能の廃止

Webインストール機能の廃止

未インストール状態のMagento2.4系を配置した環境にブラウザ経由でアクセスをすると、次のような表示が現れます。

インストール画面

例はGithub版なのでバージョン番号がセットされていませんが、2.4系の開発ブランチを使用しています。
このように2.4系の場合はWebブラウザ経由でのインストールはできなくなっています。

Magentoをインストールしたい場合は、サーバーに対してリモートアクセスし、インストールコマンドを実行する必要があります。
非エンジニアの方に対しては、Magentoのインストールが難しくなってしまう側面がありますが、コマンドでインストールするほうがブラウザ経由よりも確実で速いのが実情です。
実際、開発者界隈では「コマンドでしかインストールしない」という人のほうが多いようです。

エクステンションインストール・アップデート機能の廃止

Webインストール機能に付属していた機能ではありますが、エクステンションのインストール・アップデートなどもブラウザ経由ではできなくなっています。
Magento2.4以降では、

  • composerコマンドで配布サイトからパッケージを取得・配置する
  • app/codeなどの所定のディレクトリにソースコードを配置する

というやり方でエクステンションのコードを配置することになります。
配置後、

  1. bin/magento module:enable エクステンション名
  2. bin/magento setup:upgrade
  3. bin/magento setup:di:compile (* productionモードのみ)
  4. bin/magento setup:static-content:deploy 言語コード (* productionモードのみ)

という手順でエクステンションを有効化する必要があります。

開発者にとっては日常的に行う操作ではありますが、2.3系まででブラウザ経由からエクステンションをインストール・アップデートしてきた方にとっては使いにくくなるかもしれません。

Webインストール機能の廃止が意味するもの

Webインストール機能が廃止されたことによって、開発者ではないサイト管理者がエクステンションを自由にインストールできなくなりました。
つまり、サイトに新しい機能を追加したい場合、

  1. 管理者が開発者に相談する
  2. 開発者が新機能を開発、もしくは既存のエクステンションを導入する
  3. 動作検証を開発者と管理者で行う
  4. 開発者が本番環境に適用する

という流れになります。
サイトのメンテナンスを外注している場合や、自社内に開発者を抱えている場合であれば珍しくない流れですが、そうでない場合は煩雑かもしれません。
どうしても今のMagentoは中〜大規模サイト向けに軸足を置いているので、「きちんと動作検証をする」ことを運用の手順に入れようとします。
(システム運用的には当たり前なのですが・・・)

まとめ

Magento2.4では以下の点が変わりました。

  • Elasticsearchが必須項目になった。
  • 2.3以前からのアップデート時には注意が必要。できれば2.3のうちにElasticsearch利用に切り替えよう。
  • Webインストール機能が廃止された。
  • セットアップやエクステンションの導入・廃止は開発者に依頼しよう。

繰り返しになりますが、現在のMagentoは中〜大規模サイト向けです。
それなりの維持費がかかるプラットフォームであることを認識して導入する必要があることに注意してください。