Вертикальное и горизонтальное масштабирование
Вопрос
Объясните разницу между вертикальным и горизонтальным масштабированием и когда что выбирать.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Вертикальное: мощнее машина, код не меняется, есть предел и единая точка отказа
Горизонтальное: больше узлов, нужен stateless или распределённое состояние
Stateless-сервисы приложения масштабируют горизонтально в первую очередь
БД часто сначала масштабируют вертикально и репликами, шардирование позже
Горизонтальное даёт отказоустойчивость, но добавляет сложность
Что могут спросить следом
- Как сделать сервис stateless?
- Когда вертикального уже не хватит для БД?
Разбор
Вертикальное масштабирование: даём машине больше ядер, памяти, быстрые диски. Код не меняется, но есть потолок самой большой машины и одна точка отказа. Горизонтальное: ставим больше одинаковых узлов за балансировщиком. Оно почти безлимитно и даёт отказоустойчивость, но требует stateless: сессии, файлы, кеш выносим наружу. Поэтому сервисы приложения масштабируют горизонтально сразу. С базой иначе: сначала вертикально и реплики для чтения, это дёшево и просто. Шардирование только когда запись или объём не помещаются в один лидер, потому что оно усложняет транзакции и запросы между шардами.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.