Escalar una tienda WooCommerce de gran volumen con Enterprise Search

Publicado: 2022-04-06

Hemos oído los susurros. "WordPress y las soluciones de comercio como WooCommerce simplemente no se crearon para megatiendas de gran volumen con catálogos de productos extensos".

Pero, ¿no vale la pena prestar atención a esa realidad o simplemente a una percepción obsoleta?

Creemos que es esto último. La clave para las marcas comerciales que desean innovar rápidamente, ahorrar tiempo y dinero a los clientes y desbloquear soluciones comerciales fáciles de usar como WooCommerce a escala (digamos, 1 millón de productos en stock ) es a través de Enterprise Search, desarrollado por WordPress VIP.

Para probar esto, asumimos el desafío en el laboratorio VIP de WordPress, diseñamos y realizamos pruebas de estrés de una tienda WooCommerce de gran volumen con existencias en varios idiomas, categorías y docenas de atributos. Mira lo que aprendimos.

Desafíos de la tienda WooCommerce de alto volumen

Según nuestra experiencia, cuantos más datos ingresan en una base de datos MySQL, más difícil se vuelve buscarlos. Sin duda, mostrar un catálogo de más de 1 millón de productos y facilitar la navegación de los clientes es un gran desafío.

Para comenzar, decidimos hacer uso de los métodos internos de WooCommerce para generar productos con suficientes taxonomías y relaciones de términos para parecerse a una tienda de comercio electrónico real.

Un paquete que ayudó fue WooCommerce Smooth Generator. Nos permitió hacer uso de la arquitectura escalable de WordPress VIP Cron, lo que nos ayudó a acelerar diez veces la generación de productos de WooCommerce. Buenas noticias: en solo 48 horas, teníamos una tienda con un gran volumen de datos, y ese millón de productos, para probar.


Sugerencia técnica: para que el proceso de importación inicial sea rápido, inhabilitamos el proceso de recuento de términos y solo lo volvimos a ejecutar en la etapa final:

 add_filter('woocommerce_product_recount_terms', '__return_false');

Para esta prueba, usamos el último WooCommerce (versión 6.1.1) y el tema Storefront predeterminado.

Al evaluar la interfaz, comenzamos a notar grandes retrasos en la representación de las páginas: las consultas lentas de MySQL eran la causa principal. Las principales áreas afectadas estuvieron relacionadas con:

  • búsqueda de productos búsqueda de productos
  • Páginas de lista de productos de categoría
  • búsqueda filtrada

Ingrese a Enterprise Search: rápido, fácil y seguro

Estaba claro que uno de nuestros productos más nuevos, Enterprise Search, sería esencial para abordar estos problemas de manera escalable. Descubrimos que ayudó a que nuestra tienda WooCommerce de alto volumen funcionara sin cambios importantes en el código o el esquema de la base de datos.

Primero, algunos antecedentes: Enterprise Search se diseñó desde cero para las necesidades de los clientes empresariales. Es ultrarrápido, incluso a medida que escala el volumen de la base de datos y del sitio. Basado en Elasticsearch, brinda resultados precisos y casi instantáneos incluso en millones de piezas de contenido.

Debido a que está directamente integrado con VIP Cloud sin necesidad de servicios externos, Enterprise Search indexa inmediatamente nuevas piezas de contenido, mostrando rápidamente los resultados más recientes y relevantes.

Habilitamos Enterprise Search y ejecutamos un índice inicial en los datos de productos que teníamos, lo que nos permitió almacenar horizontalmente los datos de nuestra base de datos.


Consejo técnico: Habilitar Enterprise Search es tan simple como:

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

Aligerar la carga mediante la descarga de consultas a Enterprise Search

Sabiendo que cualquier WP_Query se puede descargar a Enterprise Search, comenzamos a buscar filtros apropiados que nos permitieran inyectar el es => true básico a las consultas lentas de MySQL que se encuentran en la interfaz del sitio. En lugar de consultar la base de datos, el resultado de cada consulta se obtiene del motor de búsqueda empresarial mediante una llamada API rápida.

Con este método, el tiempo de respuesta para la búsqueda de productos, las páginas de lista de productos de categoría y la búsqueda filtrada mejoró diez veces. ¡Sí, 10x!

A continuación se muestra un código de muestra sobre cómo se descargaron las consultas de la interfaz del producto relacionadas con WP_Query a Enterprise Search:

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

El resultado, logrado en poco tiempo, fue un sitio WooCommerce rápido y escalable de alto volumen que, en combinación con la arquitectura VIP Cloud existente, le permitió manejar grandes cantidades de tráfico.

Además, la velocidad de back-end de WooCommerce también se mejoró mediante la descarga de costosas consultas de MySQL a Enterprise Search, lo que permitió una experiencia más optimizada para los propietarios de tiendas.


Sugerencia técnica: todas las consultas enviadas a Enterprise Search son totalmente personalizables, ya que se traducen a JSON ElasticSearch Query DSL mediante el siguiente filtro:

 ep_pre_request_args

Ir a lo grande en el procesamiento de pedidos

Nuestro siguiente paso en las pruebas fue generar un gran volumen de pedidos y datos de clientes relacionados.

Con pasos similares a los indicados anteriormente, logramos crear ~1 millón de pedidos y datos de clientes relacionados.

Durante nuestras pruebas, encontramos que la mayoría de las optimizaciones estaban relacionadas con consultas de back-end de MySQL lentas. Esto significó, nuevamente, descargar consultas más costosas a Enterprise Search e indexar datos relacionados.

Nota: los pedidos de WooCommerce se almacenan como un tipo de publicación personalizada en WooCommerce, por lo que deben registrarse en los tipos de publicación permitidos de Enterprise Search junto con sus estados de publicación personalizados. El código de muestra está a continuación:

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

Además, el equipo de WooCommerce está trabajando para introducir una nueva tabla de pedidos personalizados para ayudar a consultar datos relacionados de forma más rápida y escalable. Esto ayudará a Enterprise Search a seguir aumentando la escalabilidad y el rendimiento de una aplicación de comercio electrónico.

Hablando de opciones multilingües…

Un enfoque que escala bien durante la configuración de un sitio de comercio electrónico multilingüe de gran volumen es crear sitios separados dentro de una instalación de red de WordPress y permitir que cada uno se conecte por separado a Enterprise Search.

Inpsyde, un socio tecnológico de WPVIP, por ejemplo, ofrece un complemento MultilingualPress que facilita la creación de una configuración de red similar que admita una cantidad ilimitada de idiomas en sitios de gran volumen.

Sin embargo, esto crea desafíos relacionados con la sincronización de existencias entre sitios. Existen múltiples soluciones para abordar esto, incluido un complemento de Stock central para WooCommerce, también de Inpsyde.

Una última palabra al finalizar la compra

Además de descargar consultas MySQL más costosas, Enterprise Search también ofrece una nueva funcionalidad de búsqueda, que incluye términos de búsqueda confusos, sinónimos y ponderación, que pueden ayudar a que una búsqueda de tienda WooCommerce de gran volumen sea aún más eficiente.

¿Se da cuenta de que nos encanta la búsqueda empresarial? Francamente, es una solución real para aumentar la escalabilidad de su negocio, reducir los costos relacionados con el tiempo de desarrollo e implementación y abrir el camino a nuevas implementaciones de comercio electrónico.

Ya estamos viendo que los clientes existentes de WordPress VIP y WooCommerce superan con éxito y de manera rentable los límites del comercio electrónico de gran volumen. ¡Por un futuro más escalable!

Autor

Ovidiu Liuta, ingeniero principal, VIP de WordPress