Almacenamiento de objetos para los ficheros del negocio: imágenes de producto, comprobantes en PDF, documentos y logotipos. Típicamente AWS S3, desacoplado del servidor principal para escalar de forma independiente.
¿Qué es?
Un servicio de almacenamiento de objetos en la nube (AWS S3 o equivalente). Custodia archivos estáticos —imágenes, PDF, documentos— fuera de la base de datos, dado su tamaño, y los expone mediante URLs. La base de datos guarda solo la referencia (la ruta), no el binario.
Funciones principales
Carga de imágenes: Se suben de 3 a 5 imágenes por producto y se generan automáticamente sus variantes (miniatura, media, original).
Organización: Estructura por prefijos (productos/, comprobantes/, documentos/) con permisos diferenciados (privado o público).
Distribución por CDN: Los archivos se sirven desde nodos de borde próximos al usuario, con caché global para minimizar la latencia.
Comprobantes en PDF: El backend genera el PDF y lo deposita aquí; el cliente lo descarga mediante una URL estable.
Respaldo: Replicación entre centros de datos y versionado para recuperar revisiones anteriores de un archivo.
Depuración: Los archivos sin referencia se eliminan automáticamente transcurridos 30 días.
Limitaciones y restricciones
Coste de almacenamiento: S3 ronda los US$ 0,023 por GB/mes (1 TB ≈ US$ 23/mes); escala con el volumen acumulado.
Coste de transferencia: La descarga (egress) tiene coste; la subida (ingress) es gratuita.
Latencia: El primer byte tarda entre 50 y 200 ms, superior a la de un disco local.
Configuración de permisos: CORS, políticas y permisos de bucket requieren configuración cuidadosa.
Dependencia de terceros: AWS garantiza una durabilidad del 99,999999999%, a costa de delegar en un proveedor externo.
Propósito del componente
Desacoplar los archivos pesados del servidor principal, escalar la capacidad sin saturar el disco, servir el contenido con baja latencia mediante una CDN global y delegar el mantenimiento de la infraestructura de almacenamiento en un servicio gestionado.
Por qué: S3 es el estándar del sector. CloudFront distribuye los archivos globalmente. boto3 es el cliente oficial desde Python. Pillow procesa y optimiza las imágenes. IAM controla permisos de forma granular.
Información técnica adicional
URLs prefirmadas: Enlaces temporales con caducidad configurable, idóneos para la descarga de comprobantes privados.
Carga multiparte: Los archivos grandes se dividen en fragmentos; si uno falla, se reintenta solo ese fragmento.
Ciclo de vida del objeto: Traslado automático de archivos antiguos a un almacenamiento más económico (Glacier) según su antigüedad.
Cifrado en reposo: Los archivos se almacenan cifrados y se descifran al descargarse, de forma transparente para el usuario.
Registro de accesos: Trazabilidad de cada acceso para auditar quién descargó qué.
Métricas importantes
Coste total: Almacenamiento más transferencia de salida; presupuestar el crecimiento mensual.
Tamaño medio del archivo: Con imágenes de ~2 MB y 10 000 productos, se parte de unos 20 GB.
Latencia de CDN: P95 < 100 ms. Por encima de 500 ms, indica problema de caché o de distribución geográfica.
Tasa de aciertos de CDN: Porcentaje de peticiones servidas desde caché; objetivo superior al 90%.
Integridad: Sumas de verificación (checksums) para detectar corrupción de archivos.
El almacenamiento en la nube escala de forma automática, pero su coste crece con el volumen. Conviene optimizar el tamaño de las imágenes y aplicar políticas de ciclo de vida y versionado para contener el gasto.