У меня есть сайт обмена ссылками (думаю, Reddit). Теперь он размещен на виртуальном хостинге godaddy deluxe. Планирую перенести на aws.
Я видел веб-семинар по расширению масштабов до 10 миллионов пользователей. Но в основном это просто говорит о том, что вы не можете масштабировать по вертикали, поэтому выберите масштабирование по горизонтали с самого начала.
Мне не нужно поддерживать 10 миллионов пользователей. Предположим, мне нужно поддерживать 100 000 пользователей в день. Максимальное количество одновременных пользователей на сайте - 1000.
Пример использования
Планируемая архитектура
Я планирую масштабировать, используя этот простой метод - начните с t2.micro, по мере роста пользовательской базы просто обновите экземпляр ec2. То же самое и с экземплярами RDS.
Я знаю, что 1 EC2 или RDS делают его единственной точкой отказа. Если что-то из этого сломается, я планирую прекратить работу этого экземпляра и запустить идентичный из образа / резервной копии. Ничего страшного, если сайт отключен на 1 час каждые 30 дней.
Пожалуйста, имейте в виду, что у меня нет никого, кто мог бы мне помочь, и это сольная работа. Я могу найти кого-нибудь, кто поможет на стороне aws, если это поразит пользователей.
Очень сложно сказать, будет ли веб-приложение обрабатывать X клиентов в конкретной системе. Это сильно зависит от многих факторов, включая то, как было написано приложение, используемые фреймворки и т. Д.
Лучшим вариантом было бы найти что-то, что можно было бы использовать для тестирования / моделирования использования приложения. Поскольку у вас уже запущено веб-приложение, вы можете легко настроить экземпляр ec2 любого размера на короткий промежуток времени, запустить несколько тестов, а затем выключить его.
Возможность горизонтального масштабирования обеспечит гораздо лучший способ справиться с ростом в будущем. Что произойдет, если у сайта возникнут проблемы с более крупными экземплярами или вам потребуется масштабировать более 100 000? Вы также можете обнаружить, что простой переход к более крупным экземплярам, скорее всего, не приведет к линейному увеличению производительности.
Одна вещь, которая выделяется -
Изображения хранятся в БД.
Храните изображения и все остальное, для обработки чего серверы приложений не нужны. Поскольку вы уже используете стек AWS, S3 - очевидное место для изображений и других статических данных. Не тратьте время сервера приложений на статические ресурсы.