StudyCode
seniorАрхитектура

Горизонтальное vs вертикальное масштабирование

Ответ

Вертикальное — сделать сервер мощнее (больше CPU/RAM): просто, код менять не надо, но есть физический потолок, цена растёт нелинейно, а сервер остаётся единой точкой отказа. Горизонтальное — добавить серверов и распределять запросы балансировщиком: масштаб почти безграничен, отказ одной машины переживается, но приложение обязано быть stateless — сессии и кэш уезжают в общие хранилища (Redis), файлы — в объектное хранилище (S3), иначе пользователь, попавший на другой сервер, «потеряет» свою сессию. Труднее всего горизонтально масштабируется база данных — реплики на чтение, шардинг; поэтому обычно масштабируют слой приложения, а БД как можно дольше растят вертикально. Практичный путь: вертикально до разумной цены, дальше — горизонтально.

JSJavaScript