Fondamenti
Sync-in si basa su scelte progettuali che privilegiano il controllo dello storage, la coerenza degli accessi e la scalabilità operativa.
- Storage leggibile e reversibile, con i file conservati nel loro file system originale.
- Metadati su richiesta, creati solo quando una funzionalità li richiede.
- Scalabilità operativa, senza una replica completa obbligatoria dell'albero dei file nel database.
- Governance collaborativa, con spazi collaborativi, autorizzazioni granulari, ancoraggio virtuale e deleghe di condivisione governate.
- Sicurezza integrata, basata su regole coerenti per autorizzazioni, blocchi e tracciabilità.
- Coerenza degli accessi, indipendentemente dal punto di ingresso: interfaccia web, WebDAV, sincronizzazione, editor o API.
- Interoperabilità nativa, tramite WebDAV, client di sincronizzazione e integrazioni documentali.
Queste scelte si traducono in diversi meccanismi chiave che definiscono l'architettura di Sync-in.
Per confrontare queste scelte con altre architetture EFSS open source, consulta il confronto tra le architetture.
Modello di storage e reversibilità
Reversibilità dello storage
I file non vengono inglobati né archiviati in un database: rimangono direttamente accessibili nel file system.
Questo garantisce agli utenti la libertà di leggere, sottoporre a backup, migrare o elaborare i propri dati con altri strumenti, senza vincoli né dipendenze da Sync-in. Quando si verificano modifiche nel file system, Sync-in può riconciliare lo stato osservato con i metadati esistenti per preservare la coerenza dell'applicazione.
Lo stato dell'applicazione non viene incorporato nei file tramite metadati del file system specifici del backend; di conseguenza, le procedure di copia, ripristino e migrazione dipendono meno da attributi nascosti dello storage.
👉 Vedi anche: Confronto tra le architetture
Metadati mirati e riconciliazione del file system
Per i metadati collaborativi, Sync-in indicizza soltanto i file associati a uno stato applicativo utile: commenti, condivisioni, ancoraggi, sincronizzazioni, autorizzazioni, attività e stati correlati. Il database non funge da replica completa obbligatoria dell'albero del file system: memorizza lo stato funzionale richiesto dalla piattaforma. Questo approccio mantiene la crescita del database più vicina all'uso collaborativo reale, riduce il sovraccarico di indicizzazione su alberi molto estesi e migliora sia la fluidità sia le prestazioni complessive della piattaforma.
Questo modello rafforza anche la scalabilità: l'aggiunta di milioni di file non genera automaticamente milioni di voci applicative. Il carico del database aumenta principalmente in funzione delle funzionalità effettivamente utilizzate, come condivisioni, sincronizzazioni, autorizzazioni o attività.
Quando un file già associato a metadati viene modificato nel file system, Sync-in può riconciliare lo stato reale dello storage con i metadati esistenti. In questo modo condivisioni, ancoraggi, sincronizzazioni, autorizzazioni e attività rimangono coerenti senza imporre una cache globale per ogni file.
L'indicizzazione full-text è un meccanismo distinto: riguarda il contenuto dei documenti, può essere attivata o disattivata e non deve necessariamente essere vincolata al database. Può affidarsi a motori di ricerca più adatti ai carichi full-text, come Elasticsearch. I risultati rimangono filtrati in base ai diritti di accesso dell'utente, anche quando provengono dall'indice dei contenuti.
Ancoraggio virtuale senza duplicazione
Il meccanismo di ancoraggio consente di collegare un file o una cartella a uno spazio collaborativo senza spostarlo né duplicarlo.
L'elemento è accessibile come se fosse fisicamente presente (interfaccia, WebDAV, API), pur rispettando le regole di autorizzazione dello spazio collaborativo di destinazione.
Ciò evita la ridondanza e assicura un maggiore controllo sulla distribuzione dei dati.
I file ancorati rimangono soggetti a un doppio controllo: sia i diritti della posizione originale sia quelli dello spazio collaborativo devono consentire l'azione. In questo modo uno spazio non può ampliare indirettamente le autorizzazioni definite dal proprietario del file.
Questa logica si applica anche alle posizioni esterne: un amministratore può collegare una directory esistente del server a una condivisione o a uno spazio collaborativo senza importarla in una struttura di storage specifica dell'applicazione.
👉 Vedi: Concetto dei file ancorati e Posizione esterna
Diritti e governance
Delega governata e condivisione nidificata
In Sync-in, la condivisione costituisce una delega persistente di diritti. Una condivisione creata a partire da un'altra condivisione registra il proprio genitore diretto e può concedere soltanto le autorizzazioni disponibili tramite tale genitore. È possibile percorrere ricorsivamente i discendenti, che vengono eliminati a cascata insieme al ramo da cui dipendono.
Questa struttura gerarchica mantiene governabili le condivisioni nidificate: i proprietari e i gestori degli spazi collaborativi possono esaminare, modificare o revocare le condivisioni discendenti anche quando l'accesso è stato nuovamente delegato tramite più membri.
👉 Vedi: Sovranità, Gestione delle condivisioni negli spazi collaborativi e Gestione delle condivisioni figlie.
Governance degli spazi collaborativi e visibilità operativa
Gli spazi collaborativi prevedono il ruolo di gestore, responsabile della supervisione di file, membri, condivisioni e autorizzazioni associate allo spazio.
La governance comprende anche la gestione dei file ancorati, con regole rigorose che garantiscono che i diritti originali associati al file rimangano invariati, anche quando l'ancoraggio viene amministrato a livello dello spazio.
Questo approccio offre agli spazi collaborativi una governance chiara e pronta all'uso, con un modello esplicito di responsabilità.
Anche quando un file viene condiviso o ancorato altrove, il relativo utilizzo dello storage rimane attribuito alla sua posizione originale. Le quote mantengono così un modello chiaro di responsabilità, indipendente dai diversi contesti dai quali si accede al file.
👉 Vedi: Gestione degli spazi collaborativi
Separazione e revocabilità degli accessi
Sync-in separa i tipi di accesso in base al loro utilizzo: utenti interni, ospiti, link per ospiti, gruppi, client WebDAV, applicazione desktop e strumenti da riga di comando. Questa separazione consente di applicare a ogni contesto il livello di accesso appropriato senza esporre inutilmente l'account principale.
WebDAV può utilizzare password per applicazioni dedicate, che possono essere revocate, avere una scadenza ed essere tracciate. L'applicazione desktop e i client di sincronizzazione da riga di comando utilizzano un proprio meccanismo di registrazione: richiedono un'autenticazione iniziale e una riautenticazione periodica e rimangono soggetti agli stessi principi di revoca, scadenza e tracciabilità.
Negli ambienti sensibili è possibile limitare la visibilità di utenti e gruppi. Ciò riduce l'individuazione non necessaria degli account e consente di creare spazi di collaborazione maggiormente compartimentati.
Sync-in può inoltre integrarsi con meccanismi di autenticazione standard come OIDC o LDAP e, quando necessario, rafforzare gli account con l'MFA. Queste opzioni completano il modello di accesso senza sostituire le regole interne relative ad autorizzazioni, condivisione e tracciabilità.
Coerenza tra i metodi di accesso
Coerenza applicativa
I meccanismi principali di Sync-in (autorizzazioni, blocchi, WebDAV, sincronizzazione, condivisioni, ancoraggi e attività) si basano sugli stessi servizi applicativi. Questa organizzazione evita comportamenti divergenti in base al metodo di accesso utilizzato: interfaccia web, WebDAV, client di sincronizzazione, editor collaborativo o API.
Questa coerenza consente alla piattaforma di evolvere senza duplicare le regole di sicurezza né moltiplicare i percorsi di esecuzione specifici per ciascun protocollo.
Blocco unificato
Il sistema di blocco unificato garantisce la coerenza transazionale e l'integrità dei file nell'intera piattaforma, indipendentemente dal metodo di accesso utilizzato: interfaccia web, WebDAV, client di sincronizzazione, editor collaborativi o API.
L'implementazione di questo sistema assicura una gestione deterministica degli accessi simultanei mediante la serializzazione delle operazioni, evitando così qualsiasi corruzione dello stato ed eliminando i conflitti causati da scritture simultanee.
👉 Vedi: Gestione dei blocchi dei file
Sincronizzazione ottimizzata e integrata
Sync-in offre un sistema nativo di sincronizzazione dei file, ottimizzato e coerente con l'interfaccia web.
Si basa sulle API esistenti per garantire un comportamento uniforme in termini di controllo, sicurezza e tracciabilità.
La gestione ottimizzata delle operazioni di copia e spostamento riduce l'utilizzo della rete.
Questa funzionalità comprende inoltre meccanismi avanzati quali ripresa automatica dei trasferimenti, simulazione della sincronizzazione, protezione dalla perdita di dati, filtraggio tramite espressioni regolari...
La sincronizzazione privilegia quindi la sicurezza operativa quanto la velocità: la simulazione preliminare, la ripresa dei trasferimenti, la protezione dalla perdita di dati e l'ottimizzazione degli spostamenti limitano sia gli errori sia i trasferimenti superflui.
👉 Vedi: Sincronizzazione
Implementazione nativa del protocollo WebDAV
Mentre altre soluzioni si affidano a librerie esterne (come sabre-dav in PHP), Sync-in offre una propria implementazione di WebDAV, pienamente conforme alla RFC 4918 e sviluppata in TypeScript.
Questa scelta tecnica garantisce supporto nativo, prestazioni ottimizzate e una perfetta integrazione nel modello di sicurezza globale della piattaforma.
👉 Vedi: WebDAV