Что могло бы быть эквивалентом AWS для базы данных Firebase Realtime?

84

В настоящий момент я работаю над новым игровым проектом, который будет состоять из интерфейса React Native и серверной части на основе Lambda. Приложению требуются некоторые функции реального времени, такие как записи активных пользователей, геозоны и т. Д.

Я смотрел на базу данных Firebase Realtime, которая выглядит как действительно элегантное решение для синхронизации данных в реальном времени, но я не думаю, что у AWS есть что-то подобное.

Я мог придумать 3 варианта "бессерверного" реального времени с использованием только сервисов AWS:

Вариант 1. Обмен сообщениями AWS IoT через WebSockets

Это совершенно очевидно: управляемое соединение WebSockets через IoT SDK. Я думал о запуске Lambdas в ответ на входящие и исходящие события и просто использовать WebSockets в качестве уровня реального времени, создавая настраиваемую логику обработки на клиенте приложения, как обычно.

Обратной стороной этого, по крайней мере, по сравнению с Firebase, является то, что мне придется самостоятельно обрабатывать данные в событиях, что добавит еще один уровень управления поверх WebSockets и должен быть стандартизирован с уровнем данных API в хранилищах приложений. .

Плюсы:

  • Масштабируемое двунаправленное соединение в реальном времени

Минусы:

  • Работает только когда приложение открыто
  • Структура сообщения должна быть реализована
  • Управление несколькими транспортными уровнями

Вариант 2. Повторная выборка, запускаемая нажатием кнопки

Другой вариант - использовать push-уведомления в качестве триггеров в реальном времени, но использовать обычный HTTP-запрос к шлюзу API, чтобы фактически получить обновленную полезную нагрузку.

Мне нравится этот подход, потому что он придерживается только одного транспортного уровня и единственного источника достоверной информации о состоянии приложения. Он также будет запускать обновления, когда приложение не открыто, поскольку это Push-уведомления.

Обратной стороной является то, что это много настраиваемой работы с потенциально сложными сопоставлениями между push-уведомлениями и данными, которые необходимо получить.

Плюсы:

  • Push-уведомления работают, даже когда приложение закрыто
  • Единый источник истины, транспортный уровень

Минусы:

  • Наиболее индивидуальное решение
  • Будет задействовано намного больше HTTP-запросов в целом

Вариант 3: Cognito Sync Это новее для меня, и я не уверен, что с ним действительно можно взаимодействовать с сервера.

Cognito Sync предлагает синхронизацию состояния пользователя. на всех устройствах с автономной поддержкой и является частью Cognito SDK, который я все равно буду использовать. Это похоже на то, что я ищу, но не смог найти убедительных доказательств того, что можно изменять или «запускать» обновления из AWS, а не только с одного из устройств.

Плюсы:

  • Предоставляет абстрактную модель данных в реальном времени
  • Подключено к пользовательским записям Cognito OOTB

Минусы:

  • Не уверен, можно ли изменить или обновить с помощью Lambdas


Мне интересно, есть ли у кого-нибудь опыт работы в режиме реального времени на AWS в рамках архитектуры на основе Lambda и есть ли у вас мнение о том, как лучше всего действовать?

БаракЧамо
источник
Рассматривали ли вы возможность реализовать игру в веб-приложении Firebase , например, с помощью ReactFire , вместо реализации «функций Firebase» на AWS?
matsev
У меня есть, но мы используем многие сервисы, которые AWS предоставляет как часть нашей инфраструктуры, а Firebase решает только транспортный уровень, остальное лучше обрабатывается AWS в этом случае, иначе ReactFire был бы отличным вариантом.
BarakChamo
Не уверен, применимо ли это к вашему варианту использования, но в Elasticache Redis есть служба PubSub, которую вы могли бы использовать. Вероятно, много нестандартной логики.
Адам Овчарчик
Cognito Sync хорош для хранения персонализированных данных пользователя, и с ним можно использовать триггер AWS Lambda, который идеально подходит для вашего варианта использования.
Ankit Pise
Я нашел эту статью об облаке Google, в которой сравниваются AWS Mobile Hub и Firebase, очень полезной: cloud.google.com/docs/compare/aws/mobile
MatthewThomasGB,

Ответы:

44

Я задал аналогичный вопрос службе поддержки AWS, и это был их ответ.

Мой вопрос к ним:

Какая группа сервисов AWS (если это возможно) позволяет той же самой DBaaS в браузере в реальном времени ощущать себя как Firebase?

