Dimensionando uma loja WooCommerce de alto volume com a pesquisa corporativa

Publicados: 2022-04-06

Ouvimos os sussurros. “WordPress e soluções de comércio como WooCommerce simplesmente não foram construídas para megalojas de alto volume com catálogos de produtos profundos.”

Mas essa realidade ou apenas uma percepção ultrapassada não vale a pena prestar atenção?

Acreditamos que seja o último. A chave para marcas de comércio que desejam inovar rapidamente, economizar tempo e dinheiro dos clientes e desbloquear soluções de comércio fáceis de usar como WooCommerce em escala - digamos, escala de 1 milhão de produtos em estoque - é via Enterprise Search, desenvolvida por WordPress VIP.

Para provar isso, aceitamos o desafio no laboratório VIP do WordPress, projetando e testando uma loja WooCommerce de alto volume com estoque em vários idiomas, categorias e dezenas de atributos. Confira o que aprendemos.

Desafios da loja WooCommerce de alto volume

Pela nossa experiência, quanto mais dados entram em um banco de dados MySQL, mais difícil se torna procurá-los. Certamente, exibir um catálogo de mais de 1 milhão de produtos – e facilitar a navegação dos clientes – é um sério desafio.

Para começar, decidimos usar os métodos internos do WooCommerce para gerar produtos com taxonomias e relacionamentos de termos suficientes para se assemelhar a uma loja de comércio eletrônico real.

Um pacote que ajudou foi o WooCommerce Smooth Generator. Ele nos permitiu usar a arquitetura escalável do WordPress VIP Cron, que nos ajudou a acelerar dez vezes a geração de produtos WooCommerce. Boas notícias: em apenas 48 horas, tínhamos uma loja com dados de alto volume – e esses 1 milhão de produtos – para testar.


Dica técnica: para manter o processo de importação inicial rápido, desativamos o processo de recontagem de termos e só o executamos novamente no estágio final:

 add_filter('woocommerce_product_recount_terms', '__return_false');

Para este teste, usamos o WooCommerce mais recente (versão 6.1.1) e o tema Storefront padrão.

Avaliando o frontend, começamos a notar grandes atrasos na renderização de páginas — as consultas lentas do MySQL eram a causa principal. As principais áreas afetadas foram relacionadas a:

  • Pesquisa de produtos Pesquisa de produtos
  • Páginas de listagem de produtos da categoria
  • Pesquisa filtrada

Entre no Enterprise Search—rápido, fácil, seguro

Ficou claro que um de nossos produtos mais recentes, o Enterprise Search, seria essencial para resolver esses problemas de maneira escalável. Descobrimos que isso ajudou nossa loja WooCommerce de alto volume a funcionar sem grandes alterações de código ou esquema de banco de dados.

Primeiro, alguns antecedentes: o Enterprise Search foi projetado desde o início para as necessidades dos clientes corporativos. É extremamente rápido, mesmo com escala de volume de banco de dados e site. Construído no Elasticsearch, ele fornece resultados precisos e quase instantâneos, mesmo em milhões de conteúdos.

Por estar diretamente integrado ao VIP Cloud sem a necessidade de serviços externos, o Enterprise Search indexa imediatamente novos conteúdos, apresentando rapidamente os resultados mais recentes e relevantes.

Habilitamos o Enterprise Search e executamos um índice inicial nos dados do produto que tínhamos, permitindo-nos armazenar horizontalmente os dados do nosso banco de dados.


Dica técnica: habilitar o Enterprise Search é tão simples quanto:

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

Aliviando a carga ao descarregar consultas para o Enterprise Search

Sabendo que qualquer WP_Query pode ser descarregada para o Enterprise Search, começamos a verificar os filtros apropriados que nos permitiam injetar o básico es => true nas consultas MySQL lentas encontradas no frontend do site. Em vez de consultar o banco de dados, o resultado de cada consulta é obtido no mecanismo do Enterprise Search usando uma chamada rápida de API.

Usando esse método, o tempo de resposta para pesquisa de produtos, páginas de listagem de produtos de categoria e pesquisa filtrada melhorou dez vezes. Sim, 10x!

O código de exemplo de como as consultas de front-end do produto relacionadas a WP_Query foram transferidas para o Enterprise Search está abaixo:

 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 ); }

O resultado, alcançado em pouco tempo, foi um site WooCommerce rápido e escalável de alto volume, que, em combinação com a arquitetura VIP Cloud existente, permitiu lidar com grandes quantidades de tráfego.

Além disso, a velocidade do back-end do WooCommerce também foi aprimorada ao descarregar consultas MySQL caras para o Enterprise Search, permitindo uma experiência mais otimizada para os donos de lojas.


Dica técnica: todas as consultas enviadas ao Enterprise Search são totalmente personalizáveis, pois são traduzidas para JSON ElasticSearch Query DSL usando o seguinte filtro:

 ep_pre_request_args

Indo grande no processamento de pedidos

Nosso próximo passo no teste foi gerar um alto volume de pedidos e dados de clientes relacionados.

Usando etapas semelhantes às observadas acima, conseguimos criar cerca de 1 milhão de pedidos e dados de clientes relacionados.

Durante nossos testes, descobrimos que a maioria das otimizações estava relacionada a consultas de back-end lentas do MySQL. Isso significou, novamente, descarregar consultas mais caras para o Enterprise Search e indexar dados relacionados.

Nota: Os pedidos do WooCommerce são armazenados como um tipo de postagem personalizado no WooCommerce, portanto, eles precisam ser registrados nos tipos de postagem permitidos do Enterprise Search junto com seus status de postagem personalizados. O código de exemplo está abaixo:

 // 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()) ); });

Além disso, a equipe do WooCommerce está trabalhando para apresentar uma nova tabela de pedidos personalizados para ajudar a consultar dados relacionados mais rapidamente e de maneira mais escalável. Isso ajudará o Enterprise Search a continuar aumentando a escalabilidade e o desempenho de um aplicativo de comércio eletrônico.

Falando em opções multilíngues…

Uma abordagem que se adapta bem durante a configuração de um site de comércio eletrônico multilíngue de alto volume é criar sites separados em uma instalação de rede do WordPress e permitir que cada um seja conectado separadamente ao Enterprise Search.

A Inpsyde, uma parceira de tecnologia WPVIP, por exemplo, oferece um plugin MultilingualPress que facilita a criação de uma configuração de rede semelhante que suporta um número ilimitado de idiomas em sites de alto volume.

No entanto, isso cria desafios relacionados à sincronização de estoque entre sites. Existem várias soluções para resolver isso, incluindo um plugin Central Stock for WooCommerce, também da Inpsyde.

Uma palavra final no checkout

Além de descarregar consultas MySQL mais caras, o Enterprise Search também oferece novas funcionalidades de pesquisa - incluindo termos de pesquisa imprecisos, sinônimos e ponderação - que podem ajudar a tornar uma pesquisa de alto volume na loja WooCommerce ainda mais eficiente.

Você pode dizer que adoramos o Enterprise Search? Francamente, é uma solução real para aumentar a escalabilidade do seu negócio, reduzindo custos relacionados ao tempo de desenvolvimento e implementação e abrindo caminho para novas implementações de comércio eletrônico.

Já estamos vendo clientes existentes do WordPress VIP e WooCommerce ultrapassando com sucesso e lucrativamente os limites do comércio eletrônico de alto volume. Aqui está um futuro mais escalável!

Autor

Ovidiu Liuta, Engenheiro Premier, WordPress VIP