Я в первую очередь разработчик веб-приложений и не очень разбираюсь в методах масштабирования / масштабируемости. Мое приложение написано на Python с использованием Django; довольно стандартная установка.
В настоящее время я использую Apache 2.2 для своего веб-сервера и MySQL для своего сервера базы данных; оба работают на одном VPS.
До сих пор это был прототип и всего 15-30 одновременных пользователей в любой момент времени; поэтому у меня не было проблем, но теперь, поскольку мы будем добавлять больше пользователей, у нас будут проблемы с производительностью.
Итак, мой вопрос: как мне масштабировать свое веб-приложение? Мой текущий план таков:
Это похоже на работоспособную стратегию? Пожалуйста, проведите меня сюда.
Вы не можете улучшить то, что не измеряете. Сначала вы должны увидеть, в чем ваше узкое место. Вы можете использовать поверх сейчас и настроить какой-то мониторинг, если вы еще этого не сделали. Если все работает хорошо, вы можете создать реалистичную нагрузку с помощью JMeter.
Я бы рекомендовал прочитать Масштабируемые Интернет-архитектуры пользователя Theo Schlossnagle. Книга описывает всю теорию и практику масштабирования приложений между серверами, обеспечения отсутствия единых точек отказа, масштабирования баз данных и т. Д.
Ваш план действительно звучит как первая ступень масштабирования. Обычно все начинается на одном сервере, затем вы разделяете сеть и базу данных, затем добавляете обратный прокси или балансировщик нагрузки, запускаете несколько веб-серверов и так далее.
Вы знаете, где ваше первое узкое место? Если нет, то как вы распределили порядок действий?
Тем не менее, если вы не сделали ничего ужасно неправильного в своем приложении, первым пределом, который вы, вероятно, достигнете, будет дисковый ввод-вывод, вызванный db, и ваша стратегия, вероятно, будет хорошим выбором.
Перенос db на другой физический диск должен очень помочь и стать вашим первым делом. Например, в зависимости от используемых вами систем не может быть никакой разницы или большой разницы между использованием второго диска на текущем хосте или переходом на полностью отдельный сервер. Вы работаете на VPS, если вы привязаны к вводу-выводу диска, переход на второй VPS, вероятно, не сильно поможет, если он использует то же хранилище (тот же диск или тот же SAN или что-то еще), но этот последний проблема, которую должен решить ваш провайдер vps.