Вопросы масштабируемости и отказоустойчивости распределённого приложения

Каждый единственный экземпляр — точка отказа, а разделение по сети само по себе не даёт масштабируемости. Нужны резервирование, балансировка и устранение локального состояния users-api.

Короткий ответ

Что ответить на собеседовании

Каждый единственный экземпляр — точка отказа, а разделение по сети само по себе не даёт масштабируемости. Нужны резервирование, балансировка и устранение локального состояния users-api.

Подробный разбор

Ответ с пояснениями

Условие

Состав системы:

  1. webApp — клиентская часть
  2. users-api — серверный сервис, обслуживающий пользователей
  3. DB — хранилище пользовательских данных Все элементы работают в единственном экземпляре. Несмотря на то, что приложение распределено, оно не готово к масштабированию. Опишите, какие недостатки могут возникнуть при таком дизайне, и предложите варианты улучшения (масштабирование, обеспечение отказоустойчивости, балансировка нагрузки и т.п.).

Ответ

Каждый единственный экземпляр — точка отказа, а разделение по сети само по себе не даёт масштабируемости. Нужны резервирование, балансировка и устранение локального состояния users-api.

Статику webApp можно отдавать через CDN или несколько серверов. Users-api масштабируют за балансировщиком, используя readiness, timeouts, ограничение конкуренции и общее хранение сессий. Для БД нужны резервные копии с проверкой восстановления и продуманное переключение на реплику; репликация не заменяет backup. Перед добавлением реплик API измеряют насыщение БД и общий пул соединений. Между узлами остаются сетевые отказы, поэтому retries должны быть ограниченными, а изменяющие операции — идемпотентными.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее