Вопрос проверяет системное мышление и понимание принципов построения надёжных распределённых систем.
Отказоустойчивость достигается за счёт избыточности и автоматического восстановления. Backend масштабируется горизонтально и перезапускается автоматически. Frontend разворачивается через CDN и балансировщики. Базы данных используют репликацию и бэкапы. Важно избегать единственных точек отказа.
Отказоустойчивость — это свойство системы продолжать работу при частичных сбоях.
Отказоустойчивость — способность системы сохранять работоспособность при выходе из строя отдельных компонентов.
Для backend-сервисов критичны:
Горизонтальное масштабирование
несколько инстансов
stateless-сервисы
Автоматическое восстановление
health checks
рестарты контейнеров
Изоляция ошибок
таймауты
circuit breaker
Frontend защищается иначе:
CDN
кеширование
геораспределение
Балансировка
несколько origin-серверов
failover
Наиболее чувствительный компонент:
Репликация
primary / replica
автоматический failover
Бэкапы
регулярные снапшоты
проверка восстановления
Шардинг
распределение нагрузки
снижение blast radius
устранение single point of failure
мониторинг и алерты
chaos-тестирование
Отказоустойчивость достигается не одной технологией, а комплексом архитектурных решений.