Ir al contenido
HexaTransfer
Volver al blog
Nube y almacenamiento

Gestión multinube de archivos: evita la dependencia del proveedor

Gestiona archivos en múltiples proveedores de nube: evita la dependencia del proveedor, optimiza costes y mantén un acceso consistente entre plataformas.

La gestión multinube de archivos consiste en almacenar datos en dos o más proveedores (por ejemplo, AWS S3, Cloudflare R2 y Backblaze B2) detrás de una abstracción única que trata cualquiera de ellos como destino válido para un archivo dado. El RGPD, en su artículo 44, exige que las transferencias internacionales de datos cuenten con salvaguardas adecuadas, lo que convierte la elección del proveedor en una decisión con implicaciones legales concretas: no se puede seleccionar un backend sin saber en qué región reside y qué cláusulas contractuales tipo (CCT) lo cubren. Esa restricción regulatoria, lejos de ser un obstáculo, es uno de los argumentos más sólidos para adoptar una arquitectura multinube desde el principio.

El beneficio práctico de este enfoque: protección ante fallos de proveedores, poder de negociación en las renovaciones de contratos y la capacidad de mantener los costes de egreso cercanos a cero eligiendo el proveedor adecuado para cada carga de trabajo. Los ingredientes técnicos: la API compatible con S3 como lingua franca, rclone o MinIO Gateway como cliente portátil, un índice de metadatos (Postgres o compatible con DynamoDB) que registra qué proveedor aloja cada objeto, y un inventario de credenciales aplicable en CI mediante HashiCorp Vault o AWS Secrets Manager.

Lo que realmente cuesta la dependencia de un proveedor

La dependencia rara vez llega como una factura enorme, sino como cien pequeñas fricciones. Una vez que tu código usa aws s3 cp, codifica us-east-1, depende de S3 Select o usa flujos de DynamoDB, migrar a otro sitio significa reescribir todo eso. Las tarifas de egreso son el impuesto más visible: AWS cobra 0,09 $ por GB de salida para los primeros 10 TB. Mover 50 TB fuera de AWS cuesta unos 4.000 $ solo en ancho de banda, sin contar el tiempo del equipo técnico.

Menos obvio: características propietarias como los bloqueos de bóveda de Glacier, los activadores de Lambda en eventos de S3 o el Analizador de Acceso IAM se convierten en proyectos de migración. La estrategia multinube no busca usar todos los clouds para todo; busca mantener la puerta de salida abierta para que tus precios y niveles de servicio sigan siendo honestos.

La API compatible con S3 como terreno común

Casi todos los proveedores de almacenamiento de objetos hablan hoy la API de S3: AWS, Backblaze B2, Cloudflare R2, Wasabi, Google Cloud Storage (en modo de interoperabilidad), Azure Blob (mediante pasarela de terceros) y MinIO o Ceph RGW autohospedados. Eso significa que un solo SDK los cubre a todos:

import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
const r2 = new S3Client({
  region: 'auto',
  endpoint: 'https://account.r2.cloudflarestorage.com',
  credentials: { accessKeyId, secretAccessKey }
});
await r2.send(new PutObjectCommand({
  Bucket: 'transfers', Key: 'file.zip', Body: stream
}));

Ceñirse al subconjunto de la API S3 (PUT, GET, LIST, DELETE, multiparte, URLs prefirmadas) proporciona portabilidad total. Evita las llamadas específicas de cada proveedor como s3:GetObjectLegalHold a menos que tengas un plan para esa función en cada backend.

Abstracción de proveedores detrás de un enrutador

Construye un pequeño enrutador que mapee rutas lógicas a buckets físicos. En código es una función sencilla:

interface Store { put(key, stream); get(key); delete(key); }
class MultiCloudRouter implements Store {
  constructor(private index: Index, private stores: Record<string, Store>) {}
  async put(key: string, stream: ReadableStream) {
    const provider = chooseProvider(key);
    await this.stores[provider].put(key, stream);
    await this.index.record(key, provider);
  }
  async get(key: string) {
    const provider = await this.index.lookup(key);
    return this.stores[provider].get(key);
  }
}

chooseProvider puede basarse en políticas: afinidad de región, nivel de coste, requisito de replicación o simple round-robin entre proveedores. El índice (tabla Postgres o DynamoDB) es la fuente de verdad única para la ubicación de cada objeto.

Optimización de costes entre proveedores

Los precios varían enormemente:

  • AWS S3 Standard: 0,023 $ por GB de almacenamiento, 0,09 $ por GB de egreso
  • Cloudflare R2: 0,015 $ por GB de almacenamiento, 0 $ de egreso
  • Backblaze B2: 0,006 $ por GB de almacenamiento, 0,01 $ por GB de egreso
  • Wasabi: 0,0069 $ por GB de almacenamiento, egreso gratuito (hasta 1x el volumen almacenado al mes)
  • AWS S3 Glacier Deep Archive: 0,00099 $ por GB de almacenamiento, 0,02 $ por GB de egreso más tarifas de recuperación

