Возможный дубликат:
Можете ли вы помочь мне с планированием моей мощности?
Моя команда создала отличное приложение django, и теперь оно будет развернуто на экземпляре EC2. Теперь есть несколько вопросов, на которые я ищу ответы:
Я знаю, что ответы на эти вопросы очень субъективны и многое зависит от дизайна и архитектуры приложения. Поэтому мне больше интересно узнать о процессе принятия таких решений.
Вы указали для себя в конце вопроса, что невозможно дать прямой и объективный ответ на ваш вопрос, кроме «это зависит от обстоятельств», поэтому я постараюсь помочь, основываясь на моем (не обширном) опыт использования AWS.
Как мне решить, какой экземпляр подходит для моего приложения (микро, маленький, средний, большой и т. Д.). Другими словами, как я могу узнать, сколько памяти / вычислительной мощности требуется для этого приложения.
Путем тестирования, тестирования, экспериментирования. Есть несколько статей, указывающих на то, что EC2 неэффективен по сравнению с "эквивалентными" характеристиками оборудования от других поставщиков (этот хороший). Я предлагаю создать среду с учетом ваших предположений и отслеживать, проводить нагрузочные тесты, тестировать производительность ваших экземпляров, экспериментировать с новыми экземплярами и решать, какой из них лучше всего соответствует требованиям вашего приложения. Без дополнительных деталей вашей архитектуры это лучший ответ, который вы могли бы получить.
Как я могу подсчитать максимальное количество одновременных пользователей на моем сервере. Это важно для этого приложения, мне нужно знать, сколько пользователей будет поддерживаться микро / малым / средним или большим экземпляром.
Опять же, это сильно зависит от архитектуры вашей системы и профиля ваших транзакций. Они интенсивны по вводу-выводу, связаны ли они с процессором или памятью? Лучший совет - экспериментируйте.
Должен ли я использовать все, что установлено на одном экземпляре, или у меня должен быть отдельный экземпляр для базы данных, резервных копий и приложения.
Я рекомендую иметь отдельные экземпляры для каждого уровня вашего приложения. Типичная настройка на AWS будет включать экземпляры EC2 (за Elastic Load Balancer или нет) (или Elastic Beanstalk) для вашего приложения, другой набор экземпляров EC2 или RDS для вашей базы данных, S3 для сохранения файлов и резервных копий и т. Д. . Если вы не ожидаете огромной (или даже не умеренной) нагрузки, одиночный, medium
экземпляр может идеально соответствовать вашим потребностям. Основная причина разделения состоит в том, что вы можете масштабировать их независимо в будущем. Это, IMHO, лучшее преимущество AWS: гибкость. Вы можете масштабировать свою систему RDS одним щелчком мыши (почти буквально). Вы также можете без особых усилий добавить Elastic Load Balancer перед своим веб-уровнем, а затем добавить 2 или 3 дополнительных веб-сервера в свою экосистему. Итак, я бы держал вещи отдельно, чтобы максимизировать и использовать эту гибкость.
Как я могу оценить дополнительные ресурсы, необходимые при добавлении каждого пользователя (я думаю, это не будет линейным)
Эксперименты, сравнительный анализ и т. Д. Извините за повторяемость, но когда вы начнете развертывать свои ресурсы, вы поймете, что все в порядке. действительно не является линейным, и что ваши ожидания не всегда могут оправдаться при использовании AWS. Следуя нескольким простым советам (например, ответу, который я дал для предыдущего пункта), не гарантируется, что ваша система будет легко масштабироваться в соответствии с вашей нагрузкой, но, вероятно, все будет менее болезненно, когда вам нужно масштабировать.
Надеюсь, поможет.