AWS Cognito отлично подходит для учетных записей пользователей. Есть ли что-нибудь подобное для части WebSockets / БД реального времени?

Их ответ:

На ваш вопрос Firebase ближе всего к сервису AWS AWS MobileHub. Вы можете узнать больше о mobilehub, перейдя по ссылке ниже.

https://aws.amazon.com/mobile/details/ https://aws.amazon.com/mobile/getting-started/

«Кажется, AWS Cognito отлично подходит для учетных записей пользователей. Есть ли что-нибудь подобное для части WebSockets / БД реального времени?»

Amazon Dynamodb - это быстрая и гибкая служба баз данных NoSQL для всех приложений, которым требуется постоянная задержка в миллисекундах в однозначном масштабе в любом масштабе. Это полностью управляемая облачная база данных, поддерживающая модели хранилищ документов и ключей. Его гибкая модель данных, надежная производительность и автоматическое масштабирование пропускной способности делают его идеальным для мобильных, веб-приложений, игр, рекламных технологий, Интернета вещей и многих других приложений.

Amazon Dynamodb можно дополнительно оптимизировать с помощью Amazon DynamoDB Accelerator (DAX), который представляет собой полностью управляемый, высокодоступный кэш в памяти, который может сократить время отклика Amazon DynamoDB с миллисекунд до микросекунд, даже при миллионах запросов в секунду.

Для получения дополнительной информации см. Документацию ниже.

https://aws.amazon.com/dynamodb/getting-started/ https://aws.amazon.com/dynamodb/dax/

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

Благодарю.

С уважением,

Тайо О. Веб-службы Amazon

Посетите Центр знаний AWS Support, базу знаний, содержащую статьи и видеоролики, которые отвечают на вопросы клиентов об услугах AWS: https://aws.amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category

Также, исследуя этот ответ, я обнаружил, что это выглядит интересно:

https://aws.amazon.com/blogs/database/how-to-build-a-chat-application-with-amazon-elasticache-for-redis/

Интересны и комментарии к этой статье.

Джейкоб Ваким: Какие преимущества у этого подхода перед использованием aws iot? Кажется, что у iot есть все эти функции без написания единой строчки кода и с бессерверной архитектурой.

Сэм Денглер: Управляемая функция PubSub в сервисе AWS IoT также является хорошим подходом к приложениям, основанным на сообщениях, как показано в статье. С Elasticache (Redis) клиенты, которые используют Pub / Sub, обычно также используют Redis в качестве хранилища данных для других вариантов использования, таких как кэширование, списки лидеров и т. Д. С учетом вышесказанного вы также можете использовать ElastiCache (Redis) с сервисом AWS IoT. путем запуска функции AWS Lambda через механизм правил AWS IoT. В зависимости от архитектуры приложения, основанного на сообщениях, и того, как используются данные, одно решение может быть лучше, чем другое.

Куанг Ван
источник
14

Ознакомьтесь с некоторыми из этих функций в реальном времени и офлайн с помощью AWS AppSync с использованием различных источников данных, включая поиск в базах данных и вычисления.

Ричард
источник
6

AWS Amplify - это современный ответ AWS на Firebase.

Самый быстрый способ создания мобильных и веб-приложений

AWS Amplify - это платформа разработки для создания безопасных масштабируемых мобильных и веб-приложений. Это упрощает аутентификацию пользователей, безопасное хранение данных и метаданных пользователей, авторизацию выборочного доступа к данным, интеграцию машинного обучения, анализ показателей приложений и выполнение кода на стороне сервера. Amplify охватывает весь рабочий процесс разработки мобильных приложений от контроля версий, тестирования кода до производственного развертывания и легко масштабируется вместе с вашим бизнесом от тысяч пользователей до десятков миллионов. Библиотеки Amplify и интерфейс командной строки, часть Amplify Framework, имеют открытый исходный код и предлагают подключаемый интерфейс, который позволяет настраивать и создавать свои собственные подключаемые модули.

Mahemoff
источник
Пробовал. Сильно не хватает. Не рекомендую. Придерживайтесь Firestore. Amplify даже не упоминает SLA (это касается учетной записи службы, если у вас нет соглашения, это плохо только на 99%), или каково максимальное количество подключений, или как это работает в масштабе. Бедных. Кроме того, нет плагина Typescript для таких серверных вещей, как firebase-admin.
Оливер Диксон
Amplify, на мой взгляд, все усложняет.
Тим
0

Я знаю, что это старый вопрос, но в настоящее время AWS предлагает AppSync ... службу, которая разрушает Firebase RDB во всех аспектах.

серкасти
источник