Hace ya más de 6 años, cuando empecé a jugar con Microsoft Azure una de las cosas que más me maravilló fue una regla de oro que siempre llevo conmigo «el cloud computing te obliga a desarrollar bien» y eso es algo que me enamoró. Hoy quiero contarte una característica en App Service que te permite que tu aplicación vuele, siempre y cuando la hayas desarrollado bien 🙂
Como muchos otros servicios de la plataforma, App Service se apoya en Azure Storage para almacenar el contenido de tu aplicación, haciendo que el mismo obtenga respaldo de manera automática (3 réplicas del contenido en el datacenter). Sin embargo, esto supone que haya una capa extra entre la máquina que está actuando como servidor y el código que tiene que servir, lo cual añade una latencia adicional por la comunicación entre estos dos componetes. Sin embargo, tienes la opción de habilitar una caché local en el servidor web que da servicio al usuario, con el objetivo de eliminar esta capa intermedia entre el servidor web y donde se encuentra el código almacenado. Aquí viene la parte que marcaba al principio, «el cloud computing te obliga a desarrollar bien», ya que solo debes utilizarlo si cumples con lo siguiente:
- Tu aplicación no puede escribir nada en disco: si tu aplicación tiene una arquitectura distribuida no tendrás problemas (la información se almacena en base de datos, la monitorización se delega en otro servicio, etcétera).
- El código fuente debe ocupar menos de 1GB.
Si cumples estos dos requisitos, te recomiendo que habilites esta característica inmediatamente, ya que elimina un posible factor de reinicio o fallo en tus aplicaciones, además de la latencia que convella la comunicación con otros servicios. Para habilitarlo, basta con añadir en las App Settings la clave WEBSITE_LOCAL_CACHE_OPTION y como valor Always.

Cada vez que se cambia algún valor en App Settings esto fuerza un reinicio del sitio. Una vez que termine de realizar la copia en caché sucederá un segundo reseteo y, de forma transparente para ti, el servidor web apuntará a dicha copia local en lugar de Azure Storage, haciendo que el contenido esté más cerca de la máquina que lo va a servir. Si necesitaras almacenar contenido de forma temporal en la nueva ubicación podrías hacerlo, pero debes de tener en cuenta que el mismo no será persistido y se descartará en el siguiente reinicio o nuevo despliegue.
Por defecto, el tamaño de la caché está fijado en 300MB pero es posible ampliarlo a través del app setting WEBSITE_LOCAL_CACHE_SIZEINMB con un máximo de 1024.
¡Saludos!