Los costos de ancho de banda de imágenes en S3 son cada vez más molestos

He notado que los costos de ancho de banda (transferencia) del servicio de imágenes S3 de nuestro sitio siguen aumentando. El precio es de 0,09 /GB y eso puede sumar muy rápido... Asumo que no soy el único sitio con este problema. Ahora estoy pagando a Amazon 70 al mes solo por transferencia, lo cual es más que mis costos de VM. El costo de almacenamiento en S3 es de solo 5 $ al mes; todo el problema son los cargos por transferencia.

No tengo configurado ningún CDN ni caché, solo un Discourse totalmente genérico ejecutándose en una VM de Linode que utiliza los buckets de imágenes de S3. ¿Qué están haciendo los sitios más grandes con muchas imágenes? ¿CDN (asumo que eso reducirá los costos)? ¿Usar Digital Ocean Spaces o Minio? ¿Algo más que me esté perdiendo?

Usar una CDN para S3 es el enfoque correcto. Eso reducirá drásticamente los costos de transferencia.

Si tienes un presupuesto ajustado, podrías usar un subdominio de Cloudflare para ello.

Hmm… al revisar los costos de ancho de banda en Fastly y Amazon CloudFront (y otros), son prácticamente los mismos que los 0,09 $/GB que pago ahora :frowning:

¿Cloudflare parece no cobrar por el ancho de banda? Tal vez esa sea la opción a probar. ¿Hay algún post sobre cómo conectar Cloudflare para el CDN de imágenes de S3 en Discourse? Veo la opción s3_cdn_url, pero no encuentro instrucciones sobre cómo usarla (más allá de que necesito volver a generar las imágenes una vez que la configure). Al revisar Cloudflare, parece que necesitas tener tu propio dominio, ya que es necesario cambiar la configuración DNS… así que tendría que crear un CNAME como s3-cloudflare.midominio.com que apunte a la IP de mi bucket de S3, decirle a Cloudflare que haga su trabajo con esa URL, configurar también s3_cdn_url con ese valor y luego volver a generar las imágenes.

Aquí hay una página de soporte de Cloudflare que parece indicar que esto podría funcionar:

https://support.cloudflare.com/hc/en-us/articles/360013791312-Fetching-object-storage-assets-through-the-Cloudflare-CDN-using-a-Cloudflare-Worker

¿Alguien está haciendo esto? Me sorprende un poco que no haya muchos sitios con este problema, ya que al menos para mí esto duplica más que el costo mensual.

