Data version control. Controllare la versione dei dati nei progetti

31/03/2021

I rischi del mestiere

Le cause che possono portare alla perdita di dati importanti sono le più disparate: a partire da attacchi informatici con l’intento di cifrare i dati per richiedere alla vittima un compenso economico (ransomware), fino a vere e proprie catastrofi che distruggono letteralmente i server in cui i dati sono ospitati (https://www.wired.it/internet/web/2021/03/10/incendio-data-center-ovh-strasburgo/). Non si possono dimenticare inoltre le cancellazioni involontarie in un momento di distrazione, che potrebbero far perdere intere giornate di lavoro o il pericolo derivante da furti e malfunzionamenti. 

 

Le contromisure

Con il termine backup si indica un processo di sicurezza informatica per il crash/disaster recovery. Il processo consiste nel creare una ridondanza di dati per un successivo ripristino di una o più copie di dati persi.

In questo senso il backup non è soltanto una copia di riserva di dati e informazioni, ma un  mattone fondamentale di una architettura più ampia ed articolata, che deve garantire la sicurezza del “patrimonio immateriale” e la continuità del business in caso crash o disastri. 

In Moxoff lavoriamo quotidianamente sui dati dei nostri clienti per intraprendere analisi, sviluppare modelli e costruire soluzioni. In questo contesto è fondamentale avere un piano programmato di backup sicuro, efficace, robusto e, soprattutto, monitorato costantemente. Ci sono diverse soluzioni standard, offerte da servizi cloud e corredate da software che soddisfano i requisiti di un buon piano di backup programmato. Tuttavia è compito dell’utente finale monitorare costantemente il corretto funzionamento, onde evitare spiacevoli sorprese. Oltre ad utilizzare soluzioni “pronte all’uso”, quali quelle di default dei principali cloud provider, un utente esperto potrebbe anche  progettare la propria routine di backup.  Questo rende ancora più immediato monitorare il corretto funzionamento, in quanto l’utente ha il controllo di tutto il sistema e può permettersi di adattarlo alle proprie specifiche esigenze.

In un progetto di Data Science,  il dataset è tipicamente in continua evoluzione, così come lo sono i modelli di analisi e la loro implementazione software. E’ dunque necessario non solo poter disporre di una singola copia di backup dei dati, ma anche di un sistema di controllo di versione e quindi l’equivalente di “copie multiple” che seguano le evoluzioni nel tempo dei dati stessi. Si introducono processi che non riguardano soltanto il crash/disaster recovery, ma che diventano parte delle normali attività di sviluppo, test e rilascio.  Il controllo di versione sui dati si affianca quindi al corrispondente e più usuale versioning del software. Lo sviluppo ed evoluzione di una soluzione di data science dipende infatti  dall’evoluzione congiunta della coppia formata da dati e software (algoritmi).

Uno strumento possibile è DVC (Data Version Control, https://dvc.org/). Qualunque sia lo strumento di versioning utilizzato, le caratteristiche richieste durante lo sviluppo quotidiano sono l’indipendenza rispetto alle altre scelte tecnologiche (ad es. framework/linguaggi di sviluppo, soluzione di storage etc.) e la compatibilità con  il sistema di controllo di versione del codice sorgente. In questo modo si rende riproducibile una soluzione  sia rispetto ai dati che rispetto al codice e modelli sviluppati.

In questo giorno dedicato al backup (http://www.worldbackupday.com/it/) non si può non concludere con un invito a tutti a programmare questa attività non solo nel proprio ambiente lavorativo, ma anche a livello personale, e di legarla ad un adeguato piano di crash e disaster recovery. I nostri dati sono un bene prezioso che va custodito e protetto, sempre!