Существует важное различие между высокой доступностью услуги и высокой доступностью отдельной машины.
В большинстве случаев цель состоит в том, чтобы сделать сервис высокодоступным, а доступность отдельных машин является лишь средством достижения этой цели. Однако есть предел того, насколько далеко вы можете достичь цели, улучшая доступность отдельных машин.
Даже если вы можете устранить все простои из-за необходимости обновления программного обеспечения, отдельные машины все равно не будут доступны на 100%. Таким образом, чтобы увеличить доступность сервиса выше доступности отдельных машин, вы должны спроектировать избыточность на более высоком уровне. Последнее предложение вашего вопроса показывает, что по крайней мере в принципе вы это знаете.
Если вы разрабатываете услугу, которая будет более доступной, чем отдельные машины, вам больше не нужно будет добиваться высокой доступности отдельных машин. Таким образом, для высокодоступных сервисов нет необходимости избегать перезагрузок. Вместо этого вы можете пожертвовать некоторой надежностью отдельных машин, чтобы сэкономить средства, которые могут быть направлены на другие области, где вы можете получить гораздо более высокий прирост надежности.
Как только система высокого уровня спроектирована так, чтобы быть надежной в случае сбоя отдельных компонентов оборудования, исправление ядра в реальном времени превращается из преимущества в риск.
Это риск, потому что могут быть тонкие различия между поведением машины, которая была исправлена, и машиной, которая была загружена с последней версией ядра. Это может привести к скрытой ошибке, которая может вызвать сбой при следующей перезагрузке компьютера. Этот риск усиливается перезагрузкой, чтобы получить чистый лист, который рассматривается как способ смягчения некоторых сбоев.
Однажды у вас может произойти сбой, когда вы думаете, что перезагрузка машины может помочь. Но когда вы перезагружаетесь, вы получаете скрытую ошибку, которая не позволяет машине вернуться в нужное состояние. Активное исправление не единственный способ, которым может происходить такая скрытая ошибка, она может также произойти из-за чего-то такого, как обычная служба, которая была включена вручную и никогда не была настроена на запуск во время загрузки, или была настроена на слишком ранний запуск, так что она не подходит из-за неудовлетворенных зависимостей.
По этим причинам высокодоступный сервис может быть на самом деле легче обеспечить с помощью регулярных перезагрузок отдельных машин с достаточно медленной скоростью, чтобы вы могли обнаруживать проблемы и приостанавливать последовательность перезагрузок, когда проблемы возникают.