Яким буде AWS, еквівалентний Firebase Realtime Database?


85

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

Я розглядав реальну базу даних Firebase, яка виглядає справді елегантним рішенням для синхронізації даних у режимі реального часу, але я не думаю, що AWS має щось подібне.

Три варіанти, які я міг би придумати для "безсерверного" реального часу з використанням лише служб AWS:

Варіант 1: Обмін повідомленнями AWS IoT через WebSockets

Це цілком очевидно, кероване з’єднання WebSockets через IoT SDK. Я думав запустити Lambdas у відповідь на вхідні та вихідні події, а просто використовувати WebSockets як рівень реального часу, будуючи власну логіку обробки на клієнті програми, як зазвичай.

Недоліком цього, принаймні порівняно з Firebase, є те, що мені доведеться обробляти дані в подіях самостійно, що додасть ще один рівень управління поверх WebSockets, і мені доведеться стандартизувати рівень даних API у магазинах програми. .

Плюси:

  • Масштабоване двонаправлене з’єднання в режимі реального часу

Мінуси:

  • Працює лише тоді, коли програма відкрита
  • Потрібно впровадити структуру повідомлень
  • Кілька транспортних шарів, якими потрібно керувати

Варіант 2: Повторне отримання за допомогою натискання

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

Мені подобається такий підхід, оскільки він дотримується лише одного транспортного рівня та єдиного джерела істинності для стану програми. Він також запускатиме оновлення, коли програма не буде відкрита, оскільки це push-сповіщення.

Недоліком є ​​те, що це багато настроюваної роботи з потенційно складними зіставленнями між push-сповіщеннями до даних, які потрібно отримати.

Плюси:

  • Push-сповіщення працюють, навіть коли додаток закрито
  • Єдине джерело істини, транспортний рівень

Мінуси:

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

Варіант 3: Синхронізація Cognito Це для мене новіше, і я не впевнений, чи насправді його можна пов’язати із сервером.

Cognito Sync пропонує синхронізацію стану користувача. на всіх пристроях із підтримкою в автономному режимі та є частиною Cognito SDK, який я все одно буду використовувати. Це звучить як саме те, що я шукаю, але не зміг знайти переконливих доказів того, чи можна змінити або "активувати" оновлення з AWS, а не лише з одного з пристроїв.

Плюси:

  • Забезпечує абстраговану модель даних у режимі реального часу
  • Підключено до записів користувачів Cognito OOTB

Мінуси:

  • Не впевнений, чи можна змінити чи оновити з Lambdas


Цікаво, чи є у кого-небудь досвід роботи в режимі реального часу на AWS як частині архітектури, заснованої на лямбді, і чи є у вас думка щодо того, який найкращий спосіб продовжити?


Ви думали впровадити гру у веб- програмі 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

Відповіді:


45

Я задав подібне запитання до служби підтримки AWS, і це була їхня відповідь.

Моє запитання до них:

Яка група служб AWS (якщо це можливо), щоб надати тим самим DBaaS в режимі реального часу, як Firebase?

AWS Cognito, здається, чудово підходить для облікових записів користувачів. Чи є щось подібне для частини WebSockets / DB реального часу?

Їх відповідь:

До вашого запитання Firebase найближче до служби AWS AWS MobileHub. Нижче ви можете ознайомитися з детальною інформацією про mobilehub за посиланням нижче.

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

"AWS Cognito, здається, чудово підходить для облікових записів користувачів. Чи є щось подібне для частини WebSockets / DB реального часу?"

Amazon Dynamodb - це швидкий та гнучкий сервіс баз даних NoSQL для всіх програм, які потребують послідовної однозначної затримки в мілісекундах у будь-якому масштабі. Це повністю керована хмарна база даних і підтримує як документи, так і моделі сховищ ключ-значення. Завдяки гнучкій моделі даних, надійній роботі та автоматичному масштабуванню пропускної спроможності вона чудово підходить для мобільних, веб-ігор, рекламних технологій, IoT та багатьох інших додатків.

Amazon Dynamodb можна додатково оптимізувати за допомогою Amazon DynamoDB Accelerator (DAX), який є повністю керованим, високодоступним кешем в пам’яті, який може зменшити час відгуку Amazon DynamoDB з мілісекунд до мікросекунд, навіть при мільйонах запитів в секунду.

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

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

Якщо у вас виникнуть додаткові запитання, не соромтеся повідомляти мене.

Дякую.

З найкращими побажаннями,

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

Ознайомтесь із Центром знань служби підтримки AWS, базою знань статей та відео, що відповідають на запитання клієнтів про послуги 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 за допомогою механізму правил AWS IoT. Залежно від того, як побудована програма на основі повідомлень та як використовуються дані, одне рішення може бути кращим, ніж інше.


14

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


6

AWS Amplify - це сучасна відповідь AWS на Firebase.

Найшвидший спосіб створення мобільних та веб-додатків

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


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

На мій погляд, Amplify - ні, amplify робить все складним.
tim


0

Я знаю, що це старе запитання, але в наш час AWS пропонує AppSync ... послугу, яка знищує Firebase RDB у всіх аспектах

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.