エンタープライズ検索による大量のWooCommerceショップのスケーリング

公開: 2022-04-06

ささやき声が聞こえました。 「WordPressやWooCommerceのようなコマースソリューションは、製品カタログが豊富な大量のメガストア向けに構築されたものではありません。」

しかし、その現実または単に時代遅れの認識は注意を払う価値がありませんか?

後者だと思います。 急速に革新し、顧客の時間とお金を節約し、WooCommerceのような使いやすいコマースソリューションを大規模に(たとえば、 100万個の在庫のある製品で)解き放ちたいコマースブランドの鍵は、エンタープライズサーチを介して開発されました。 WordPressVIPによる。

これを証明するために、WordPress VIPラボで課題に取り組み、複数の言語、カテゴリ、および数十の属性にわたる在庫を持つ大量のWooCommerceショップを設計およびストレステストしました。 私たちが学んだことをチェックしてください。

大量のWooCommerceストアの課題

私たちの経験から、MySQLデータベースに入るデータが多いほど、それを検索するのは難しくなります。 確かに、100万を超える製品のカタログを表示し、顧客が簡単にナビゲートできるようにすることは、深刻な課題です。

まず、WooCommerceの内部メソッドを使用して、実際のeコマースストアに似た十分な分類法と用語の関係を持つ製品を生成することにしました。

役に立ったパッケージの1つは、WooCommerceSmoothGeneratorでした。 これにより、スケーラブルなWordPress VIP Cronアーキテクチャを利用できるようになり、WooCommerce製品の生成を10倍に加速することができました。 朗報:たった48時間で、大量のデータと100万個の製品をテストできるストアができました。


技術的なヒント:最初のインポートプロセスを迅速に保つために、用語の再カウントプロセスを無効にし、最終段階でのみ再度実行しました。

 add_filter('woocommerce_product_recount_terms', '__return_false');

このテストでは、最新のWooCommerce(バージョン6.1.1)とデフォルトのStorefrontテーマを使用しました。

フロントエンドを評価すると、ページのレンダリングに大きな遅延があることに気付き始めました。MySQLの遅いクエリが根本的な原因でした。 影響を受けた主な領域は次のとおりです。

  • 製品検索製品検索
  • カテゴリ製品リストページ
  • フィルタリングされた検索

エンタープライズサーチに入る—速く、簡単、安全

これらの問題にスケーラブルな方法で対処するには、最新の製品の1つであるエンタープライズサーチが不可欠であることは明らかでした。 コードやデータベーススキーマを大幅に変更することなく、大量のWooCommerceストア機能に役立つことがわかりました。

まず、いくつかの背景:エンタープライズサーチは、エンタープライズ顧客のニーズに合わせてゼロから設計されました。 データベースやサイトのボリューム規模としても、非常に高速です。 Elasticsearch上に構築されており、何百万ものコンテンツにわたってさえ、正確でほぼ瞬時の結果を提供します。

外部サービスを必要とせずにVIPCloudと直接統合されているため、Enterprise Searchは新しいコンテンツのインデックスをすぐに作成し、最新の最も関連性の高い結果をすばやく表示します。

エンタープライズ検索を有効にし、所有している製品データに対して初期インデックスを実行して、データベースのデータを水平方向に保存できるようにしました。


技術的なヒント:エンタープライズ検索の有効化は次のように簡単です。

 define( 'VIP_ENABLE_VIP_SEARCH', true ); // Enables Enterprise Search. define( 'VIP_ENABLE_VIP_SEARCH_QUERY_INTEGRATION', true ); // Integrates search queries with Enterprise Search.

クエリをエンタープライズサーチにオフロードすることで負荷を軽減

WP_Queryをエンタープライズサーチにオフロードできることを知って、サイトのフロントエンドで見つかった遅いMySQLクエリに基本的なes => trueを注入できる適切なフィルターのチェックを開始しました。 データベースにクエリを実行する代わりに、各クエリの結果は、高速API呼び出しを使用してエンタープライズ検索エンジンからフェッチされます。

