- Servir archivos estáticos utilizando Cloud Run - 1
- Entrada de blog sobre cómo usar Google Cloud Run para servir archivos estáticos. Se centra en la redirección y la mejora del rendimiento.
Texto traducido por IA.
Resumen de la publicación por la IA de durumis
- Hemos construido un sistema CDN que vincula Google Cloud Storage (GCS) y Cloud Run para administrar de manera eficiente imágenes y recursos web, y proporcionar archivos optimizados para el entorno del navegador web.
- Las imágenes cargadas se convierten y almacenan en varios formatos como webp y avif, y los archivos de texto se comprimen con gzip, br, etc., para ofrecer a los usuarios contenido optimizado.
- Hemos implementado Cloud Storage y Cloud Run en 8 regiones de todo el mundo para entregar recursos desde la región más cercana a la ubicación del usuario, minimizando la latencia y mejorando la experiencia del usuario
Entrada anteriorexplicó la parte relacionada con el servicio de archivos estáticos utilizando Cloud Run que durumis está utilizando.
Sin embargo, a diferencia de archivos como robots.txt o favicon.ico, los archivos de imagen que se publican en el blog o los recursos de la propia página web no se pueden tratar simplemente como archivos estáticos.
Por lo tanto, estos archivos deben utilizarse con Cloud Run vinculado a Google Cloud Storage (en adelante, GCS).
El concepto básico es simple. Los archivos de imagen que se cargan en tiempo real o los nuevos recursos que se cargan cuando se actualiza el sitio se cargan en GCS, y cuando se recibe una solicitud desde el exterior, Cloud Run verifica si hay un archivo en GCS y, si lo hay, lo transmite.
Sin embargo, la forma en que realmente funciona es mucho más compleja que eso.
Cuando se carga una imagen en GCS, durumis la convierte básicamente en tres formatos.
Cuando se carga un archivo jpeg o png, la imagen se convierte automáticamente a webp y avif y se guarda simultáneamente.
Todos los archivos de imagen se solicitan mediante una URL sin extensión, y cuando se realiza una solicitud, Cloud Run comprueba el encabezado del navegador web que solicita y comprueba si el navegador web puede recibir avif o webp en ese orden. Si no puede recibir ninguno de los dos archivos, se envía en formato jpeg o png. Además, no solo se cambia el formato, sino que también se redimensiona y se almacena/transmite de antemano según el tamaño necesario para la página web.
Diagrama
Lo mismo ocurre con los archivos de texto.
Muchos de los recursos que necesita un sitio web son imágenes, pero también archivos de texto como js y css.
Los archivos js y css también se comprimen con gzip y br al cargarlos, de forma similar a las imágenes, y se transmite el archivo que admite el navegador web al realizar una solicitud.
El papel de la CDN no se limita simplemente a almacenar en caché el contenido. En el caso de Google Cloud Platform (GCP), la función Cloud CDN se puede conectar directamente a Google Cloud Load Balancer (GCLB), lo que proporciona una funcionalidad aún más potente.
Cloud CDN recibe datos del Backend Service, los almacena y los transmite al cliente. Durante este proceso, Cloud CDN puede transmitir el archivo optimizado según el encabezado de solicitud del cliente. Esto permite proporcionar contenido en varios formatos para la misma URL.
Por ejemplo, para la misma URL '/image/tempImage'
- En el caso de los archivos de imagen
- Se transmite un archivo de imagen de un formato diferente según el encabezado 'Accept' del navegador.
- El navegador Chrome generalmente muestra la preferencia en el orden 'image/avif,image/webp,image/apng'.
- CDN proporciona el formato de imagen posible en este orden, y si no es compatible, lo reemplaza con jpeg o png.
- De manera similar, en el caso de los archivos de texto
- También se considera la preferencia por el método de compresión.
- El navegador Chrome admite métodos de compresión como 'gzip, deflate, br, zstd'.
- Por ejemplo, en el caso del servicio durumis, actualmente admite gzip y br, por lo que se transmite primero el archivo comprimido con br.
Estas funciones avanzadas de CDN permiten proporcionar contenido optimizado para el entorno del usuario, lo que puede mejorar significativamente el rendimiento y la experiencia del usuario del sitio web.
Incluso con Cloud CDN, dado que básicamente se requiere una solicitud de archivo a Cloud Run desde la CDN, durumis coloca previamente Cloud Storage y Cloud Run en 8 regiones de todo el mundo y utiliza un método para colocar los recursos de antemano y transmitirlos. Por lo tanto, aunque hay un ligero aumento en el costo y la cantidad de trabajo, los usuarios pueden experimentar una latencia mucho mejor.
Incluso cuando se utiliza Cloud CDN, básicamente se debe obtener el archivo del servidor de origen (en este caso, Cloud Run). Durumis está optimizando esta estructura para proporcionar un mejor servicio a los usuarios globales.
Estrategia de optimización global de durumis:
- Coloque previamente Cloud Storage y Cloud Run en 8 regiones de todo el mundo.
- Distribuya los recursos necesarios en cada región de antemano.
- Transmita los recursos desde la región más cercana cuando el usuario realiza una solicitud.
Este método requiere un ligero aumento en el costo y trabajo adicional, pero ofrece las siguientes ventajas a los usuarios:
- Latencia significativamente mejorada.
- Tiempo de carga de contenido más rápido.
- Mejora general de la experiencia del usuario.
Esta estructura se puede visualizar de la siguiente manera:
A través de esta estructura, durumis puede proporcionar un servicio rápido y consistente a los usuarios globales. Dado que recibe contenido de la región más cercana independientemente de la ubicación del usuario, puede utilizar el servicio con baja latencia en cualquier parte del mundo.
Este enfoque requiere más esfuerzo en la configuración y el mantenimiento iniciales, pero tiene la ventaja de mejorar significativamente la experiencia del usuario final. En particular, esta estructura puede ayudar a las empresas que brindan servicios globales a brindar servicios competitivos.
En la historia de la CDN de hoy, solo hemos revisado los conceptos básicos.
De hecho, también podríamos haber tratado la parte de configuración detallada, pero difiere según el proveedor de la nube (GCP, Azure, AWS), y es un poco menos... interesante, por lo que expliqué los conceptos.
En el futuro, si tengo la oportunidad, trataré partes más detalladas.
Entonces, la próxima historia tratará sobre cómo se sincroniza Cloud Storage en varias regiones (¡tenemos 8!).
Gracias.