Воодушевлённый недавней конференцией TechEd и Windows Azure, полез считать сколько будет стоить разместить 150Gb моих драгоценных фоточег там.
Получилось, что если хранить данные в одном регионе, то за 1Gb надо заплатить $0.93. $139.5 в месяц. Что-то много.
Смотрим Google Cloud Storage. Там $0.063 за Reduced availability storage (читай архив), что уже не плохо, но при желании всё это скачать, придётся заплатить $0.12 per Gb + плата за реквесты. В итоге, хранение дёшево, но скачивание дорого, хоть и надо редко.
Ищем дальше.
Что есть у Amazon. Там есть S3 и Glacier. S3 предназначен также для частого доступа. На его базе можно сделать свой собственный Dropbox. Кажется, на его базе Dropbox и сделан :)
В S3 есть reduced redundancy storage за $0.093 и ... хмм Glacier storage за $0.01 per Gb. На этом стоит остановиться и посмотреть внимательнее.
Действительно, первое, что бросается в глаза — это супер-низкая стоимость хранения. За 150Gb моих фоточег в год надо будет заплатить всего $18. Такая дешевизна, судя по отрывочной инфе, достигается за счёт специально организованного и произведённого хранилища, где диски крутятся медленно и отключаются от питания, если не задействованы. Эдакое сонное царство ну или вековой ледник. Во всём этом ледяном великолепии кроется одна большая засада — сложность и высокая стоимость извлечения данных.
Для того, чтобы рассчитать оптимальную (в идеале нулевую) стоимость скачивания, надо сломать мозг об их алгоритм рассчёта. Во-первых, надо заплатить за выкачиваемый объём по цене $0.120 per Gb или $18 за все 150Gb, что, в общем, не много, но это далеко не всё. Чтобы что-то скачать, надо отправить запрос на извлечение данных, который будет выполнятся от 3-х до 5 часов. Вот это извлечение может быть очень дорогим. Бесплатно в месяц можно извлечь 5% от среднемесячного объёма. Другими словами, чтобы скачать бесплатно всё, надо потратить 20 месяцев. Кхм... Ну хорошо, так и быть. Если приспичит скачать всё и сразу, придётся выложить порядка $270. Wow-wow-wow. Это главная засада. Если хочется всё скачать, то придётся запастись терпением. Скачивать всё, вероятно, придётся редко. Только в случае тотальной потери всех жёстких дисков, на которых записаны фоточки, а фоточки у меня записаны сразу на 2 диска.
Итак, представим, что мы хотим извлечь 0.5Gb данных. Запрос на их извлечение будет выполняться какое-то время, но для расчёта стоимости всегда берётся 4 часа. Вычисляем пиковую часовую нагрузку на извлечение так 0.5 / 4 = 0.125Gb per hour. Далее надо вычесть из этого бесплатные месячные 5%, но в дневном потреблении. 150 * 0.05 = 7.5Gb per month / 30 days = 0.25Gb per day. Это число надо поделить на количество часов, в течение которых выполнялось извлечение за этот день. Будем считать, что мы отправляем пять запросов в день и длятся они 20 часов, то есть делим ещё на 20. 0.25 / 20 = 0.0125Gb или 12 мегабайт. Всё-таки этот сервис предназначен для больших компаний, а они хранят сотни терабайт.
Тем не менее, с учётом бесплатного объёма, часовая пиковая оплачиваемая нагрузка на извлечение равна 0.05Gb - 0.0125Gb = 0,0375Gb. Умножаем на стоимость извлечения гигабайта $0.01 и количество часов в месяце 720 и получаем счёт = $0.27. Если мы умудримся не вылезать за эту пиковую часовую нагрузку, то сможем скачать всё достаточно дёшево за 150Gb / 0.5Gb = 300 запросов на скачиваение. Если представить, что мы делаем 4 запроса в день, то получим 75 дней или 60 дней, если делаем 5. В итоге, чтобы всё скачать дёшево, нам потребуется 3 месяца.
Ещё немного об «особенностях».
- Если хочется скачать всё, то лучше размазывать это всё по целому количеству месяцев от начала до конца (в моём случае 3), поскольку если мы что-то долго качали один месяц и немного не уложились и скачали хотя бы что-то в другом, то заплатим как за два.
- Все незавершённые запросы на извлечение суммируются, то есть если мы шлём следующий запрос на извлечение, пока один не завершился, то рискуем нарваться на увеличенную пиковую нагрузку, поэтому отправляем следующий запрос только тогда, когда предыдущий завершился. Это и не даёт нам считать, что мы сможем отправлять 6 запросов по 4 часа в день. Запрос может исполняться долше.
- Надо не забыть заплатить $0.050 за каждую 1000 запросов на извлечение и загрузку.
- Надо заранее разбить все свои данные на архивы оптимального размера, потому что если мы загрузим все 150Gb одним архивом, у нас не получится так хитро его разбить. Придётся запрашивать все 150 и успеть скачать его за сутки. Поэтому надо ещё придумать механизм архивирования и разбивания файлов на архивы, а потом ещё и восстановления их из этих архивов. Кроме того, список этих архивов с их Id надо хранить где-то отдельно. Скажем, в спредшите Google docs :) чтобы было совсем всё в облаке.
В общем, несмотря на то, что механизм подсчёта стоимости услуг амазона всегда выглядит как некоторая игра с кучей ловушек, этим можно попробовать воспользоваться.
Попробуем разобраться с их API в следующий раз.
UPD. У меня оказалось 150Gb фотографий вместо 30 :)
Ссылки:
Glacier Pricing http://aws.amazon.com/glacier/#pricing
Pricing FAQ http://aws.amazon.com/glacier/faqs/#How_much_data_can_I_retrieve_for_free
Pricing forum thread https://forums.aws.amazon.com/message.jspa?messageID=374065#374065