この方法を使用すると、商品検索、カテゴリ商品リストページ、およびフィルター検索の応答時間が10倍向上しました。 はい、10倍です!

WP_Queryに関連する製品フロントエンドクエリがエンタープライズサーチにオフロードされた方法のサンプルコードは次のとおりです。

 add_action( 'pre_get_posts', 'offload_query_to_ES' ); function offload_query_to_ES( $query ) { // Avoid unintentional query offloading for backend queries. if ( is_admin() ) { return; } if ( ! $query->is_main_query() ) { return; } if( 'product' !== $query->get( 'post_type' ) ) { return; } // Offloading query to Enterprise Search. $query->set( 'es', true ); }

その結果、短時間で達成され、高速でスケーラブルな大量のWooCommerceサイトが実現しました。これは、既存のVIPクラウドアーキテクチャと組み合わせることで、大量のトラフィックを処理できるようになりました。

さらに、高価なMySQLクエリをエンタープライズ検索にオフロードすることでWooCommerceバックエンドの速度も向上し、ショップオーナーのエクスペリエンスがより最適化されました。


技術的なヒント:エンタープライズ検索に送信されるすべてのクエリは、次のフィルターを使用してJSON ElasticSearchクエリDSLに変換されるため、完全にカスタマイズ可能です。

 ep_pre_request_args

注文処理で大きくなる

テストの次のステップは、大量の注文と関連する顧客データを生成することでした。

上記と同様の手順を使用して、最大100万件の注文と関連する顧客データを作成することができました。

テスト中に、最適化のほとんどが低速のMySQLバックエンドクエリに関連していることがわかりました。 これもまた、より高価なクエリをエンタープライズサーチにオフロードし、関連データのインデックスを作成することを意味しました。

注:WooCommerceの注文は、カスタム投稿タイプとしてWooCommerceに保存されるため、エンタープライズ検索で許可されている投稿タイプにカスタム投稿ステータスとともに登録する必要があります。 サンプルコードは以下のとおりです。

 // The `shop_order` post type is not public, so we need to add this to get them to index. add_filter( 'ep_indexable_post_types', function( $post_types ) { $post_types['shop_order'] = 'shop_order'; return $post_types; } ); // Adding the custom order statuses to the index. add_filter( 'ep_indexable_post_status', function( $statuses ) { return array_merge( $statuses, array_keys(wc_get_order_statuses()) ); });

余談ですが、WooCommerceチームは、関連データをより速く、よりスケーラブルな方法でクエリできるように、新しいカスタム注文テーブルの導入に取り組んでいます。 これは、エンタープライズサーチがeコマースアプリケーションのスケーラビリティとパフォーマンスを向上させ続けるのに役立ちます。

多言語オプションといえば…

大量の多言語eコマースサイトをセットアップする際に適切に拡張できるアプローチの1つは、WordPressネットワークインストール内に個別のサイトを作成し、それぞれを個別にエンタープライズ検索に接続できるようにすることです。

たとえば、WPVIPテクノロジーパートナーであるInpsydeは、大量のサイトで無制限の数の言語をサポートする同様のネットワーク設定の作成を容易にするMultilingualPressプラグインを提供しています。

ただし、これにより、サイト間での在庫の同期に関連する課題が発生します。 これに対処するための複数のソリューションが存在します。これには、同じくInpsydeのWooCommerceプラグインのCentralStockが含まれます。

チェックアウト時の最後の言葉

Enterprise Searchは、より高価なMySQLクエリをオフロードするだけでなく、検索用語のあいまいさ、類義語、均等化などの新しい検索機能も提供します。これにより、大量のWooCommerceストア検索をさらに効率的にすることができます。

エンタープライズサーチが大好きだと言えますか? 率直に言って、これはビジネスのスケーラビリティを向上させ、開発と実装に関連するコストを削減し、新しいeコマースの実装への道を開くための真のソリューションです。

既存のWordPressVIPとWooCommerceの顧客は、大量のeコマースの限界を成功裏に押し上げています。 よりスケーラブルな未来へ!

著者

Ovidiu Liuta、プレミアエンジニア、WordPress VIP