Se i dati che si pianifica di migrare sono corretti, è necessario correggere se si esegue o meno una migrazione. Dati errati = dati inutili.
Le migrazioni sono rischiose, è vero. Ma lo sono anche tutti i principali progetti IT. Esistono modi per mitigare i rischi e dovrebbero essere pianificati in anticipo in una migrazione.
In primo luogo, dovresti sempre avere un modo per tornare al sistema come è adesso. Le seconde migrazioni dovrebbero essere eseguite sui server di prova impostati solo per la migrazione. È folle fare una migrazione senza la possibilità di testarla prima. Terzo, tutto il codice per la migrazione dovrebbe essere nel controllo del codice sorgente.
In quarto luogo, sono necessari requisiti e piani di test prima di iniziare la migrazione. Devi sapere che se avevi 1,293,687 record nel vecchio sistema, hai lo stesso nel nuovo o sai dove sono andati (magari in una tabella di eccezioni). Se stai normalizzando uno schema denormalizzato, devi calcolare il numero di record con cui dovresti finire prima di iniziare e poi controllarlo. È necessaria una documentazione che specifichi quali sono le mappature da un sistema all'altro. Ciò aiuterà le persone del tuo QA a controllare che i dati siano andati nel posto giusto.
Devi determinare come gestire i cattivi dati attuali. Cosa può essere pulito, cosa potrebbe aver bisogno di un valore in un campo obbligatorio che dice 'Sconosciuto', cosa deve essere gettato in una tabella delle eccezioni, cosa necessita di un intervento manuale da parte di un gruppo di utenti (decidere se queste due persone sono davvero un duplicato o ci sono due dottori in quella pratica con lo stesso nome, per esempio, e se è un dup i dati da scegliere quando i due record differiscono, ecc.).
La chiave per una migrazione di successo sta pianificando. Ho trovato che la pianificazione (che include la scrittura dei casi di test e dei test unitari) di solito richiede più tempo dello sviluppo effettivo.
La prossima chiave per una corretta migrazione dei dati è il QA. Questo non è un progetto da lanciare al team di QA il giorno prima del lancio. Questo non è un progetto da lanciare quando il QA afferma che c'è un problema.
Un'altra chiave per una migrazione di successo è quella di distribuire la maggior parte dei dati e testarla mentre il sistema originale è ancora in esecuzione. Se si stanno spostando molti record, ciò potrebbe richiedere molto tempo e si verificheranno nuovi cambiamenti. Quindi il tuo processo deve essere in grado di estrarre le modifiche ai dati anche dopo l'inizio della migrazione. SQL Server, per esempio, ha qualcosa chiamato Change Data Capture che può aiutare con questo. È possibile eseguire un backup del sistema originale e attivare contemporaneamente la modifica dell'acquisizione dei dati. Quindi puoi resotre il backup sul tuo server di migrazione, testare la migrazione, ottenere la maggior parte dei dati caricati e quindi devi solo caricare i record che sono stati modificati. Quando si esegue la migrazione dei record finali, disattivare il sistema di origine fino al termine della migrazione. Questo è uno dei motivi per migrare la maggior parte dei record prima del tempo, quindi l'applicazione è in minor tempo. Scegli bene il tuo tempo di migrazione, non chiudere il sistema di gestione stipendi nel giorno in cui dovrebbero elaborare le buste paga o inviare W2. E farlo durante le ore di utilizzo basse. Se si hanno più client, si potrebbe considerare di migrare prima uno e assicurarsi che tutto sia buono prima di fare gli altri. È molto più facile ripristinare i dati di un cliente di 10000 se c'è un problema. Ma pianificalo attentamente se lo fai.
Se la migrazione implica una nuova interfaccia utente, si prega di far sì che gli utenti effettivi la usino come parte del test di migrazione. Quindi istruisci gli altri utenti prima di andare in diretta (ma meno di una settimana prima di andare in diretta o se ne dimenticheranno). Gli utenti coinvolti nei test aiutano a progettare la formazione, sanno quali domande hanno e cosa le persone hanno bisogno di sapere in quale ordine. Ottieni il loro input, rendendo necessario un campo perché ritieni che non dovrebbe essere di aiuto se gli utenti di solito non hanno quei dati quando entrano nei record. Metteranno solo junk nel campo appena richiesto perché non possono ottenere i dati
altrimenti.
Guarda cosa c'è di sbagliato con i dati attuali, puoi aggiungere chiavi esterne, vincoli, trigger, regole di business nell'applicazione, valori predefiniti, ecc. per evitare che questo sia cattivo in futuro? Quando si puliscono i dati non validi, è anche necessario creare un modo per evitare che dati simili possano arrivare in futuro. Analizza il motivo per cui i dati errati sono stati assegnati e correggi i fori nella progettazione.