Ho un'app iOS che comunica con un'API REST che ho sviluppato. Sto usando Amazon S3 per l'archiviazione di file immagine e audio. Al momento sono in grado di caricare / scaricare i file direttamente dall'app mobile (client). Attualmente sto affrontando alcuni problemi con la velocità di upload / download di file di piccole dimensioni (15-20 kB), così come altri problemi come Amazon S3 che non consentono una differenza di tempo di oltre 15 minuti (ovvero se i miei clienti hanno il loro tempo zone o configurazioni data / ora non corrette, non sarebbero in grado di caricare / scaricare questi file da S3.
Ora mi trovo ad affrontare una decisione architettonica verso questi problemi, ovvero caricare / scaricare i file da S3 alla mia API, archiviarli temporaneamente e caricarli / scaricarli sul client mobile. In altre parole cambia da questo:
S3 <----> iOS <----> REST API
a questo:
S3 <----> REST API <----> iOS
I vantaggi:
- Tutti i dati vengono elaborati e gestiti dall'API
- Nessun problema se il client e lo spazio di archiviazione (S3) non sono sincronizzati (time skew)
- Il telefono del cliente comunica con un solo servizio web
Svantaggi:
- Tutti i trasferimenti di file sono a due vie
- Il traffico web dell'API aumenta sostanzialmente
- Aumento della possibilità di perdita di dati / pacchetti, dovendo quindi ripetere l'intero processo
Quale sarebbe la scelta migliore? Lasciare così com'è oppure iniziare a sviluppare trasferimenti di file tramite la mia API?