Hay una distinción importante entre hacer que un servicio esté altamente disponible y hacer que una máquina individual esté altamente disponible.
En la mayoría de los casos, el objetivo es hacer que el servicio esté altamente disponible, y la disponibilidad de máquinas individuales es solo un medio para lograr ese objetivo. Sin embargo, existe un límite en cuanto a la meta que puede alcanzar al mejorar la disponibilidad de máquinas individuales.
Incluso si pudiera eliminar todo el tiempo de inactividad debido a la necesidad de actualizar el software, las máquinas individuales aún no estarán 100% disponibles. Por lo tanto, para aumentar la disponibilidad del servicio por encima de la disponibilidad de máquinas individuales, debe diseñar la redundancia en un nivel superior. La última oración de tu pregunta muestra que al menos en principio lo sabes.
Si diseña un servicio para que esté más disponible de lo que las máquinas individuales pueden ofrecer, ya no hay presión para lograr una alta disponibilidad de máquinas individuales. Por lo tanto, para servicios altamente disponibles no hay necesidad de evitar reinicios. En cambio, puede sacrificar cierta confiabilidad de las máquinas individuales para ahorrar, lo que puede destinarse a otras áreas donde puede obtener ganancias mucho más altas en confiabilidad.
Una vez que el sistema de alto nivel está diseñado para ser confiable en el caso de que los componentes individuales del hardware fallen, el parcheo en vivo de los cambios del núcleo pasa de ser una ventaja a convertirse en un riesgo.
Es un riesgo porque puede haber diferencias sutiles entre el comportamiento de una máquina que fue parcheada en vivo y una máquina que se inició con la última versión del kernel. Esto puede introducir un error latente que puede causar una interrupción la próxima vez que se reinicia una máquina. Este riesgo se amplifica reiniciando para obtener una pizarra limpia que se vea como un método para mitigar algunas interrupciones.
Un día podría tener una interrupción en la que cree que reiniciar la máquina podría ayudar. Pero a medida que reinicia, se encuentra con el error latente que impide que la máquina vuelva al estado deseado. El parcheo en vivo no es la única forma en que puede ocurrir un error latente, también podría ocurrir debido a algo tan mundano como un servicio que se ha habilitado manualmente y nunca configurado para iniciarse durante el arranque, o que se ha configurado para iniciarse demasiado temprano de modo que no aparece debido a dependencias insatisfechas.
Por esas razones, un servicio altamente disponible puede ser más fácil de lograr con reinicios regulares de máquinas individuales a una velocidad lo suficientemente lenta como para detectar problemas y pausar la secuencia de reinicios una vez que los problemas ocurren.