Я работаю над приложением для смартфона, для которого потребуется серверная веб-служба, но я совершенно не знаю, сколько это будет стоить.
Веб-сервис будет обрабатывать:
- логин пользователей
- каталогизация нашей пользовательской базы
- хранение минимальной информации профиля для пользователей (единственные двоичные данные - это отображаемое изображение размером <20 КБ каждое)
- выполнение очень незначительных вычислений / алгоритмов перед возвратом результатов
- Все вышесказанное будет передано на сервер со смартфона (iPhone / BlackBerry / Android).
Требования к пропускной способности:
- Мы хотим обслуживать до 10 тысяч пользователей в течение дня.
- Я прогнозирую 10 тыс. * 50 HTTP-запросов в день = 500 000 запросов в день * 30 = 15 миллионов запросов в месяц.
Требования к пространству: - Данные будут в базе данных SQL.
- Я предполагаю, что 1 МБ на пользователя * 10 КБ = 10 ГБ + накладные расходы. Другими словами - космос - не большая проблема.
Требования к программному обеспечению: (если кто-то не знает альтернативы)
- Windows Server 2008 + IIS
- MSFT SQL Server
Примечание. Для меня это 100% новость, так что ударьте меня всем, что у вас есть. Нужен ли мне Windows Server или есть альтернатива? Лучше получить несколько дешевых серверов для распределения нагрузки? Подойдет ли мне Amazon S3? Как насчет Windows Azure?
РЕДАКТИРОВАТЬ примечание: на данный момент - меня больше беспокоят СТОИМОСТЬ и то, как эта стоимость будет масштабироваться. Итак, если вы дадите рекомендации по обслуживанию, не могли бы вы приблизительно оценить, сколько будут стоить эти требования?
Спасибо!!
Вы можете попробовать виртуальный сервер с Amazon (или любым другим облачным провайдером). Вы можете начать с небольшого экземпляра, а затем увеличивать его по мере необходимости. Стоимость зависит от размера инстанса и пропускной способности, поэтому ее относительно легко оценить. Стоимость лицензии Windows включена. Я не уверен насчет MSSQL, но с ним могут быть и предварительно созданные виртуальные устройства, в этом случае вам не нужно будет покупать полную лицензию, и вы будете платить за использование. Надеюсь это поможет.
Azure справится с этим. Видеть Windows Azure для получения подробной информации и бесплатной пробной версии. У меня нет версии для iPhone, но вот статья о том, как создать приложение как это для windows phone 7
это действительно открытый вопрос. ;-)
Это зависит от многих вещей. Вот мой взгляд на решение таких проблем:
1) Архитектура. Многие проблемы масштабирования, с которыми вы столкнетесь, будут определяться тем, как вы сейчас проектируете приложение. Знание сильных и слабых сторон языка, на котором вы пишете, среды, которую вы используете, и базовой ОС / серверов, на которых вы размещаете, очень важно.
2) Сколько времени в среднем уходит на выполнение запроса без нагрузки? Каково ваше соглашение об уровне обслуживания в отношении того, сколько времени должны занимать запросы?
3) Как приложение обрабатывает нагрузку? В какой момент (количество запросов в секунду на сервер) вы наблюдаете снижение производительности?
4) Сегментировали ли вы свое приложение на слои, которые можно масштабировать отдельно друг от друга? (т.е. у вас есть уровень БД, уровень сервера приложений и уровень хранения?)
5) Какой у вас бюджет?
Судя по тому, что вы опубликовали, вы получаете около 6 запросов в секунду. Я бы начал с одного блока приложений, одного блока БД и одного ящика для хранения если вам нужно место для хранения. Бросьте на него груз, посмотрите, что сломается. Постепенно увеличивайте количество пользователей, и вы увидите части кода, которые захотите оптимизировать, или вы можете добавить больше блоков, когда приложение испытывает проблемы.
Поскольку это ваш первый набег, я бы почти предложил использовать полностью управляемый хостинг - они смогут помочь с масштабированием серверной части.
Удачи!