L’approccio al design e allo sviluppo delle applicazioni Web sta subendo un cambiamento epocale. Con l’aumento della consapevolezza sulla privacy e la crescente preoccupazione per la sicurezza delle informazioni, molti sviluppatori stanno esplorando nuovi approcci per la gestione dei dati sul Web. Uno di questi approcci emergenti è il Local-First Web Development.
Da anni il Cloud è al centro dell’interesse di utenti, professionisti, aziende e sviluppatori. Le regole vigenti in Europa in materia di gestione e protezione dei dati personali, la decisa spinta sul concetto di sovranità dei dati, la necessità di ridurre i trasferimenti verso Paesi extra-UE, hanno indotto tante realtà a ripensare le rispettive procedure.
Si chiama Local-First Web Development l’approccio innovativo e sempre più popolare nello sviluppo di applicazioni Web che pone l’accento sulla conservazione dei dati in locale.
Una delle principali ragioni per cui il Local-First Web Development sta diventando sempre più popolare è la possibilità di lavorare in modalità offline mantenendo la possibilità di usare le stesse funzionalità anche in assenza della connessione Internet.
Il Local-First può contribuire a migliorare le prestazioni e la scalabilità dell’applicazione riducendo anche la latenza e minimizzando il traffico di rete. Vantaggi particolarmente importanti per le applicazioni che richiedono l’accesso ai dati in tempo reale, come ad esempio le applicazioni di monitoraggio e controllo.
Differenze rispetto all’approccio Cloud-First
A differenza dell’approccio Cloud-First, in cui i dati sono principalmente memorizzati su server remoti, l’approccio Local-First archivia i dati in modo permanente su dispositivi locali. In questo modo gli utenti mantengono pieno controllo dei propri dati perché essi non vengono più trasferiti su piattaforme gestite da soggetti terzi.
Gli utenti non devono preoccuparsi di eventuali problemi di connessione o della dipendenza dai fornitori di servizi cloud per l’accesso ai loro dati e alle loro applicazioni.
Come accennato in precedenza, l’approccio Local-First può contribuire a migliorare le prestazioni dell’applicazione poiché i dati sono accessibili in locale, più velocemente rispetto a un’operazione di recupero da server remoti.
Con il Local-First gli sviluppatori si trovano dinanzi a sfide importanti che riguardano essenzialmente la corretta condivisione e sincronizzazione dei dati degli utenti. Inoltre possono presentarsi problemi sul piano della scalabilità dell’applicazione nel caso in cui il numero degli utenti connessi e i carichi di lavoro dovessero crescere rapidamente.
Di recente abbiamo presentato Automerge, una libreria CRDT (Conflict-free Replicated Data Type) utilissima nello sviluppo di applicazioni multiutente. Con Automerge vengono ad esempio gestite modifiche simultanee applicate sugli stessi documenti come fanno ad esempio strumenti quali Google Docs, Microsoft Office Online o Trello.
Nella guida introduttiva al Local-First Web Development il primo articolo che viene presentato è elaborato da Ink & Switch, proprio gli autori di Automerge.
Per lo storage dei dati vengono suggeriti strumenti come PouchDB, RxDB, VLCN, TinyBase, ElectricSQL, Evolu, Instant, Gun, WatermelonDB e SyncedStore.
Ai fine della sincronizzazione vengono consigliati Yjs, Automerge, Replicache, hocuspocus e Amplify DataStore.
PouchDB, ad esempio, è una libreria JavaScript open source che consente di archiviare i dati in locale e sincronizzarli con un server remoto.
Utilizza il motore di Apache CouchDB, un database NoSQL open source che consente di archiviare i dati in locale per poi sincronizzarli con un server remoto. CouchDB utilizza un’API RESTful per accedere ai dati e supporta la sincronizzazione bidirezionale.
Ovviamente non è detto che i server che accolgono la parte back-end delle applicazioni debbano essere necessariamente on-premises ovvero all’interno dell’infrastruttura IT dell’azienda: è possibile creare cloud privati appoggiandosi ai fornitori che offrono server cloud attraverso data center italiani o dislocati entro i confini dell’Unione Europea.