Способы использования собственного хранилища данных в популярной BaaS

Мы разрабатываем приложение, которое требует, чтобы клиент (мобильное устройство) отправлял файлы размером 5 МБ или более на серверный компонент для обработки, и мы хотели бы получить некоторые советы по следующему:

Есть ли способ объединить платформу Backend-as-a-Service (BaaS) с нашим собственным хранилищем данных (размещенным в нашем конкретном случае в AWS)? По сути, мы бы предпочли, чтобы файлы от клиента отправлялись непосредственно в нашу собственную базу данных в облаке, а не хранились на серверах BaaS.
Другими словами, нам нужна платформа BaaS или решение, позволяющее разделить/обойти ее функцию хранения данных, чтобы мы могли использовать BaaS только для остальных его функций (таких как аутентификация клиента, REST API и т. д.).
У нас есть собственные серверы в EC2, которые необходимы для основной части обработки файлы и нужна только платформа BaaS для удобства, которая запустит наше приложение за короткий промежуток времени. Перенос файлов из собственного хранилища данных платформы BaaS на серверы EC2 в большинстве случаев приведет к общей задержке, а также дополнительным затратам на пропускную способность.


person Fotis Hantzis    schedule 18.08.2012    source источник


Ответы (1)


Я столкнулся с подобной дилеммой при создании своего приложения. В моем случае мне нужно было где-то загружать и хранить фотографии, загруженные пользователями, И я не хотел сам создавать серверную часть. Итак, я решил использовать Amazon S3 для хранения фотографий, загруженных пользователем, и использовать SimpleDB, поскольку он предлагал мне большую гибкость и простоту использования, чем использование серверной части MySQL. Теперь, очевидно, SimpleDB не является платформой Backend-as-a-Service, но я искал такое же удобство, как и вы.

Итак, я предлагаю вам использовать платформу Backend-as-a-Service, такую ​​как Parse (которая имеет отличный модель freemium), CloudMine (еще один отличный сервис, но с жесткими ограничениями модели freemium, т. е. только 500 бесплатных пользователей в месяц) или Kinvey (которая позиционирует себя как первая платформа BaaS, у меня мало информации о ней, но она определенно стоит взгляд). И используйте S3 для хранения данных. Таким образом, вы можете использовать BaaS для аутентификации клиента, REST API и т. д., как вы упомянули, и вы можете продолжать использовать S3. Все, что вам нужно сделать, это создать соответствующую схему именования для ваших корзин и объектов S3, чтобы вы могли легко определить, какой объект принадлежит какому пользователю, это можно легко сделать с помощью схемы именования на основе префикса (поскольку S3 не предлагает возможность создавать подпапки в ведрах). Теперь, когда вам нужно получить некоторую информацию о клиенте, вы можете позвонить в свою BaaS с данными, аутентифицированными клиентом, и всякий раз, когда вам нужен доступ к вашему хранилищу данных, вы можете позвонить в S3, используя Android SDK, предоставленный AWS, для получения объектов которые принадлежат этому конкретному пользователю. Поскольку вы планируете использовать EC2 для обработки этих файлов, перенос этих файлов из S3 в EC2 не должен стоить вам дополнительной пропускной способности (здесь я могу ошибаться, потому что я не изучал это, но, насколько я помню, передача данных в AWS бесплатно).

Дайте мне знать, если у вас возникнут дополнительные вопросы.

person Vishwa Patel    schedule 18.08.2012
comment
Вы также можете использовать поставщика BaaS, который предлагает готовые расширения API, чтобы вы могли размещать свою пользовательскую логику в их инфраструктуре (что делает их похожими на поставщика PaaS). CloudMine, например, предлагает это. Вы можете написать собственное приложение на JavaScript или любом языке JVM (например, JRuby или Java). Может сэкономить вам еще больше денег и предоставить вам то, что вам нужно. См. cloudmine.me/docs/custom-code. - person Marc W; 18.08.2012
comment
Спасибо за ответ! Вот еще один актуальный вопрос: stackoverflow.com/questions/12047815/ - person Fotis Hantzis; 21.08.2012