¿Tu blog WordPress está experimentando un crecimiento explosivo en tráfico? ¡Nada mal! Pero con el éxito vienen nuevos desafíos. Cuando tu blog alcanza las 100.000 visitas diarias, es hora de subir el nivel en términos de rendimiento e infraestructura si quieres estabilidad.
Aunque es poco probable pasar de golpe a 100.000 visitas diarias, es posible que estés experimentando un crecimiento constante de tráfico y te estés dando cuenta de que es hora de hacer cambios en tu arquitectura. O quizás tengas una marca famosa y estés a punto de estrenar un blog con un alto volumen de tráfico esperado desde el primer día. En cualquier caso, es crucial asegurarse de que tu configuración pueda manejar la carga.
No te preocupes, no necesitas ser un gurú de la tecnología para manejar este tipo de tráfico. Con las estrategias adecuadas, puedes hacer que tu blog vuele incluso con 100.000 visitantes al día. Vamos a ello
Alta disponibilidad: Porque a nadie le gustan los blogs caídos 😴
Con 100.000 visitas al día, los minutos de inactividad pueden ser devastadores. Imagina 100.000 personas tratando de acceder a tu blog y viendo una página de error. Ups.
La solución es implementar una arquitectura de alta disponibilidad. Esto significa tener múltiples servidores configurados de manera que si uno decide tomarse un descanso, otro puede intervenir y salvar el día. Cada servicio estará alojado en su propia máquina, con todos los recursos dedicados a ese servicio.
Tienes varias opciones; puedes acudir a tu Cloud público de confianza y lanzar tantas instancias virtuales como necesites y llevar su gestión, alquilar el hardware dedicado y virtualizarlo a tu gusto y, de nuevo, llevar su gestión, o acudir a un especialista en cloud computing que aplica todos los consejos de este post (y algunos más) y que gestione la infraestructura por ti para que no tengas que preocuparte más que de tu negocio.
Que bien vendría tener un proveedor de confianza a golpe de clic desde este blog 😉
Balanceo de carga: Cómo distribuir esas peticiones🏋🏼♂️
El primer paso en tu aventura para el uptime perfecto, es tener un balanceador de carga. Es básicamente el controlador de tráfico de tu sitio web, distribuyendo inteligentemente a los visitantes entre tus servidores.
Algunas grandes opciones de código abierto para el balanceo de carga incluyen:
– HAProxy: Un balanceador de carga de alto rendimiento que puede distribuir el tráfico TCP y HTTP. Es super rápido y se puede configurar para manejar cientos de miles de solicitudes por segundo.
– Nginx: Aunque es más conocido como un servidor web, Nginx también puede funcionar como un eficaz balanceador de carga. Puede distribuir el tráfico usando varios algoritmos y es conocido por su bajo uso de recursos. No es tan avanzado como HAProxy, pero dependiendo de tus necesidades, puede ser una opción más simple si se quiere mantener menos servicios.
– Apache con mod_proxy: Aunque Apache no es tan eficiente como Nginx y ha perdido cierta popularidad, todavía tiene su público para ciertos casos de uso y puede manejar el balanceo de carga con mod_proxy.
Un balanceador sabrá dónde envía el tráfico en todo momento, comprobando periódicamente la salud de tus servidores backend y enviará visitantes solo a los que están en plena forma.
Una vez implementes una solución de balanceo delante de todo, podrás empezar a configurar servidores web, tantos como necesite tu aplicación, pero, ¿Cuántos necesitas realmente?
Servidor Web: La base de tu blog 🏗️
La elección de tu servidor web puede tener un gran impacto en el rendimiento de tu blog WordPress. Aquí es donde recomendamos sin duda alguna Nginx.
Nginx es conocido por su rendimiento rápido y bajo consumo de recursos en comparación con Apache. Puede manejar un gran número de conexiones concurrentes sin sudar, lo que lo hace ideal para sitios de alto tráfico.
Además de su rendimiento estelar, Nginx ofrece funciones útiles como el almacenamiento en caché de contenido estático, la capacidad de actuar como proxy inverso y un robusto soporte para SSL/TLS, aunque probablemente delegaras estas funciones a otras tecnologías como verás en este post.
Configurar Nginx con WordPress es relativamente sencillo gracias a la amplia disponibilidad de guías y ejemplos de configuración, y junto a php-fpm, es un combo mejor que el 3×1 de tu pizzería de confianza.
Por supuesto, Apache sigue siendo una opción viable, especialmente si ya estás familiarizado con él. Pero si estás buscando exprimir cada ciclo de cpu de tu servidor, Nginx es definitivamente el camino a seguir.
En cuanto al número de servidores web que añadir a tu balanceador, cuando hablamos de un tráfico tan elevado, lo cierto es que cuantos más servidores eches al asador, más relativa tranquilidad tendrás y tus instancias echarán menos humo. No obstante, un buen setup que se precie tendrá por delante un CDN y un servicio de cache adecuados, por lo qué, bajo las circunstancias correctas, dos servidores de nginx puede llevar a servir un número muy elevado de páginas por segundo, pero si quieres ir a lo seguro, un mínimo de 4 servidores debería ser más que correcto si se tiene un buen sistema de cache por delante y tu blog no sirve mucho contenido dinámico.
Sin embargo, si tienes un comercio con tu WordPress, el número de servidores necesarios se incrementa en docenas, ya que no es lo mismo servir contenido estático que dinámico y necesitarás toda la potencia que puedas conseguir.
Caché y CDN: Haciendo que las cosas vuelen ✈️
Cuando se trata de manejar mucho tráfico, la caché es tu mejor amigo. En vez de generar cada página una y otra vez, con todas las llamadas a la base de datos y a tus ficheros que eso conlleva, has almacenado una copia del contenido en una memoria de rápido acceso, como es la memoria RAM (valga la redundancia) y servido ésta a cada persona que quiere ver el mismo contenido. Eso sí que es eficiencia.
Antes de mirar plugins de WordPress que generan la caché en ficheros del disco duro, se debe acudir a soluciones robustas de caché como Redis y Memcached. Estos son almacenes de datos en memoria extremadamente rápidos que pueden almacenar resultados de consultas de base de datos, objetos de WordPress y más. Muchos plugins de caché de WordPress pueden integrarse con Redis o Memcached, dándote lo mejor de ambos mundos y evitándote tener que configurar estas aplicaciones a bajo nivel.
Pero tu viaje por la caché no acaba aquí: si realmente quieres llevar las cosas al extremo y servir tanto tráfico como mosquitos en verano, debes usar Varnish. Varnish almacena en caché páginas completas. Puede servir páginas almacenadas en caché sin siquiera llegar a WordPress, lo que lo hace extremadamente rápido. Todo tu contenido estático se verá beneficiado por varnish y servirás páginas completas sin esfuerzo alguno.
Por otra parte, el uso de una CDN es más que recomendado. Una CDN (red de distribución de contenido, por sus siglas en inglés) coge tu contenido estático (como imágenes, CSS, JS) y lo almacena en caché en servidores por todo el mundo. Cuando un usuario solicita una página, estos assets se sirven desde el servidor más cercano a su ubicación, reduciendo drásticamente los tiempos de carga.
La CDN por excelencia, Cloudflare, ofrece integraciones fáciles de usar con WordPress, de manera gratuita, y encima te da otros beneficios básicos como mitigación de ataques DDoS (denegación de servicio) y un WAF (firewall a nivel de aplicaciones). Al implementar una CDN, no solo estás ayudando a servir tu página de manera más rápida, si no que estás mitigando tráfico malicioso, a la vez que le quitas carga a tu servidor. ¿Mola, no?
Ficheros de WordPress dinámicos: Manteniendo todo en sincronía 🔄
WordPress tiene algunos ficheros que le gusta cambiar, como las subidas de medios, plugins y temas. Por defecto, estos viven en cada uno de tus servidores web. Pero cuando tienes múltiples servidores, esto se convierte rápidamente en un juego de “¿quién tiene la última versión?“.
La solución es centralizar el almacenamiento de estos ficheros cambiantes, de manera que aunque el código de tu aplicación –en este caso WordPress– se repita en cada servidor web, el contenido dinámico solo exista en un único lugar común a todos estos servidores. Algunas opciones de código abierto para esto incluyen:
– GlusterFS o Ceph: Estos son sistemas de archivos distribuidos que pueden escalar a varios petabytes. Requieren de una mayor configuración y mantenimiento que otras alternativas, pero son robustos.
– NFS: El bueno y viejo NFS. Puedes tener un servidor NFS central que aloje tus archivos dinámicos, y montar ese sistema de archivos en cada uno de tus servidores web sin mayor dificultad. Dependiendo del proveedor que hayas escogido para tu arquitectura web, crear un NFS e instalarlo puede ser cuestión de minutos.
Hay plugins de WordPress que hacen que configurar estas cosas sea pan comido, así que no te preocupes demasiado por los detalles técnicos.
Versionado de código: El poder de git⚡
A medida que tu blog crece, mantener el control de tu código personalizado y configuraciones se vuelve súper importante. No quieres estar en una situación donde no estés seguro de qué versión está ejecutándose en cada servidor, o tener que arreglar a mano un fallo en el código en una veintena de servidores.
La solución es usar un sistema de control de versiones como Git. Es básicamente como tener una máquina del tiempo para tu código. Puedes rastrear cada cambio, revertir si algo sale mal y desplegar fácilmente nuevas versiones a todos tus servidores.
Si has llegado a tener un blog de 100.000 visitas diarias sin usar ningún tipo de control de versiones, ¡Enhorabuena!, pero da la vuelta 😜
Como extra, para la gestión de la configuración de tus distintos servidores, herramientas como Ansible y Chef te permiten definir con código como deberían configurarse tus servidores (cosas como qué software instalar, qué ajustes usar, que versionado, etc) y aplicar todos los cambios en tus servidores a la vez.
Imágenes y vídeos: el enemigo secreto del rendimiento🕵️
Las imágenes y videos pueden ralentizar tu sitio si no tienes cuidado, y pueden afectar a tu posicionamiento SEO gravemente. A nadie le gusta (y menos a Google) que una página tarde 20 segundos en cargar por esas imágenes de 2MB incrustadas y el video carrusel con tu logo de 30MB. Es hora de optimizar el mp4 que tanto tiempo has estado currándote en el Premier y le enseñaste con orgullo a tu madre (y te dijo “bueno, bien, si a ti te gusta..” ) .
Aquí tienes algunos consejos:
– Usa formatos modernos como WebP, JPEG XL y WebM. Estos ofrecen una mejor compresión que JPEG o PNG y los formatos de video de toda la vida. Sin embargo, verifica la compatibilidad del navegador, ya que no todos soportan los formatos más nuevos.
– Comprime tus imágenes, pero no tanto que la calidad se degrade notablemente.
– Sirve imágenes en el tamaño adecuado para cada uso. No uses imágenes enormes redimensionadas.
Plugins como Smush, ShortPixel e Imagify pueden optimizar tus imágenes automáticamente a medida que las subes. Incluso pueden hacer cosas inteligentes como “lazy loading“, donde las imágenes solo se cargan cuando son necesarias.
Monitoreo del rendimiento: Manteniéndose al tanto 📈
Por último, pero no menos importante, necesitas mantener un ojo en el rendimiento de tu blog. Herramientas de código abierto como Zabbix, Nagios o Prometheus pueden ayudarte a monitorizar cosas como los tiempos de carga, el uso de recursos del servidor y cualquier cuello de botella potencial.
Configura alertas para que te avisen si las cosas se ponen feas. Por ejemplo, si estás usando Redis para el almacenamiento en caché y ves un alto número de “flushes” de claves, podría indicar un problema de falta de memoria o de configuración.
Revisa regularmente tus métricas para identificar áreas de mejora.
También es buena idea usar herramientas de análisis de velocidad y rendimiento de vez en cuando. Servicios como Google PageSpeed Insights pueden darte una visión general de cómo se desempeña tu sitio, identificando áreas a mejorar por tiempos de carga, la optimización de imágenes o la minificación de CSS/JS.
Para un análisis aún más profundo, considera herramientas como New Relic. Estas potentes plataformas pueden monitorizar cada aspecto de tu aplicación, desde el rendimiento del servidor, las consultas de base de datos e incluso las interacciones del frontend. Pueden trazar cada solicitud a medida que viaja a través de tu sistema, ayudándote a identificar cuellos de botella y puntos problemáticos.
Con este tipo de métricas, puedes mantener tu blog funcionando de manera óptima y brindar la mejor experiencia posible a tus visitantes.
TL;DR
Manejar 100.000 visitas diarias es un gran logro, pero viene con sus desafíos. Una arquitectura distribuida y con las herramientas opensource adecuadas, puede llevarte muy lejos.
Con la configuración y optimización adecuadas, tu blog WordPress puede manejar altas cantidades de tráfico; ya sea que estés experimentando un crecimiento gradual o esperando un gran lanzamiento, implementa estas estrategias y prepárate para llevar tu blog al siguiente nivel.
Y si el desafío de cambiar tu infraestructura no es algo a lo que quieras enfrentarte, siempre puedes optar por los servicios gestionados de una compañía de cloud computing con años de experiencia, cough cough 😉.