Cosa si intende per aggiornamento continuo nello sviluppo del software?

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:

  1. 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.
  2. 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.