¿Qué significa una actualización continua en el desarrollo de software?

Conozco la actualización continua sólo en el contexto de las aplicaciones distribuidas; no estoy seguro de si sus preguntas se refieren a lo mismo o no. En el contexto de las aplicaciones distribuidas, la actualización continua permite que la aplicación se actualice sin ningún tiempo de inactividad. Con la actualización continua, los sistemas se actualizan de forma secuencial: la instancia de la aplicación se vacía en el sistema, la aplicación se actualiza en el sistema y luego se añade de nuevo al clúster. Se siguen los mismos pasos en todos los sistemas del clúster en los que se ejecuta la aplicación distribuida. Una vez que todos los nodos están actualizados, se considera que toda la aplicación está actualizada.

Los retos desde la perspectiva del diseño (si se está desarrollando el soporte para la actualización continua en una aplicación distribuida) son principalmente:

  1. Cómo asegurar que la instancia actualizada en un sistema es capaz de comunicarse con otra instancia que se ejecuta en un sistema diferente con una versión anterior.
  2. Otros retos serían los mismos que para la actualización de una aplicación independiente (en lugar de distribuida).

Con las aplicaciones distribuidas escalables de la nueva era y el requisito de no tener tiempo de inactividad, es casi una necesidad que la aplicación soporte la actualización continua. Si buscas rolling upgrade en el contexto de cualquiera de las aplicaciones distribuidas (digamos MongoDB, Cassandra), creo que encontrarás tus ejemplos.