Задача следующая: предоставить доступ к 16Gb данных (около 220 отдельных кусков поставляемых по отдельности и используемые самостоятельно. Что-то похожее на видео клип) для 30млн. пользователей (да, аудитория большая).
Каждый пользователь должен иметь возможность скачать любую из частей по-отдельности, но должен быть лишен возможности передавать доступ своей части иному лицу. (что-то вроде уникальных URL для каждого пользователя).
Так же перед отдачей каждого из кусков 10% данных должны быть зашифрованы асинхронными ключами. (где-то 20мб для каждого пользователя)
По специфике сервиса, один пользователь в 80% случаев свою часть будет скачивать только разово. 15% дважды и менее 5% более 2х раз.
Проблематика: мы даже представить не можем нагрузку, но аналитики подсказывают что со старта будет около 50 тыс. пользователей с 10-15% приростом в неделю в течении 3х мес. Потом даже и не знаем на каком уровне все останется.
Вопрос: можно ли как-то прикрутить под эти задачи Amazon or Azure?
Нам бы не хотелось закупать оборудование, хотим аренду мощностей для шифрованная и отдаче контента.
Спасибо.
P.s. Даже и не спрашивайте что это за сервис и почему такие условия.
Appengine.
Куски можно хранить в виде блобов, доступ можно раделить с помощью встроенной аутентификации (по кукам).
Если хотите доступ разграничить по уникальным урлам, тоже не проблема.
Шифровать можно и самим перед отправкой, или положится на https.
16 гигов — не объем, 50 к пользователей — детский трафик. Для таких объемов влезете в бесплатные квоты, если напишете все по уму.
>Так же перед отдачей каждого из кусков 10% данных должны быть зашифрованы асинхронными ключами. (где-то 20мб для каждого пользователя)
зашифровка ассиметричным алгоритмом довольно ресурсоёмкая операция, тем более для таких объёмов. Для 30 миллионов пользователей при длине ключа 1024 бита для каждого видеофрагмента объём ключей будет практически 4 гб. Это, конечно, не так много, но тем не менее четверть от вашего контента.
Я бы посмотрел на возможность зашифровки видео симметричным алгоритмом, а передачу ключа осуществить с помощью ассинхронного алгоритма.