Conosco l'aggiornamento continuo solo nel contesto delle applicazioni distribuite; non sono sicuro che le tue domande riguardino lo stesso o no. Nel contesto delle applicazioni distribuite, l'aggiornamento continuo permette all'applicazione di essere aggiornata senza alcun tempo morto. Con l'aggiornamento continuo, i sistemi vengono aggiornati in modo sequenziale: l'istanza dell'applicazione viene scaricata sul sistema, l'applicazione viene aggiornata sul sistema e poi aggiunta nuovamente al cluster. Gli stessi passi sono seguiti su tutti i sistemi nel cluster su cui l'applicazione distribuita è in esecuzione. Una volta che tutti i nodi sono aggiornati, l'intera applicazione è considerata aggiornata.
Le sfide dal punto di vista della progettazione (se si sta sviluppando il supporto per l'aggiornamento continuo in un'applicazione distribuita) sono principalmente:
- Come assicurare che l'istanza aggiornata su un sistema sia in grado di comunicare con un'altra istanza in esecuzione su un sistema diverso con una versione precedente.
- Altre sfide sarebbero le stesse dell'aggiornamento di un'applicazione standalone (rispetto a quella distribuita).
Con le applicazioni scalabili-distribuite della nuova era e il requisito di avere zero downtime, è quasi una necessità che l'applicazione supporti il rolling upgrade. Se cercate il rolling upgrade nel contesto di una qualsiasi applicazione distribuita (diciamo MongoDB, Cassandra), credo che troverete i vostri esempi.