Una política de enrutamiento inteligente:

  • Descargas orientadas al usuario: R2 (el egreso gratuito lo convierte en la opción ganadora)
  • Archivo frío: S3 Glacier Deep Archive
  • Redundancia regional: B2 (barato, fiable, diferente perfil de riesgo corporativo que AWS)
  • Copia de cumplimiento con retención larga: Wasabi con object lock

Para un servicio de transferencia que mueve 50 TB de salida al mes, cambiar el egreso de S3 a R2 ahorra 4.500 $ mensuales antes de hacer cualquier otra cosa.

Mantener los datos sincronizados entre proveedores

Para datos críticos que quieres replicar entre proveedores, usa la sincronización o bisync de rclone:

rclone sync r2:transfers b2:transfers-mirror --transfers 16 --checksum

Para la replicación continua, puedes usar la Replicación entre Regiones de AWS S3 (que admite destinos externos vía Lambda) o un replicador basado en cola: publica cada PUT en SQS/Kafka y el consumidor lee la cola y escribe en el proveedor secundario. Consistencia eventual, con un RPO de minutos.

No repliques todo. Replica solo lo que no puedes recrear: bytes subidos por usuarios, sí; artefactos de compilación, probablemente no; registros de análisis que ya existen en tu almacén de datos, definitivamente no.

Gestión de credenciales sin errores graves

La estrategia multinube implica más credenciales, y las credenciales filtradas son la forma en que ocurren las brechas. Dos prácticas fundamentales:

  • Almacén de secretos centralizado: HashiCorp Vault, AWS Secrets Manager o Google Secret Manager. Nunca confirmes claves en Git; escanea con gitleaks en CI.
  • Tokens de corta duración con alcance limitado: prefiere tokens STS sobre claves de acceso permanentes. Limita cada credencial a un bucket y a los verbos mínimos necesarios.

Rota automáticamente en un ciclo de 90 días para claves de larga duración, 1 hora para STS. Etiqueta cada clave con owner, purpose y expiry. Revisa los huérfanos mensualmente.

Observabilidad unificada y registros de auditoría

La observabilidad entre proveedores importa más que dentro de cualquiera de ellos. Envía todos los registros de acceso a un destino único:

  • Registros de acceso al servidor de S3 → CloudWatch → OpenSearch
  • Registros de acceso de R2 → Cloudflare Logpush → S3 → OpenSearch
  • Notificaciones de eventos de B2 → webhooks → Loki

Los paneles unificados muestran: solicitudes por proveedor, tasas de error, latencia p99, bytes de egreso por bucket y acumulación de costes en tiempo casi real. Alerta cuando cualquier proveedor supere 2x el egreso diario esperado (buena señal de URL prefirmadas filtradas o scraping abusivo).

Cumplimiento del RGPD en arquitecturas multinube

La estrategia multinube multiplica la superficie de cumplimiento. Cada proveedor necesita su propio acuerdo de tratamiento de datos según el artículo 28 del RGPD, su propia revisión como subencargado y su propio rastro de auditoría. Pasos prácticos alineados con lo que exige la AEPD:

  • Mapea cada clasificación de datos (público, interno, confidencial, restringido) a los proveedores permitidos
  • Documenta la residencia: las transferencias del artículo 44 del RGPD fuera de la UE requieren un mecanismo válido (CCT, decisión de adecuación). Mantén los datos con ámbito europeo en R2 región UE u OVH Object Storage.
  • Haz un seguimiento de los subencargados. Cuando un proveedor añade un nuevo subencargado, puede ser necesario notificarlo a los clientes según el artículo 28, apartado 2.
  • Replica los registros de auditoría fuera del proveedor principal: un incidente de AWS que derribe CloudTrail no debería llevarse también tu historial de auditoría.

HexaTransfer funciona sobre una capa de almacenamiento compatible con S3 específicamente para mantener abierta la elección del proveedor, una estrategia que funciona igualmente bien para cualquier equipo que mueva archivos grandes. Pruébalo en hexatransfer.com, gratis, sin cuenta, hasta 10 GB.

Cuándo la estrategia multinube es excesiva

La estrategia multinube no es gratuita. Se paga en complejidad de ingeniería, herramientas duplicadas y mayor superficie operativa. Para equipos de menos de 10 ingenieros con un solo producto, elige un proveedor, negocia precios por volumen e invierte la complejidad ahorrada en el producto. La estrategia multinube justifica su coste cuando se alcanza uno de estos tres umbrales: el cumplimiento normativo exige la residencia de datos en varias jurisdicciones, la fiabilidad requiere redundancia a nivel de proveedor (no solo de región), o el poder de negociación en compras frente a un único proveedor importa para el negocio. Por debajo de esos umbrales, una sola nube con una capa de abstracción limpia y un plan de salida documentado suele ser la opción más pragmática.

Envía archivos grandes de forma segura con cifrado de extremo a extremo

Transfiere archivos de hasta 10 GB gratis con cifrado de extremo a extremo. Sin necesidad de cuenta. Tus archivos se cifran en tu navegador antes de subirlos: nadie más puede leerlos.

Enviar un archivo