Tutti gli articoli

Riflessioni sullo sviluppo

Locale o cloud? L’architettura dei dati giusta dipende dal prodotto

L’archiviazione locale e i servizi cloud risolvono problemi diversi. Una buona architettura segue l’uso, la collaborazione, le esigenze offline e la responsabilità sui dati.

Uno smartphone e una cartella ordinata con divisori si trovano all’interno di un discreto confine dei dati.

Scegliere se un’app debba archiviare i dati localmente o nel cloud può sembrare una questione puramente tecnica, ma la decisione parte dal modo in cui il prodotto verrà usato. Una lista di controllo personale su un solo smartphone ha esigenze diverse da un piano modificato contemporaneamente da più persone. Entrambe le architetture possono essere affidabili, ed entrambe possono diventare inutilmente complesse se non corrispondono allo scenario.

«Locale significa privato» è incompleto quanto «il cloud è moderno». I dati locali possono scomparire insieme al dispositivo. I servizi cloud possono favorire collaborazione e ripristino, ma richiedono account, infrastruttura e flussi di dati comprensibili. La distribuzione giusta dipende dal caso d’uso, non dall’etichetta.

In breve

  • Locale o cloud è una decisione di prodotto, non una classifica di qualità.
  • I dati locali favoriscono l’uso offline, ma richiedono un percorso di backup affidabile.
  • I servizi cloud consentono uno stato condiviso, ma aggiungono account, sincronizzazione e gestione continuativa.

Che cosa significano davvero «locale» e «cloud»

In un’app locale, la copia principale dei dati è archiviata sul dispositivo. In molti casi l’app può completare il proprio processo centrale senza rete né server. I servizi del sistema operativo possono comunque essere coinvolti nella distribuzione, nel backup del dispositivo o nella condivisione di un file esportato. «Locale» significa che il fornitore non gestisce un database centrale dell’app per questi dati utente; non significa che scompaia l’intero ecosistema del dispositivo.

Secondo la definizione del NIST, il cloud computing è l’accesso su richiesta tramite rete a un insieme condiviso di risorse configurabili. Per un’app, queste risorse possono includere database, archiviazione di file, servizi di identità e potenza di calcolo. La copia centrale si trova quindi di norma in un’infrastruttura remota; i dispositivi caricano i dati, inviano le modifiche e riconciliano lo stato.

Molti prodotti adottano un approccio ibrido. Conservano i dati sul dispositivo per mantenere l’interfaccia veloce e disponibile offline, quindi li sincronizzano in background con un server. Android Developers descrive questo modello come architettura «offline-first»: una fonte dati locale è la fonte principale per le letture e l’accesso alla rete aggiorna quella copia. Il cloud non scompare, ma viene affiancato da un livello locale e da regole di sincronizzazione.

L’archiviazione locale riduce le dipendenze

Se un’app non ha account né server, il suo percorso centrale spesso diventa più semplice. Non ci sono login, password dimenticate o interruzioni di un servizio di sincronizzazione. Per il normale utilizzo, i dati personali non devono essere trasferiti al fornitore. Questo può adattarsi molto bene al modello di fiducia previsto per una sola persona.

La disponibilità offline è immediata. Le informazioni restano accessibili in cantina, in un edificio con scarsa ricezione o durante un viaggio. Le modifiche possono essere salvate senza prima interrogare uno stato remoto. La reattività dell’app non dipende dalla latenza di un servizio.

Anche la gestione può diventare più semplice. Senza un database centrale degli utenti vengono meno alcuni costi dei server, processi legati agli account e problemi continui di sincronizzazione. Meno infrastruttura non significa però assenza di infrastruttura o responsabilità: pubblicazione, collegamenti agli store, sito web, assistenza e manutenzione del prodotto restano necessari. Archiviazione locale, migrazioni, gestione dei file e ripristino devono comunque essere realizzati con cura.

Il principale punto di forza del locale è anche il suo limite

Usare un solo dispositivo come archivio principale crea chiarezza, ma anche un singolo punto di guasto. Se lo smartphone viene perso o danneggiato, oppure l’app viene eliminata senza un backup adeguato, l’unica copia dei dati può scomparire. Per continuare a lavorare su un nuovo dispositivo serve un percorso pianificato di esportazione e ripristino.

