Вопрос проверяет понимание базовых архитектурных подходов к росту производительности систем.
Существует вертикальное и горизонтальное масштабирование. Вертикальное — это увеличение ресурсов одного сервера. Горизонтальное — добавление новых серверов. В распределенных системах чаще используется горизонтальное масштабирование.
Масштабирование необходимо, когда система перестает справляться с нагрузкой.
Определение:
Масштабирование — это увеличение производительности системы за счет добавления ресурсов.
Суть:
Увеличение CPU.
Увеличение памяти.
Быстрые диски.
Плюсы:
Простота реализации.
Минусы:
Ограничение железом.
Одна точка отказа.
Суть:
Добавление новых инстансов.
Балансировка нагрузки.
Плюсы:
Высокая отказоустойчивость.
Почти неограниченный рост.
Минусы:
Сложнее архитектура.
Требуется балансировщик.
Обычно:
Малые проекты — вертикальное.
Высоконагруженные системы — горизонтальное.
Горизонтальное масштабирование является основой современных распределенных систем, так как позволяет расти практически без ограничений.