Qu’est-ce que l’on entend par une mise à niveau roulante dans le développement de logiciels ?


Je connais le rolling upgrade dans le contexte des applications distribuées uniquement ; je ne sais pas si vos questions se rapportent au même sujet ou non. Dans le contexte des applications distribuées, la mise à niveau roulante permet à l'application d'être mise à niveau sans aucun temps d'arrêt. Avec la mise à niveau continue, les systèmes sont mis à niveau de manière séquentielle : l'instance de l'application est vidée sur le système, l'application est mise à niveau sur le système et ensuite réintroduite dans le cluster. Les mêmes étapes sont suivies sur tous les systèmes du cluster sur lesquels l'application distribuée est exécutée. Une fois que tous les nœuds sont mis à niveau, l'ensemble de l'application est considérée comme mise à niveau.


Les défis du point de vue de la conception (si vous développez un support pour la mise à niveau progressive dans une application distribuée) sont principalement :

  1. Comment s'assurer que l'instance mise à niveau sur un système est capable de communiquer avec une autre instance fonctionnant sur un système différent avec une version plus ancienne.
  2. Les autres défis seraient les mêmes que pour la mise à niveau d'une application autonome (par rapport à une application distribuée).

Avec les applications distribuées évolutives du nouvel âge et l'exigence d'un temps d'arrêt nul, il est presque une nécessité que l'application prenne en charge la mise à niveau roulante. Si vous recherchez la mise à niveau roulante dans le contexte de l'une des applications distribuées (disons MongoDB, Cassandra), je crois que vous trouverez vos exemples.


.