Задать вопрос

Какой подход выбрать для горизонтального масштабирования?

Подскажите, как правильно масштабировать проект.
У меня в голове идеальная картина выглядит так:
Несколько одинаковых серверов, которые через балансировщик получают пользовательский трафик.
Например, 5 серверов, каждый сервер - это копия других серверов, то есть они одинаковые, запросы между ними распределяются равномерно. Если один из них падает, то система продолжает работать без него.
Почитав разные статьи я пришел к выводу, что тут есть несколько проблем:
1) Синхронизация данных, если это репликация, то могут быть задержки. Они могут быть незначительные, несколько сотен миллисекунд, но если у пользователя один запрос ушел на сервер, где есть данные, а второй на сервер, на котором нет данных, то получится каша.
2) Выходом из первой ситуации может быть одновременная запись на все сервера. То есть бэкэнд пишет сразу во все базы. Тут проблемой становится задержка, потому что во-первых, время будет расти с ростом количества серверов, если мы решим докупить еще 10 серверов, то запись на все сервера увеличиться. Во-вторых, если сервера расположены в разных дата центрах, то задержка еще более ощутима.

Я в тупике, это ведь стандартная ситуация, все масштабируются горизонтально, но внятного руководства я так и не нашел.
Мне видиться вариант с горизонтальным масштабированием идеальным, потому что во-первых, можно бесконечно докупать сервера и увеличивать мощности, во-вторых, сервера находятся в разных дата центрах, может сломаться целый дата центр, а система продолжит работать. У меня нет опыта в администрировании, подскажите как правильно масштабироваться.
PS. Вы будете спрашивать в какие ресурсы заканчиваются на сервере. В основном диск и немного процессор, но тут еще одна проблема, хотелось бы, чтобы сервера находились в разных дата центрах, потому что, например, Hetzner часто падает и это затрагивает много серверов.
  • Вопрос задан
  • 498 просмотров
Подписаться 5 Сложный 10 комментариев
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Все уже придумали до вас) 12factor

А по горизонтальному масштабированию - балансировщики тоже должны быть масштабированы)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы