2015-01-05 3 views
4

Я строю свой первый приложение, которое использует внешнюю базу данных для хранения данных ..мобильных приложений: RESTful API или SDK dynamodb

И я борюсь со следующим вопросом: Как соединиться с моей базе данных: использовать SDK Amazon DynamoDB для Android или создать успокоительный api на основе NodeJS на моем собственном сервере, который передает данные DynamoDB?

Я очень новичок в этом, и когда я просматриваю интернет, я вижу амазонку, предлагающую использовать SDK.

Проблема только в том, что если я хочу изменить структуру данных в функции, какие проблемы будут испытывать мои пользователи с текущими версиями приложения? И безопасно ли сохранять мои ключи Amazon внутри приложения (потому что люди могут декомпилировать приложение)?

С другой стороны, мне нужно заплатить за дополнительный сервер, который обрабатывает соединения между моим приложением и DynamoDB. Итак ... это того стоит?

Так что я очень борюсь с этим .... Что вы, ребята, думаете?

ответ

8

Я хотел бы получить прямой доступ из вашего мобильного приложения в DynamoDB. Это позволит вам значительно упростить ваше приложение: вам не нужно поддерживать, управлять, защищать средний слой, AWS делает это для вас. Вы также сэкономите на стоимости запуска вашей пары серверов NodeJS, балансировщика нагрузки и т. Д.

Вы не должны хранить ключи доступа/секретные ключи в своем приложении, а использовать службу AWS Cognito Identity для динамического получения ключей доступа и секретные ключи для сеанса пользователя. Эти ключи будут ограничены в зависимости от того, какое разрешение вы определяете для своих пользователей Cognito и ограничены во времени (по умолчанию - 15 минут).

Cognito работает со сторонними поставщиками идентификационных данных для аутентификации пользователей (Facebook, Google, Amazon, openID connect или собственный бэкэнд), а также может работать с не прошедшими проверку пользователями.

Подробнее о Cognito: http://aws.amazon.com/cognito/ Подробнее о Cognito ID для Android мобильных приложений: http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-auth.html

+0

Благодарим вас за полный и ясный ответ :) И ответ, который я надеялся на ха-ха, экономит мне некоторое время, чтобы настроить приложение узла для среднего слоя. Я посмотрю на Когнито! –

1

Я не уверен, что принятый ответ будет завершена, потому что не признает случаи использования, и он не решает вопрос спросил, «что, если я хочу изменить структуру данных». Ну, если у вас устаревшие клиенты и измените структуру данных документов в базе данных nosql, эти клиенты не смогут получить к ней доступ. Я не считаю, что DynamoDB предлагает платформу промежуточного программного обеспечения для поддержки такой адаптации старой модели к новой. Вам придется принудительно обновить свои клиенты.

На самом деле существует множество операций, помимо пользовательских разрешений (которые Cognito делает хорошо), как это, для чего вам может понадобиться промежуточное ПО. Возможно, вы хотите, чтобы логика сортировки выполнялась во время запроса и не поддерживала копию этой логики сортировки в каждом клиентском приложении.

Вопрос «стоит ли это», вероятно, зависит от сложности вашего приложения и отношения ваших пользователей с данными (т. Е. Если слой презентации в основном просто обертывает данные), а затем напрямую обращайтесь к DynamoDB. уровень презентации - это не просто данные, а возможно, вы должны использовать специальное промежуточное программное обеспечение). По правде говоря, я наткнулся на этот вопрос, проведя собственный анализ затрат и результатов, и не знаю, какой подход я возьму. Еще один важный фактор заключается в том, что я могу в будущем переключать решения для баз данных. Это будет сложнее обновлять на каждом клиенте, если мои клиенты будут напрямую обращаться к БД.

Единственный определенный вывод, который я достиг, заключается в том, что вы должны использовать промежуточное программное обеспечение где-то в вашей системе, чтобы вы могли максимально разделить поставщика базы данных либо из логики клиента, либо с логики сервера, например. в мобильном приложении: writeToDatabase (данные Data) {writeToDynamo (данные);}

Для достижения этой цели, AWS предлагает использовать Amazon Api Шлюз в качестве прокси-сервера для служб AWS, и даже имеет Premade конфигурации для Amazon API шлюза для себя как прокси-сервер AWS.

Смежные вопросы