Vivimos en una época en la que Internet domina las comunicaciones y casi las relaciones entre personas, y si tenemos un pequeño...
Fastly, la CDN basada en varnish
macklusYou can also read this entry in english by clicking here.
Una CDN (o red de distribución de contenidos ) es una red de computadores dedicada a distribuir los contenidos de sus clientes. Al tener las CDN servidores en muchas localizaciones distintas, siempre sirven a los clientes desde el servidor más cercano, siendo así más rápido que hacerlo de la forma normal.
Además, la CDN es capaz de guardar el contenido durante el tiempo que nosotros queramos, lo que nos permite reducir la carga de nuestros servidores, ya que no es necesario generar todo el contenido con cada nueva petición.
Alguna de las soluciones CDN más conocidas son:
- CloudFlare: de mayor uso, por su servicio gratuito para sitios pequeños.
- CloudFront: la CDN de AWS, muy fácil de configurar.
- Akamai: La CDN premium, para proyectos grandes y de alto coste.
Si bien cada CDN tiene características que les distingue de las demás, en general el funcionamiento (e incluso la forma de trabajo) es muy similar entre ellas, por lo que elegir una u otra dependerá de las características del proyecto que vayamos a implementar.
Aunque no es la más conocida, Fastly es una de las CDN más potentes con la que he podido trabajar. Si bien puede ser muy compleja de configurar (dependiendo de lo que queramos hacer) la flexibilidad y potencia que nos ofrece la convierte en una opción muy profesional a la hora de llevar a cabo proyectos a cualquier escala.
Las características de Fastly
Las principales características de Fastly son:
- Red bien extendida de servidores: que garantiza una respuesta muy rápida, sobre todo en la zona de América Latina.
- Versionado de configuración: Para ver de forma clara los cambios entre versiones, pasar de una a otra en segundos, etc.
- Purgado en tiempo real: La eliminación de un elemento de la caché es automático y casi instantáneo.
- Soporte ESI (Edge Side Includes): Para separar nuestra web en «trozos» lógicos y actualizar la caché solo de aquellos trozos que cambien.
- Compresión brotli y gzip: Para reducir la transferencia y aumentar la velocidad de carga.
- Configuración basada en VCL (Varnish Configuration Language): Si hemos usado Varnish antes es muy sencillo pasar a Fastly.
- Funciones extendidas de VCL: Para simplificar la configuración, con soporte de fechas, regex, etc.
- Estadísticas en tiempo real: peticiones, cobertura de caché, peticiones, errores, etc.
- Caché configurable de contenidos: Podemos definir los tiempos de caché de nuestra CDN a nuestro gusto (por objeto, url, tipo, tag, etc)
- Diccionarios y ACLs dinámicas: Para variar en tiempo real quien puede acceder o qué condición debemos aplicar.
- Flujo de logs: Fastly envía de forma dinámica los logs de nuestras visitas al proveedor que indiquemos, como S3, loggly, Azure, Google Cloud, etc
- Optimizaciones para vídeo e imágenes: Para optimizar la presentación de imágenes y vídeos en tiempo real.
Si bien para mi la principal características de Fastly es su configuración con VCL, que permite que cualquier persona que conozca Varnish pueda pasar a usar Fastly sin problemas, además de muchas otras ventajas como usar un lenguaje autoexplicativo, sencillo de leer y entender, potente, que simplifica el uso de configuraciones y condiciones casi ilimitadas y que permite gestionar todos los puntos de la petición de forma muy simple.
El lado malo de Fastly
Aunque Fastly es un producto muy potente, también tiene características que podemos considerar como negativas, como por ejemplo:
- El coste del servicio SSL: Tanto si quieres usar tu propio certificado, como si quieres usar el compartido propio de Fastly, los precios parten de 100$, lo que para un sitio pequeño es un coste que puede ser mayor al de la propia caché, aunque podemos reducirlo usando Certificados SAN
- La barrera de entrada: Si no tenemos conocimientos del formato de configuración VCL, debemos aprender a manejar ésta sintáxis para poder manejar nuestra CDN
- El coste del soporte: Aunque la comunidad es rápida y eficaz, el coste de su servicio de soporte profesional es muy elevado, lo que de nuevo supone una barrera de entrada para proyectos de tamaño medio o pequeño.
El lado más potente de Fastly
La auténtica potencia de Fastly se observa cuando programamos un sitio con soporte ESI, y un tiempo de caché ilimitado. ESI es un sistema de etiquetas que nos permite dividir una página web en distintas partes (por ejemplo encabezado, menú, pie, contenido, menú derecho, etc). Cada uno de esos trozos puede llevar un tiempo de caché distinto, y podemos eliminar de la caché solo el trozo que hayamos cambiado.
Es decir, si solo cambiamos el contenido de un menú lateral, no tiene sentido volver a generar y enviar todo el contenido de nuevo, sino solo el contenido que ha cambiado. Fastly es capaz de gestionar tanto ESI (dividir la web en trozos) como los tiempos de caché (el tiempo que guarda un trozo antes de volver a pedirlo al servidor), y solo nos va a pedir aquellos contenidos que han caducado o han ido cambiando, por lo que la carga contra el servidor es muy baja.
A modo de ejemplo, actualmente gestiono un medio online con Fastly que sirve más de 2 millones y medio de páginas, de una aplicación muy pesada, con solo 1 servidor frontal, que sirve entre 10 y 20 peticiones por minuto, aunque desde la CDN se estén sirviendo más de 1000 peticiones por minuto. Como además el purgado de Fastly es casi inmediato, podemos mantener una caché infinita e ir avisando a Fastly de los elementos que han cambiado, para que los refresque de nuevo. El coste total de tráfico y peticiones en la CDN no supera los 100$, que para un proyecto empresarial es un coste totalmente aceptable.
Si queréis probar esta CDN, podéis registraros y usar gratis hasta 50$ para ver su funcionamiento.