Короткий ответ
Высокая доступность — это свойство системы оставаться доступной для пользователей большую часть времени (измеряется в проценте времени работы), а отказоустойчивость — это способность системы продолжать работать корректно даже при отказе отдельных компонентов, без видимого простоя.
Как это работает подробнее
высокая доступность достигается за счёт резервирования (несколько инстансов, несколько зон доступности) и быстрого переключения при сбое, а отказоустойчивость требует, чтобы отказ одного узла не приводил к потере функциональности или данных — система продолжает отвечать корректно, хотя бы с деградацией.
Пример / кейс
Сервис развёрнут в трёх зонах доступности с балансировщиком нагрузки. Одна зона падает.
Ожидаемое поведение: балансировщик health-check обнаруживает нездоровые инстансы и перестаёт направлять на них трафик, оставшиеся две зоны продолжают обслуживать запросы без ошибок для пользователя — это и есть отказоустойчивость, а не просто "высокая доступность на бумаге".
Что использовать на практике
- Практический подход. HA часто измеряют через SLA/аптайм, но сама цифра аптайма не говорит о качестве деградации при сбоях — система может быть "доступна", но отвечать ошибками. Отказоустойчивость проверяют через намеренное отключение компонентов (chaos-эксперименты) и наблюдение, что происходит с пользовательским опытом.
Подводные камни
- Частые ошибки. Считать, что раз в SLA указано 99.9%, система автоматически отказоустойчива; путать резервирование (есть запасной инстанс) с реальной проверкой, что переключение на него работает; не учитывать cascading failures, когда отказ одного компонента валит остальные.