Madrid
listas@juanquijano.es

Wordpress, almacenar las imágenes en Azure Blob

Static Content Hosting Pattern

Sabes de eso que estás tan tranquilo y te pones cómodo en el sillón dispuesto a escribir un bonito artículo sobre un interesante tema que compartir con tus lectores… y descubres que tu blog (otra vez) ha perdido decenas de imágenes.

Sabes de eso que te bajas todos los ángeles del cielo e invocas a todos los demonios interiores que te acompañan en el subconsciente al ser la tercera o cuarta vez que te ocurre, revelándose inútil cada una de las mediadas tomadas, ante las horas de reconstrucción que te esperan.

Pues eso me pasó este fin de semana y encontré la solución.

Un escurridizo efecto colateral

Mi primera aproximación fue volver a echarle las culpas al plugin JetPack –que me ofrece estadísticas e integración con capacidades de WordPress.com– y a su sistema de aceleración de la descarga de las imágenes; que es un conjunto de compresión y CDN’s propios.

Pero, me llevé la sorpresa de que ya estaba deshabilitado a la espera de la última actualización del CMS.

La segunda fue entrar por KUDU a la WebApp y observar horrorizado que las carpetas de imágenes de septiembre y octubre estaban vacías… y esto me puso en la pista del problema!

En algunas ocasiones, en mis clases de formación sobre Azure, le enseño las capacidades de escalado vertical a mis alumnos con este Website. Es decir, es una S1, pero la aumento temporalmente a P1 y la bajo a B1.

Y aquí el problema: el App Plan Standard S1 tiene un almacenamiento de 50Gb, mientras que el Basic 1 solamente de 10Gb.

Al principio del blog solo tenía unas pocas imágenes, pero ya llevo unos cuantos añitos añadiendo material y he superado el almacenamiento disponible en el tamaño pequeño. Así, al escoger la B1, la WebAp me hacía un truncate de las últimas imágenes y yo entraba en desesperación.

Almacenando las imágenes en una Storage Account

La solución era obvia cuando pienso en una arquitectura Cloud. Olvidarme de almacenar las imágenes en el servidor de aplicaciones y hacerlo de la forma más correcta; almacenar las imágenes en una Storage Account.

Pero el problema vino al constatar que iba a ser complejo picarme el PHP de WordPress para hacer eso. Incluso me pensé seriamente en abandonar este CMS y migrar hacia un website estático.

Por suerte no soy ni el primero ni el último con este problema, y todo se solucionó con un Plugin llamado: Microsoft Azure Storage for WordPress.

Descargarlo e instalarlo es cosa de coser y cantar. A continuación me voy al portal y creo una nueva cuenta de almacenamiento V2, en donde he creado un contenedor de tipo Blob.

Luego la configuración, como se observa a continuación, es muy sencilla. Le digo el nombre de la Storage Account; le paso la clave de acceso (por esto he creado una SG específica); le indico cual es el contenedor en donde almacenar las imágenes como Blob; configuro que por defecto todas las imágenes subidas a WordPress se almacenen en Azure; y, por último, que no me guarde las imágenes en local para no volver a quedarme sin espacio y que me borre material.

Pantalla de configuración del Plugin para WordPress

A partir de ese momento, cada vez que subo una imagen a la librería de WordPress, puedo observar como me la guarda en mi cuenta de almacenamiento. Es más, este excelente plugin me almacena cuatro versiones diferentes de mis gráficos, de dimensiones óptimas según el medio.

Espera, no te vayas aún.

Si bien el guardar las imágenes como un blob me va a bajar los costes de manera directa, además de evitar que se vuelvan a perder imágenes dada la abrumadora SLA de las SA, todavía lo puedo hacer aún mejor si utilizo las capacidades de gestión del ciclo de vida de las cuentas de almacenamiento.

Storage Account Livecycle ManagmentStorage Account Livecycle Managment

Así, como verás, he creado una nueva regla que le indica a la cuenta de almacenamiento que me cambie el tipo de acceso de Hot a Cool cuando haya pasado un día desde la última modificación de la imagen/blob, ahorrando más del 50% en el coste mensual.

Por último y como resultado, como bien dice el patrón arquitectónico, también he incrementado la velocidad de mi Blog al separar el servidor de las páginas del servidor de las imágenes, siendo las cuentas de almacenamiento especialmente rápidas y mucho más eficientes que una Web App.

Espero que esto sea de ayuda (especialmente a mi colega Ransino que me ha sido el promotor de este artículo).

Tags:

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: