Introducción
Cuando un equipo necesita optimizar y distribuir imágenes a escala, la pregunta suele formularse mal: “¿Usamos SaaS o lo construimos nosotros?. La pregunta correcta es otra:
¿Qué nivel de control, flexibilidad y responsabilidad estamos dispuestos a asumir?
Porque una imagen en producción ya no es solo un archivo estático. Es rendimiento, costo, experiencia de usuario y arquitectura.
Antecedentes / El dolor
En muchos proyectos, el sistema de imágenes nace como algo simple: almacenar en S3 y servir desde un CDN.
Pero el crecimiento trae nuevos problemas:
- Necesidad de redimensionar dinámicamente.
- Optimización por formato (WebP, AVIF).
- Compresión automática según header.
- Manejo de cache inteligente.
- Control de costos ante picos de tráfico
Ahí aparece el dilema:
- SaaS: rápido, simple, pero con costos variables y dependencia externa.
- Infraestructura propia: mayor control, pero mayor responsabilidad técnica.

Idea central
Construir una infraestructura basada en Dynamic Image Transformation para Amazon CloudFront implica aceptar complejidad a cambio de autonomía.
No se trata sólo de procesar imágenes con Lambda y la librería sharp.
Se trata de diseñar un sistema completo que:
- Aproveche arquitectura serverless.
- Escale bajo demanda.
- Minimice costos cuando no hay tráfico
- Permita personalización avanzada.
- Mantenga alta disponibilidad bajo el SLA de AWS.
Desarrollo
Arquitectura: control total vs simplicidad SaaS
La solución basada en CloudFront + S3 Object Lambda + Lambda permite:
- Redimensionado dinámico vía URL.
- Conversión automática de formato (AUTO_WEBP).
- Ajuste de calidad bajo demanda.
- Cacheo inteligente en el edge.
- Integración con múltiples servicios internos.
Pero exige:
- Conocimiento profundo de AWS.
- Gestión de runtime y actualizaciones.
- Comprensión de límites como concurrencia y payload.
- Mantenimiento continuo.
SaaS elimina fricción operativa, pero limita la personalización y puede generar dependencia estructural.

Escalabilidad y modelo de costos
Uno de los mayores atractivos del enfoque serverless es el modelo pay-per-request.
Cuando no hay procesamiento, no hay costo de ejecución en Lambda.
Según estimaciones oficiales (región Norte de Virginia):
- 100,000 imágenes nuevas no cacheadas ≈ $4.98 mensuales.
- 1,000,000 imágenes nuevas ≈ $19.26.
- 1,000,000 imágenes cacheadas ≈ $7.65.
El caché en CloudFront cambia radicalmente la estructura de costos.
Sin embargo:
- Mala configuración de caché puede disparar consumo.
- Personalizaciones excesivas pueden aumentar el tiempo de ejecución.
- Mayor tráfico implica mayor complejidad en el monitoreo.

Personalización vs mantenibilidad
La infraestructura permite:
- Modificar código en Lambda.
- Añadir marcas de agua.
- Ajustar lógica de transformación.
- Integrar validaciones o seguridad avanzada.
Pero cada personalización:
- Aumenta la deuda técnica.
- Dificulta upgrades futuros.
- Puede romper compatibilidad con nuevas versiones del servicio.
Observabilidad y operación
Un sistema propio obliga a gestionar:
- CloudWatch Logs.
- Métricas de ejecución.
- Concurrencia de Lambda.
- Eventos en S3.
- Seguridad en Secrets Manager (si se usan Signed URLs).
No es sólo “funciona o no funciona”.
Es entender cómo fluye cada solicitud:
Cliente → CloudFront → normalización → cache → S3 Object Lambda → procesamiento → respuesta → cache edge.

Recomendaciones
- Evalúa primero el volumen esperado y el patrón de tráfico antes de decidir la arquitectura.
- Diseña una estrategia de caché desde el inicio; impacta más que la infraestructura misma.
- Evita sobre personalizar Lambda si no es estrictamente necesario.
- Calcula costos considerando imágenes no cacheadas y escenarios de pico.
- Si el equipo no domina AWS, considera el costo de aprendizaje como parte del presupuesto.
Conclusiones
Construir una infraestructura propia de optimización de imágenes en AWS transforma un problema simple en una decisión arquitectónica profunda. No es solo distribuir imágenes, es decidir cuánto control quieres sobre rendimiento, costos y evolución futura.
La arquitectura serverless ofrece escalabilidad, flexibilidad y eficiencia, pero exige criterio técnico y gobernanza constante. El verdadero trade-off no está en la tecnología, está en la estrategia.
Glosario
- Serverless: Modelo donde la infraestructura es gestionada por el proveedor y se paga por ejecución.
- S3 Object Lambda: Servicio que permite modificar objetos de S3 en tiempo real durante la lectura.
- Edge caching: Almacenamiento de contenido en ubicaciones cercanas al usuario final.
- Payload limit: Restricción del tamaño máximo de datos que puede procesar una función.
- Alta disponibilidad: Capacidad del sistema de mantenerse operativo bajo condiciones normales y de falla.