I backup non sono quindi una funzione secondaria facoltativa per i prodotti locali. Devono essere facili da creare, archiviati fuori dall’app e ripristinabili in modo affidabile. Un file conservato soltanto nell’area privata dell’app non protegge dalla disinstallazione o dalla perdita del dispositivo. La crittografia può proteggere le esportazioni sensibili, ma aumenta la responsabilità: senza un servizio centrale di recupero, una password smarrita potrebbe non essere recuperabile.

Anche i backup del sistema operativo richiedono una valutazione differenziata. Apple spiega che determinate cartelle dell’app possono essere incluse nei backup del dispositivo o di iCloud, a seconda del tipo di file. Il prodotto deve stabilire consapevolmente quali dati sono importanti in modo permanente, quali sono ripristinabili e quali soltanto temporanei. Per gli utenti deve comunque restare chiaro se l’app offre un backup trasferibile e su che cosa possano contare quando cambiano dispositivo.

I sistemi cloud consentono collaborazione e continuità

Non appena più persone devono disporre dello stesso stato aggiornato, un’infrastruttura centrale offre un vantaggio importante. Un team può condividere attività, assegnare ruoli e unire modifiche provenienti da dispositivi diversi. Un nuovo computer non deve ricevere un file trasferito manualmente: dopo il login, lo stato condiviso può essere caricato di nuovo.

I servizi cloud sono adatti anche all’automazione centralizzata. Un server può eseguire processi in background, distribuire notifiche condivise, integrare dati con altri sistemi e applicare regole indipendentemente dall’attività di uno specifico smartphone. Questo è spesso essenziale per portali di prenotazione, gestione dei team o analisi a livello aziendale.

Anche backup e ripristino possono diventare più semplici per il singolo utente. Copie ridondanti sul server, cronologia delle versioni e backup gestiti riducono il rischio che tutto risieda su un solo dispositivo. Si tratta però di una capacità del servizio specifico, non di una proprietà automatica di qualsiasi soluzione chiamata cloud. Archiviazione, test di ripristino, regole di cancellazione e procedure di emergenza devono esistere davvero.

La sincronizzazione è un problema di prodotto a sé

Un’app con copia locale e sincronizzazione cloud offre idealmente un uso offline rapido e continuità tra dispositivi. Sorge però una domanda difficile: che cosa accade quando due dispositivi modificano lo stesso record in modo indipendente?

Alcuni conflitti possono essere risolti con marche temporali. In altri casi, lasciare semplicemente prevalere l’ultima versione sovrascriverebbe informazioni preziose. Gli elenchi possono unire elementi, mentre i testi lunghi possono richiedere una risoluzione visibile dei conflitti. I file necessitano di uno stato di caricamento, nuovi tentativi dopo un’interruzione e regole per la cancellazione. Il prodotto deve inoltre mostrare se uno stato è soltanto locale, già sincronizzato o interessato da un errore.

La guida offline-first di Android descrive, tra l’altro, fonti dati locali e di rete, code di sincronizzazione e strategie di lettura e scrittura. Ciò richiede un ampio ventaglio di test: modalità aereo, connessioni instabili, interruzioni del processo, invii duplicati, versioni precedenti dell’app e modifiche simultanee.

La sincronizzazione non dovrebbe quindi essere pianificata come un semplice interruttore. È una componente permanente della logica di dominio e dell’interfaccia. Se non è necessaria al beneficio effettivo, ometterla può rendere il prodotto molto più robusto. Se invece la collaborazione è centrale, escluderla non dimostrerebbe focalizzazione, ma imporrebbe un limite sbagliato.

La protezione dei dati dipende dall’intero percorso dei dati

L’archiviazione locale può evitare trasferimenti e archivi centrali. È quindi una forma efficace di minimizzazione dei dati se il compito può essere svolto senza server. Restano comunque rilevanti la protezione del dispositivo, la sandbox dell’app, la crittografia locale, le autorizzazioni, i registri, le esportazioni e i backup. Un archivio esportato senza protezione in una posizione condivisa può annullare rapidamente il vantaggio dell’area privata dell’app.

Nei prodotti cloud entrano in gioco altri soggetti e altre domande: quali dati lasciano il dispositivo? In quale area geografica vengono elaborati? Chi gestisce l’infrastruttura e l’assistenza? Come viene protetto, registrato e revocato l’accesso? Per quanto tempo restano i backup dopo la cancellazione? Quali dati sono necessari per analisi, notifiche o servizi assistiti da modelli?

