Montando WordPress


en cluster

Alejandro Fernández


15+ años de experiencia en desarrollo

Consultor de Escalabilidad

Cacharreador Impenitente

El planteamiento


Full Circle


Cliente importante


El dinero no es problema


Quiere la seguridad de poder escalar

Demasiado tráfico


Un servidor WordPress: 4~8 peticiones/segundo (rps)


Total acumulado: 350k~700k peticiones/día


Con picos de tráfico: 100k~300k visitas/día


(Cuidádor: el factor puede variar)

La solución



Típica arquitectura de aplicación web

¿Problemas?


Uploads


Administración por HTTPS


Plugins


Base de datos


Fuente: WordPress ProTips

Uploads


Ficheros subidos a un único servidor

(directorio wp-content/uploads)


Hay que distribuirlos a todos


Usamos Amazon S3:

W3 Total Caché


Mejor rendimiento

Administración por HTTPS


Directorio wp-admin

Protegido por contraseña


No es suficiente limitarlo:

wp-admin/admin-ajax.php

wp-admin/images/


¿Cómo abrirlos?

HAProxy


Un proxy inverso muy extendido


Permite filtrar el tráfico


Reglas complejas


Otros trucos

Plugins


Algunos plugins no son compatibles con cluster


¿Cuáles? Difícil saber a priori


Deshabilitarlos uno a uno


Actualizar WordPress

Base de datos


Amazon RDS con MySQL


Cluster de servidores


Reescalado automático


Provisión de ops

Balanceador


Amazon ELB


Servidor principal


Grupo de autoescalado


Crea servidores cuando hace falta

y los destruye cuando ya no

Despliegues


No basta con subir el código a un servidor


¡Ahora hay varios!


Subida sincronizada


Servidor central

Despliegue distribuido


Pelín complejo...

Pero ¿es Realmente Necesario?


Usa una caché


W3 Total Cache

Cacheo de páginas


Pasamos a 180 peticiones/segundo

sin despeinarnos (60% CPU)


2~5 millones de visitas al día

Conclusiones


Maneja varias estrategias para varios escenarios


No te compliques demasiado la vida


Haz pruebas de carga


Verifica todo

¡Gracias!

Y ahora...

https://slides.com/alexfernandez/wordpress-cluster