Estoy usando Cloudflare en mi sitio de Discourse y funciona perfectamente. Básicamente, enrutas todo tu tráfico a través de Cloudflare y le indicas qué procesar o almacenar en caché, y eso es todo. Sin embargo, hay algunas cosas a tener en cuenta:

  1. Configura Cloudflare para que NO almacene nada en caché (configura excepciones usando reglas de página, consulta más abajo).
  2. No permitas que Cloudflare modifique tu JavaScript; específicamente, desactiva Rocket Loader.
  3. Todavía no estoy seguro sobre la compresión Brotli, así que la he desactivado.
  4. Configura reglas de página para almacenar en caché los directorios de avatares y subidas como se muestra a continuación (ignora la regla #1, ya que es específica del sitio).

Cloudflare está almacenando actualmente un poco más de 3 TB de datos por mes para mí y sirve gráficos grandes bastante rápido.

Si estás más interesado en una CDN, también puedo recomendar https://www.belugacdn.com/ (no tengo ninguna afiliación con ellos). Los uso en una gran plataforma de WordPress y el rendimiento es bueno, a una fracción del costo de otras plataformas CDN que evalué (aunque esas podrían ser aún más rápidas, Beluga cumple con mis necesidades).

¿Al final dejaste de usar Amazon CloudFront, @scottfsmith?

Me encuentro en una situación similar en cuanto al aumento de los gastos.

CloudFront es bastante nuevo para mí. Durante los últimos años solo he utilizado un bucket de S3, pero basándome en las recomendaciones aquí, configuré CloudFront el mes pasado.

Todo esto solo ha servido para trasladar el costo de la transferencia de datos de S3 a la transferencia de datos de CloudFront; la factura mensual total sigue siendo la misma.

Me encuentro acercándome a una factura mensual insostenible para la transferencia de datos.

Estoy en la misma situación. También migré a CloudFront hace no mucho tiempo y los costos son similares. Pensé que habría algún ahorro gracias a la caché local; es decir, que el ancho de banda sería menor si la misma imagen se carga repetidamente desde la misma ubicación geográfica, pero hasta ahora parece que no es así.

Parece que debería haber otra CDN que funcione en lugar de CloudFront; todo lo que hace Discourse es reescribir las URL de las imágenes, así que es bastante genérico (al menos eso parece). Quizás se podría usar Cloudflare solo para las imágenes.

Esa era exactamente mi comprensión también.

+98% de nuestro tráfico proviene del Reino Unido y, naturalmente, el 98% de nuestra salida de S3 a través de CloudFront también es hacia el Reino Unido.

Hasta ahora, no veo ningún beneficio al tener una CDN. Si nuestro tráfico fuera mundial, quizás vería algo diferente.

En los próximos días leeré más sobre Cloudflare (¡cómo lograron que estos dos tuvieran nombres tan similares!) y veré si puedo encontrar algún beneficio.

Gracias :+1:t2:

Por favor, avísame aquí si encuentras algo. He tenido la intención de investigar esto yo mismo.

@Richie y @scottfsmith,

Hay algunos CDN de costo fijo, como https://www.stackpath.com/ por 10 dólares, que utilicé para todas las pruebas de Uso de almacenamiento de objetos para cargas (S3 y clones). Podrían ser una mejor opción para tu comunidad.

Stackpath CDN cuesta 20 USD al mes con un límite de 1 TB y, en muchos meses, lo supero. Luego, el precio sube a 200 USD al mes por un límite de 20 TB, lo cual es más de lo que Amazon me cobra, alrededor de 100 USD al mes.

Quizás haya otro servicio en esa lista que sea mejor, aunque. Gracias por recordarme la lista.

Imgur es gratuito para todos, pero no hay ningún plugin para esto.

GIF de reacción de Tobey Maguire

¿Qué haría un plugin de este tipo? ¿Simplemente no descargaría los plugins de IMGUR, o funcionaría como el sistema actual y subiría todas las imágenes a IMGUR a través de alguna interfaz de API que, supuestamente, existe?

¿Cuánto valdría esto para ti? Dudo que tenga sentido para el modelo de negocio de CDCK, ya que su alojamiento de pago es lo que hace posible Discourse para todos nosotros, y su alojamiento funciona perfectamente sin un plugin de IMGUR.

¿Alguien puede confirmar si esta configuración funciona bien en 2022 o no? :slight_smile:

Seguimos usando la configuración de Cloudflare, sí.

Gracias por confirmar.

La configuración que está utilizando no es de almacenamiento en caché de página completa, ¿verdad?

¿O hay algún beneficio especial en usar Cloudflare CDN sobre otros?

No, solo almacenamos en caché los directorios de subidas y avatares; consulta nuestras reglas anteriores. Si intentas hacer cualquier otra cosa, es probable que rompas Discourse.

Es gratis :slight_smile:

¿Qué pasa con los activos estáticos como JS y CSS?

Si usamos una CDN utilizando esta guía, esta entregará activos estáticos junto con las cargas y los avatares (si no me equivoco).

Entonces, ¿por qué se rompería Discourse si entregamos todos los activos estáticos a través de Cloudflare?

No recuerdo, han pasado algunos años. ¿Por qué no lo pruebas y me cuentas los resultados?

Mientras este hilo vuelve a estar activo, debería dar seguimiento… parece que Amazon CloudFront redujo significativamente sus precios. No tengo idea de lo que hicieron, pero mis costos promedio de AWS pasaron de alrededor de $80 al mes a $15 al mes. Esto es tanto para S3 como para CloudFront para imágenes (solo) en un sitio con una gran cantidad de imágenes.

Cloudflare está bien, solo deshabilita su función Rocket Loader.

Sin ningún esfuerzo de configuración, ahorra la mitad del ancho de banda de regreso a mi servidor.

Puede ser que hace años Cloudflare no funcionara bien con Discourse, pero hoy no es cierto. Sería bueno que no siguiéramos viendo dudas al respecto. Si alguien tiene un problema específico, debería iniciar un hilo de soporte aquí describiendo qué no funciona.