Cloud non significa automaticamente condivisione estesa. Una piattaforma ben progettata può ridurre al minimo i dati, utilizzare la crittografia, separare rigorosamente gli accessi e offrire procedure di cancellazione trasparenti. Allo stesso modo, l’archiviazione locale non significa automaticamente che nessuno, a parte l’utente, possa vedere i dati: sistema operativo, backup del dispositivo, file condivisi o dispositivi compromessi cambiano il quadro. La protezione dei dati deriva dall’architettura concreta e dalle pratiche operative.

La scalabilità riguarda più del numero di utenti

Le architetture cloud sono spesso progettate per scalare. Un servizio centrale può accogliere altri utenti, dispositivi o volumi di dati, purché database, archiviazione e gestione siano concepiti di conseguenza. Ne derivano costi ricorrenti, monitoraggio, pianificazione della capacità e responsabilità di sicurezza. Un utilizzo ridotto può costare poco; un uso intenso o file di grandi dimensioni possono cambiare il modello economico.

Le app locali distribuiscono archiviazione e calcolo tra i dispositivi. Il fornitore non paga spazio cloud per ogni file personale. In compenso, i dispositivi differiscono per prestazioni e spazio disponibile. Grandi raccolte di immagini, modelli locali complessi o migrazioni lunghe possono gravare sugli smartphone meno recenti. L’assistenza deve affrontare stati che non possono essere visualizzati o riparati centralmente.

La scalabilità può dipendere anche dal dominio. Per un prodotto destinato a dieci immobili potrebbero bastare filtri migliori e un database locale più grande. Un prodotto per dieci professionisti richiede ruoli, regole per i conflitti e tracciabilità. Il solo numero di record non stabilisce quando sia necessaria un’architettura cloud.

Propivio come esempio di scelta locale consapevole

Propivio è progettata per una sola persona che gestisce sullo smartphone informazioni relative a pochi immobili di sua proprietà. Non esistono account utente, modifica condivisa o un servizio cloud automatico dell’app. Documenti, foto, contatti, letture dei contatori e altri dati di dominio vengono conservati localmente nell’area privata dell’app.

Per questo scenario, l’approccio riduce la complessità non necessaria di account e sincronizzazione. La conseguenza non viene nascosta: un processo esterno di backup e ripristino è importante e più dispositivi non condividono uno stato sincronizzato automaticamente. Chi desidera lavorare in team, gestire centralmente grandi portafogli o integrare portali si trova, per scelta, fuori da questo modello di prodotto.

Un altro prodotto Zappapps potrebbe prendere una decisione diversa. Non appena un prodotto dipende da collaborazione, automazione centralizzata o accesso condiviso, un’architettura cloud diventa plausibile nonostante la maggiore complessità. La coerenza del marchio non richiede di costruire ogni app con la stessa architettura tecnica, ma di spiegare chiaramente ogni decisione.

Usare una matrice decisionale, non un atto di fede

Prima di scegliere l’architettura, aiutano domande concrete:

  • Lavora una sola persona oppure più ruoli devono vedere lo stesso stato aggiornato?
  • Il processo principale deve funzionare interamente senza rete?
  • Quanto sarebbe grave la perdita del dispositivo?
  • Chi è responsabile di backup e ripristino?
  • L’accesso da più dispositivi è un beneficio centrale o una comodità occasionale?
  • Quali dati sono sensibili e quali trasmissioni sono davvero necessarie?
  • Il prodotto necessita di processi in background o integrazioni quando nessun dispositivo è attivo?
  • Quali costi di gestione, assistenza e infrastruttura sono sostenibili?
  • Come vengono gestiti esportazione, cancellazione, migrazione e un eventuale cambio di fornitore?

Le risposte possono condurre a una soluzione locale, cloud oppure ibrida e offline-first. Possono anche cambiare insieme al prodotto. Una modifica successiva è però costosa, perché coinvolge l’identità dei dati, la gestione dei conflitti e la fiducia. La decisione iniziale non dovrebbe quindi basarsi soltanto sulla preferenza per una tecnologia.

L’architettura giusta rende chiare le proprie conseguenze

Le persone non devono comprendere i sistemi distribuiti, ma dovrebbero sapere che cosa comporta l’architettura nell’uso quotidiano: l’app funziona senza rete? I dati sono disponibili su altri dispositivi? Come si crea un backup? Quali contenuti lasciano il telefono?

Locale e cloud non sono livelli di qualità. Distribuiscono in modo diverso capacità, rischi e responsabilità. La scelta migliore corrisponde allo scopo reale e rende chiare le proprie conseguenze sia nella tecnologia sia nel linguaggio del prodotto.

Fonti e approfondimenti