Я со своей стезей, как обычно. :)

В ИТ сфере при росте нагрузки масштабирование обычно начинается с вертикального, если до этого не было подготовлено горизонтальное.

Вертикальное масштабирование (Scale Up) — это «долить бензина в тот же двигатель». Вы не покупаете новую машину, а просто меняете свечи, ставите турбину и заливаете 98-й. В серверах это значит: заменить проц на более мощный, добавить оперативки или поставить SSD быстрее. Ещё проще - просто и быстро завалить проблему деньгам.

· Плюс: Проще простого. Не надо переписывать код, всё работает как раньше, только быстрее.

· Минус: У железа есть потолок. Самый дорогой процессор всё равно не бесконечный, и когда он сгорит — сервер падает целиком (единая точка отказа). И чем мощнее железо в одной точке, тем оно дороже и дорожает оно в геометрической прогрессии, ибо большую мощность надо запихнуть на один физический кристалл\мать\юнит

Горизонтальное масштабирование (Scale Out) — это «купить ещё одну такую же машину». Вместо одного монстра вы берёте 100 дешёвых мини-компьютеров и объединяете их в кластер.

· Плюс: Теоретически бесконечно. Сломался один из 100 — остальные 99 продолжают работать (отказоустойчивость).

· Минус: Адский геморрой с архитектурой. Приложения нужно специально писать под «распределённость», синхронизировать данные (это боль) и настраивать балансировщик нагрузки.

Главная метафора для запоминания:

· Вертикаль — это лошадь. Можно накормить её до размера слона, но даже дом она все равно не сдвинет.

· Горизонталь — это упряжка из 100 пони. Сложно управлять, но безлимитным количеством пони можно хоть города передвигать.