template-saas/docs/97-adr/adr/ADR-007-storage-abstraction-layer.md
Adrian Flores Cortes 806612a4db
Some checks are pending
CI / Backend CI (push) Waiting to run
CI / Frontend CI (push) Waiting to run
CI / Security Scan (push) Waiting to run
CI / CI Summary (push) Blocked by required conditions
[REESTRUCTURA-DOCS] refactor: Corregir estructura docs/ segun SIMCO-DOCUMENTACION-PROYECTO
- Renombrar 02-integraciones/ → 03-integraciones/ (resolver prefijo duplicado)
- Renombrar 02-devops/ → 04-devops/ (resolver prefijo duplicado)
- Renombrar architecture/ → 97-adr/ (agregar prefijo numerico)
- Actualizar _MAP.md con nueva estructura y version 2.1.0

Estructura final:
- 00-vision-general/
- 01-modulos/
- 02-especificaciones/
- 03-integraciones/
- 04-devops/
- 97-adr/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 20:34:14 -06:00

1.6 KiB

id title type status priority supersedes superseded_by version created_date updated_date
ADR-007 Storage Abstraction Layer ADR Accepted P0 N/A N/A 1.0.0 2026-01-10 2026-01-10

ADR-007: Storage Abstraction Layer

Metadata

Campo Valor
ID ADR-007
Estado Accepted
Fecha 2026-01-10
Supersede N/A

Contexto

Se necesita soporte para multiples providers de storage (S3, R2, MinIO) con:

  • Posibilidad de cambiar entre providers segun costos o disponibilidad
  • Migracion sin cambios de codigo
  • Soporte multi-tenant con aislamiento

Opciones Consideradas

Opcion 1: AWS SDK Solo

Pros: Nativo, bien documentado Contras: Vendor lock-in

Opcion 2: Abstraccion Propia

Pros: Control total Contras: Mayor mantenimiento

Opcion 3: AWS SDK v3 S3-Compatible (Elegida)

Pros: Cualquier storage S3-compatible funciona Contras: Limitado a protocolo S3

Decision

Usamos AWS SDK v3 con configuracion S3-compatible permitiendo conectar S3, R2, MinIO sin cambios de codigo.

Implementacion

const s3Client = new S3Client({
  endpoint: process.env.STORAGE_ENDPOINT,
  credentials: {
    accessKeyId: process.env.STORAGE_ACCESS_KEY,
    secretAccessKey: process.env.STORAGE_SECRET_KEY
  },
  forcePathStyle: true // Necesario para MinIO
});

Consecuencias

Positivas

  • Cualquier storage S3-compatible funciona
  • Migracion sin cambios de codigo

Negativas

  • Limitado a protocolo S3
  • No aprovecha features especificos de cada provider

Fecha decision: 2026-01-10 Autores: Claude Code (Arquitectura)