Varnish Cache: mayor rendimiento para páginas web dinámicas

A medida que aumentan la complejidad y el número de visitas de las páginas dinámicas, su rendimiento puede verse afectado. Para disminuir la carga del servidor y contrarrestar la pérdida de velocidad, es posible implementar un proxy inverso (reverse proxy) que se encargue de responder a las solicitudes del servidor. Este se encarga de almacenar en caché el material solicitado, que es, por lo general, contenido estático como imágenes y resultados de búsquedas frecuentes en las webs dinámicas. Varnish es un software muy popular de almacenamiento en caché. A diferencia de muchos de sus competidores, este software libre se desarrolló, inicialmente, como un acelerador web. Para poder utilizar Varnish Cache es necesario que el servidor cuente con un sistema operativo Unix y tenga suficientes permisos root para su instalación. 

Así funciona Varnish Cache

El servidor donde se encuentra el contenido de la página web inicia Varnish directamente como un proxy inverso. Cuando un usuario visita la web, la solicitud es procesada inicialmente por el servidor original, mientras que el Varnish almacena la solicitud y los contenidos. Así, cuando el servidor recibe una solicitud parecida, los datos serán cargados directamente desde Varnish Cache. En otras palabras: el software almacena todos los datos en caché y le permite al sistema operativo elegir aquellos que almacenará permanentemente en el disco duro del servidor. Esto impide que los datos sean almacenados en caché y en el disco duro al mismo tiempo.

Varnish también cumple funciones de balanceador de carga. Con la ayuda del algoritmo de planificación round robin, las solicitudes entrantes del cliente se tratarán como subprocesos de trabajo (hilos) para ser manejados posteriormente por Varnish Cache. Un límite fijo determina el número de hilos concurrentes que pueden ser procesados y, de ser alcanzado, Varnish pondrá todas las solicitudes posteriores en espera. Cuando las solicitudes en espera exceden el límite, se bloquearán todas las conexiones entrantes.

La configuración de Varnish como proxy inverso se controla principalmente a través del Varnish Configuration Language (VCL). Este lenguaje de gestión de peticiones permite escribir hooks (interfaces) que facilitan la integración de código extraño en la aplicación. Al cargar un script en VCL, este se traduce al lenguaje de programación C y es compilado en una librería del programa. Estas rutinas VCL se vinculan posteriormente al caché de Varnish. Si el gestor de contenidos, el sistema eCommerce o la aplicación web utilizada interpretan el lenguaje de marcado ESI (Edge Side Includes), Varnish ofrece la posibilidad de almacenar páginas completas. El lenguaje de marcado genera las llamadas etiquetas ESI en los archivos HTML, distinguiendo así el contenido dinámico. Con esto, cada vez que el cliente realiza una solicitud, Varnish Cache reconoce las etiquetas y carga el contenido apropiado.

Las ventajas y desventajas de Varnish Cache

La optimización del alojamiento web propio con Varnish Cache puede resultar de gran utilidad frente a un aumento de su complejidad y del número de visitantes de la web. Sin embargo, la implementación del software no es recomendada para todo tipo de proyectos web. Para tener una mejor visión en conjunto, hemos resumido los pros y los contras de Varnish:

Ventajas:Desventajas:
✔ Velocidad de carga más rápida gracias al almacenamiento de contenidos en la memoria✘ Para aquellos sistemas que no interpretan ESI, Varnish Cache no ofrece ninguna posibilidad de optimización
✔ Balance de carga en el servidor ✘ Aumento de la complejidad y la susceptibilidad a errores
✔ Lenguaje de marcado Edge Side Includes✘ No hay soporte para TLS/SSL, es decir, para HTTPS
✔ El sistema operativo almacena contenidos en el disco duro del servidor✘ Complejos procesos de instalación y configuración. Requiere experiencia
✔ Balanceo de carga con el método round robin✘ Solo para sistemas operativos Unix
✔ Opciones flexibles de configuración gracias a VCL

La anterior comparación evidencia que Varnish Cache es el complemento adecuado para las funciones de almacenamiento en caché ya existentes (en clientes y servidores web) cuando se trabaja con una aplicación web que permite interpretar el lenguaje de marcado ESI. Por otro lado, la instalación y configuración de Varnish Cache, incluyendo las etiquetas ESI, no es sencilla. Además, debido a que Varnish no admite conexiones TLS/SSL, es necesario utilizar otro servidor proxy para garantizar una transmisión segura.

Aquellos proyectos en los que se configure Varnish Cache correctamente, así como sus etiquetas ESI, acelerarán su velocidad de carga mucho más que utilizando métodos convencionales de almacenamiento en caché. En consecuencia, este software reducirá en gran medida el tiempo de carga para tus visitantes, lo que a largo plazo significará una tasa de conversión significativamente mayor. De la misma forma, te beneficiarás automáticamente de un mejor ranking en los motores de búsqueda y de una reducción de la carga de tu servidor web, que ya no será el único responsable del procesamiento de las conexiones entrantes. En particular, Varnish Cache es un programa utilizado en su gran mayoría por operadores de tiendas online y páginas web dinámicas con una gran variedad de contenido.

Instalación de Varnish Cache

Para instalar Varnish Cache, es necesario contar con permisos administrativos del respectivo sistema Unix. Además, este debe haber sido instalado previamente en el servidor web que lo utilizará. En el tutorial que mostramos a continuación encuentras los pasos necesarios para instalar y configurar Varnish. En este ejemplo se utiliza Ubuntu como sistema operativo y Apache como servidor web:

1. Varnish está incluido, por defecto, en el paquete de software de Ubuntu, pero no necesariamente su versión más reciente. Es por esto que, durante su instalación, Varnish permite acceder a su propio directorio online. Introduciendo el código a continuación podrás abrir el directorio y utilizarlo como código fuente:

sudo apt-get install apt-transport-https
sudo curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
sudo echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.1" >> /etc/apt/sources.list.d/varnish-cache.list 

2. A continuación, se deberán leer las listas del paquete e instalar Varnish

sudo apt-get update
sudo apt-get install varnish

3. Ahora es el momento de configurar el archivo de Varnish para que el software sepa dónde encontrar el contenido de la web. Para ello es necesario abrir el siguiente archivo:

sudo nano /etc/default/varnish

Aquí deberás cambiar los valores para “DAEMON_OPTS” como se muestra a continuación:

DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"

4. Guarda los cambios y abre el archivo default.vlc: 

sudo nano /etc/varnish/default.vlc

Especifica el puerto 8080 como fuente para el contenido cubierto por Varnish:

backend default {
.host = "127.0.0.1";
.port = "8080";
}

5. Por último, especifica el puerto de Apache en 8080 (configurado por defecto en 80). Para ello, puedes abrir el fichero de configuración del puerto de Apache:

sudo nano /etc/apache2/ports.conf

Cambia el número de puerto para las entradas “NameVirtualHost” y “Listen”

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

6. Ajusta el archivo predeterminado (etc/apache2/sites-available/default) de la misma forma que la entrada VirtualHost.

7.  A continuación, reinicia Varnish y el servidor para finalizar la instalación y la configuración:

sudo service apache2 restart
sudo service varnish restart

Si necesitas instrucciones adicionales para la instalación de Varnish en otros sistemas operativos Unix o buscas el código de programa de este software, dirígete a la sección de descargas de su página web oficial varnish-cache.org.