Publicada en

¿Qué se necesita para escalar WooCommerce?

Scale-WooCommerce

Una de las preguntas más comunes que se escuchan sobre WordPress y eCommerce gira en torno a la noción de WooCommerce y su escalabilidad. ¿Se puede escalar WooCommerce? Mi respuesta siempre es sí, WooCommerce es escalable.

Pero nunca es tan simple como eso, ¿verdad?

Puede pensar que con esta respuesta sólo se está siendo amable, esperanzado o simplemente no se tiene suficiente experiencia para saber si WooCommerce puede manejar una gran cantidad de tráfico.

Viendo WooCommerce en perspectiva desde hace unos años, la escalabilidad ha sido un objetivo continuado. En un momento dado, ver una tienda que obtuviera miles de visitas a la hora, la convertía en una referencia a considerar al hablar sobre la escalabilidad. Después, la cosa fue girando hacia millones de órdenes concurrentes. Y, finalmente, hacia finales de 2015 se consideraban algunos requisitos de escala realmente desproporcionados.

Pero para entrar en el tema, primero hay que definir algunos términos.

¿Cómo se define “escalabilidad” o “escalable”?

Podemos definir la escalabilidad de una tienda WooCommerce como la propiedad deseable de este sistema que indica su habilidad para manejar el crecimiento continuo de trabajo de manera fluida sin perder calidad en los servicios ofrecidos. Típicamente estamos hablando de crecimiento según una métrica concreta, como el número de productos que se ofrecen al cliente, en el número de pedidos que se registran en el sitio, o en las búsquedas en el motor de búsquedas de la tienda.

Como el concepto escalabilidad está asociado a una métrica, escalabilidad puede significar un montón de cosas diferentes para diferentes personas.scale software

Algunas personas hablarán de escala en el mundo de las páginas vistas. Cuántas páginas vistas por día (o por hora) están ocurriendo en un sitio de WooCommerce. La verdad es que, con el tipo correcto de estrategias de almacenamiento en caché, esta es una métrica que no nos ayudará mucho cuando se trata de escala. A menos que no pueda almacenar en caché las partes que forman sus páginas, los recuentos de vistas de página no son un gran indicador de escala.

Otros utilizarán los ingresos por día como una métrica de escala. Por desgracia, esto termina siendo una comparación de manzanas con naranjas, porque los ingresos de los sitios que venden papel de lija a 0,40 euros por hoja y las tiendas que venden bolsos por 300 euros cada uno no se puede comparar realmente.

Afinamos un poco más cuando hablamos de volumen de pedidos. Pero el problema con los pedidos es que los usuarios pueden comenzar un pedido y luego dejar el sitio (abandonar el carro). Y eso significa que ese pedido no se contará en su evaluación de esa métrica. Por eso la mayoría de la gente, cuando están hablando de pedidos, están hablando de pedidos cerrados.

Entonces, ¿Qué métrica utilizo (y recomiendo)?

El número de eventos “añadir al carro” por hora (o por minuto). Esto pone a todos los sitios en pie de igualdad. Desafortunadamente, esta no es una métrica que aparece directamente del sistema de informes de WooCommerce. Tendrá que hacer un poco de trabajo para capturar y monitorizar esta métrica. Pero creo que es la mejor manera de evaluar el comportamiento de un sitio, al mismo tiempo que se analiza la correlación entre tráfico y volumen de pedidos.

Una vez que tenga la métrica correcta, puede empezar tomando datos en la situación actual del negocio, y a continuación determinar qué tipo de acciones debe acometer y en qué áreas del negocio, para llegar a donde quiere estar, es decir, para lograr el valor deseado de la métrica elegida.

 

¿Qué áreas hay que escalar?scale-areas

Navegación posterior a la compra

Uno de los errores más comunes que la gente comete con su sitio de WooCommerce es creer que después de que una orden se completa, la gente saldrá del sitio. Es un error común, porque a todos nos gusta pensar en transacciones. Así que usted va a la tienda, hacer su compra y luego sale.

Pero algunas personas terminan su compra y pueden quedarse, navegando todavía por la tienda. Sólo que esta vez, están todavía logueados. Y eso significa que no hay nada en caché. Y cada clic y página que visitan están haciendo llamadas a su base de datos. El problema aquí es que estas llamadas a la base de datos consumen recursos del servidor, que por tanto no se pueden dedicar a atender páginas pedidas por nuevos clientes.

Así que lo primero que hay que mirar (eso es realmente simple) es asegurarse de que después de que una orden es completa, usted redirige al cliente, para que puedan navegar por la tienda pre-almacenada en caché sin causar problemas de escala.

Estrategias de almacenamiento en caché para páginas y menús de categorías

Debido a que es un sitio de comercio electrónico, muchos desarrolladores simplemente se saltan el almacenamiento en caché todo en conjunto. No quieren preocuparse de que puedan configurar de forma incorrecta algo como Varnish. Así que al final, no hay nada en caché, y ese es otro error. Una gran parte del sitio todavía puede beneficiarse directamente de una perspectiva de almacenamiento en caché.

Gran parte del catálogo se puede almacenar en caché y sólo es necesario actualizar las cosas si alguien hace un cambio en la definición de un producto. Y en lugar de usar WooCommerce para crear las páginas de las categorías, puede crear las páginas que desee y guardarlas en caché; así eliminará más consultas a la base de datos. Y si hablamos de poner en caché y limitar las consulta a la base de datos, mire sus menús y vea cuántos de ellos necesitan ser dinámicos.escalabilidad-capas

La tabla Postmeta

Cada orden que se graba en su base de datos escribe todos los datos del pedido en la tabla postmeta. Esta tabla se hace grande rápidamente y el número de consultas se hace grande también. Una cosa que podría considerar es interceptar los pedidos y escribirlos en una sola fila de varias columnas. Pero si ese tipo de cambio le asusta (y entiendo por qué lo haría), también podría considerar hacer un cambio en la tabla y en la base de datos que ayude a que los índices funcionen mejor. ¡Esto puede tener un impacto inmediato!

Puede leer más sobre cómo mejorar el rendimiento de las consultas a la tabla postmeta.

La página “Mi Cuenta”

A menudo hemos encontrado la página “Mi Cuenta” como un lugar donde pueden producirse un montón de optimizaciones de rendimiento. Piense en ello por un segundo: los clientes vienen aquí para comprobar detalles acerca de sus pedidos, pero las llamadas a la base de datos están preguntando todo, es decir, todos sus datos históricos. Y eso está pasando mientras otros clientes tratan de terminar sus pedidos.

Estas conclusiones se han extraído trabajando sobre estas llamadas a la base de datos y limitando su alcance, lo que se traduce en una reducción significativa en los retrasos de accesos a la base de datos, y en una mejora inmediata de escalabilidad.

Cambiar completamente el motor de base de datos

¿Qué pasaría si usted pudiera cambiar por completo la forma en que las consultas a la base de datos se ejecutan? ¿Y si pudiera hacer todo más rápido? ¿Y con un solo cambio? Eso sería casi demasiado bueno para ser verdad, ¿cierto? Bueno, tiene razón, nunca es una sola cosa. Pero incorporando el motor ElasticSearch a su tienda WooCommerce y derivándole un cierto número de consultas podría proporcionar enormes beneficios.

 ¿Escalar WooCommerce requieren un montón de código personalizado?

El problema no está en la cantidad de código personalizado que pueda ser necesario. El verdadero problema para conseguir que su sitio WooCommerce escale correctamente es la experiencia. Si nunca lo ha hecho, probablemente no sabe cómo hacerlo. De hecho, ni siquiera sabe qué buscar. Así que mientras tanto, puede que necesite un poco de código, pero probablemente necesitará también algunos recursos especializados y asesoría personalizada.

Conclusión

Esto es lo que he aprendido: no sólo es una cosa.

Escalar WooCommerce es un montón de pequeños ajustes según la métrica elegida.