Questa è la mia prima domanda quindi, per favore, indica se la mia domanda è troppo vaga e non comprensibile. La mia domanda è più legata al Design di alto livello. Abbiamo un sistema (in particolare uno chassis ATCA) configurato in una topologia a stella, con Master Node (MN) e altri nodi sub-ordinate (SN) . Tutti i nodi sono connessi via Ethernet e devono essere eseguiti su SO Linux con altre applicazioni proprietarie.
Devo creare un Framework design di recupero in modo che qualsiasi entità software, sia che si tratti di Linux, Ramdisk o di un'applicazione, può tornare alle versioni precedenti se si verifica qualcosa di brutto.
Quindi penso di mantenere una Matrice di versione di stato su MN, in cui ogni stato (1,2 ... n) rappresenta Good Kernel, Ramdisk e versioni di applicazione per ogni SN. Può accadere che una versione SN possa dipendere dalla versione di altri SN. Si prega di vedere lo schema seguente: -
Quindi sono in dilemma se utilizzare la metodologia di gestione dei pacchetti utilizzata dalle distribuzioni di Debian (come Ubuntu) o dalla metodologia del repository GIT; per fare un Rollback alle precedenti versioni valide su uno SN o su tutti i SN dipendenti. Il metodo dovrebbe anche essere più semplice per l'aggiornamento di SN insieme ai MN.
Alcune delle funzionalità che sto cercando di ottenere: -
1) L'upgrade di una singola entità software è ottenibile senza ostacolare gli altri.
2) I controlli di dipendenza devono essere eseguiti prima di applicare il rollback o l'aggiornamento su ciascuno dei SN
3) Il prompt utente deve essere fornito nel caso in cui la dipendenza non funzioni. Se l'utente continua a eseguire il rollback, tutti gli SN dovrebbero ricevere notifiche per il rollback delle proprie versioni (se necessario).
4) I file binari dovrebbero essere distribuiti su SN di conseguenza in modo che il processo di recupero sia più veloce; preferisco sempre ogni volta da MN.
5) Rilascio di patch dallo sviluppatore per correzioni di errori, l'ottimizzazione delle funzionalità può essere applicata al sistema in esecuzione.
6) Ogni versione può essere facilmente rintracciabile e distinguibile.
Grazie