?

Log in

No account? Create an account

Previous Entry | Next Entry

Немногие знают, что Amazon запустил, некоторое время назад, ряд интересных публичных веб сервисов для разработчиков:

  • Amazon Simple Storage Service (S3)
  • Amazon Elastic Compute Cloud (EC2)
  • Amazon Simple DB
  • Amazon Simple Queue Service (SQS)

С первым (S3 - хранение файлов) я непосредственно разбирался и работал, остальными просто интересовался. 

Amazon Simple Storage Service (S3)

Предоставляет сервис для хранения больших объемов данных (всё надёжное, распределенное и прочее и прочее) . Оплачивается хранение и трафик, плюс запросы к серверу.
Файлы могут закачиваться, скачиваться, удаляться, переименовываться,  можно создавать директории, устанавливать права доступа. Управление осуществляется через SOAP либо REST протоколы.
Полезное свойство - если я, допустим, организую сервис типа Rapidshare или  Flickr, то мне нет необходимости весь трафик пропускать через свой сервер (и создавать на него нагрузку). Через клиентское приложение делается только аутентификация и пересылаются команды. Сам трафик идёт (на выбор - HTTP, либо BitTorrent) напрямую - от пользователя к серверам Амазона (через HTTP POST), и обратно.

Ньюансы:

1.Никаких средств биллинга для файлов сервис не предоставляет. Т.е. я сам должен следить за тем, сколько скачано и закачано. Есть доступ к логам, но он не realtime и достаточно кривой. Годится скорее для последующего контроля - всё ли в порядке.
2.С точки зрения ограничения прав доступа - для файлов тоже всё весьма ограничено. По факту приходится это делать самостоятельно, просто держа в своей базе соответствие между реальными именами пользовательских файлов и секретными цифробуквенными, под которыми эти же файлы хранятся на серверах S3.

В этих двух пунктах оговорка "для файлов" (objects) означает, что наименьшими объектами достойными контроля у них считаются директории (buckets), которых может быть не более 100. Увы, такое ограничение на количество делает их использование бессмысленным для разграничения прав между пользователями приложения.

3.Служба поддержки никуда не годится. Из E-Mail'а посылают в форум, где та же девочка не может компетентно ответить на простые технические вопросы. Конкретно - проблема возникла при реализации клиента на Flex'е для работы с S3. Начиная с Flash Player версии, кажется,  9.0.24, Adobe'ы ужесточили модель безопасности (из-за чего, кстати, у народа ряд приложений перестал работать, но это уже другая тема).
Среди прочего - невозможно формировать из ActionScript'a в HTTP запросе произвольные заголовки (в т.ч. работать через сокеты), что необходимо для работы через REST (с SOAP'ом аналогично - или надо формировать заголовки, или всё только  через SSL).
Впрочем, запросы формировать можно, но для этого необходимо, чтобы на хосте к которому обращаешься (в данном случае амазоновском) был поднят Flash Socket Policy Server - простой перловый скрипт, который отвечает на строчку посланную на 843-й порт другой строчкой. Две недели пришлось эту простую мысль доводить до амазоновского саппорта. Они элементарно не хотели читать адобовские документы, ссылки на которые я им давал. В итоге кончилось отпиской, что они поняли проблему, но пока не собираются ничего с этим делать (публичную часть переписки желающие могут почитать здесь , я там писал как coddie).
Пришлось решать проблему самостоятельно - на своём сервере подняли Flash Socket Policy Server и прокси - простой php скрипт, единственная задача которого - получать от flex'ового клиента команды и повторять их Амазону.

Это все с точки зрения разработчика. С точки зрения пользователя готового клиента - открывается возможность хранения своих данных удалённо. Предположим, хранилище организовано в виде логического диска доступного в системе. Можно хранить там файлы и данные, которые будут отовсюду доступны. Причем, надежность хранения будет куда выше, чем на собственном жёстком диске. Готовое ПО для этого уже есть. Для примера можно посмотреть на плагины для Mozilla:

https://addons.mozilla.org/en-US/firefox/addon/3247
https://addons.mozilla.org/en-US/firefox/addon/6955
http://overstimulate.com/projects/s3

Amazon Elastic Compute Cloud (Amazon EC2)

Говоря человеческим языком - это хостинг. Отличие от традиционных хостингов в том, что если ваш проект оказался успешным и начала расти нагрузка, не нужно менять сервер. Конфигурация (память, процессорные мощности, объем дисков) меняется динамически. Стоимость также зависит от потребляемых ресурсов.

Amazon Simple DB

Опять же, говоря по-простому - сервер БД, типа MySQL, Postrgres и т.п. Отличия:
- Язык запросов хотя и похож местами на SQL, но очень сильно упрощён.
- Как в случае с EC2 - ресурсы масштабируются и оплачиваются взависимости от потребностей

Amazon Simple Queue Service (Amazon SQS)

Сервис обмена сообщениями (размером до 8кб, хранятся до 4 дней). Может использоваться, к примеру, для обмена данными между клиентскими частями какой-нибудь многопользовательской игры. Ну и для чатов, конечно.

Вот.

Подводя итог - всё это хорошие штуки, особенно если использовать их вместе (кстати, внутренний обмен трафиком, кажется, бесплатный) и когда Amazon'ы пошевелятся и поставят, наконец, Flash Socket Policy server.