Jaki byłby odpowiednik AWS z bazą danych czasu rzeczywistego Firebase?

84

W tej chwili pracuję nad nowym projektem gry, który będzie składał się z front-endu React Native i zaplecza opartego na Lambdzie. Aplikacja wymaga pewnych funkcji czasu rzeczywistego, takich jak aktywne rekordy użytkowników, geofencing itp.

Patrzyłem na bazę danych czasu rzeczywistego Firebase, która wygląda na naprawdę eleganckie rozwiązanie do synchronizacji danych w czasie rzeczywistym, ale nie sądzę, aby AWS miało coś podobnego.

Trzy opcje, które przychodzą mi do głowy w przypadku „bezserwerowego” czasu rzeczywistego przy użyciu tylko usług AWS, to:

Opcja 1: AWS IoT Messaging over WebSockets

To jest dość oczywiste, zarządzane połączenie WebSockets przez IoT SDK. Myślałem o wyzwalaniu Lambd w odpowiedzi na zdarzenia przychodzące i wychodzące i po prostu używać WebSockets jako warstwy czasu rzeczywistego, budując niestandardową logikę obsługi na kliencie aplikacji, tak jak zwykle.

Wadą tego rozwiązania, przynajmniej w porównaniu z Firebase, jest to, że będę musiał sam obsługiwać dane w zdarzeniach, co doda kolejną warstwę zarządzania na szczycie WebSockets i będzie musiało zostać ujednolicone z warstwą danych API w sklepach aplikacji .

Plusy:

  • Skalowalne dwukierunkowe połączenie w czasie rzeczywistym

Cons:

  • Działa tylko wtedy, gdy aplikacja jest otwarta
  • Należy zaimplementować strukturę wiadomości
  • Zarządzanie wieloma warstwami transportowymi

Opcja 2: ponowne pobieranie wyzwalane przez push

Inną opcją jest użycie powiadomień wypychanych jako wyzwalaczy w czasie rzeczywistym, ale użycie zwykłego żądania HTTP do bramy API, aby faktycznie uzyskać zaktualizowany ładunek.

Podoba mi się to podejście, ponieważ trzyma się tylko jednej warstwy transportowej i jednego źródła prawdy dla stanu aplikacji. Będzie również wyzwalać aktualizacje, gdy aplikacja nie jest otwarta, ponieważ są to powiadomienia push.

Wadą jest to, że jest to dużo niestandardowej pracy z potencjalnie trudnymi mapowaniami między powiadomieniami push a danymi, które należy pobrać.

Plusy:

  • Powiadomienia push działają nawet wtedy, gdy aplikacja jest zamknięta
  • Pojedyncze źródło prawdy, warstwa transportowa

Cons:

  • Najbardziej niestandardowe rozwiązanie
  • Będzie obejmować znacznie więcej żądań HTTP

Opcja 3: Cognito Sync To jest dla mnie nowsza i nie jestem pewien, czy rzeczywiście można się z nim połączyć z serwera.

Cognito Sync oferuje synchronizację stanu użytkownika. na różnych urządzeniach z obsługą trybu offline i jest częścią zestawu Cognito SDK, którego i tak będę używać. Wygląda na to, że właśnie tego szukam, ale nie mogłem znaleźć żadnych rozstrzygających dowodów na to, czy można zmodyfikować lub „uruchomić” aktualizacje z AWS, a nie tylko z jednego z urządzeń.

Plusy:

  • Zapewnia abstrakcyjny model danych w czasie rzeczywistym
  • Połączono z rekordami użytkowników Cognito OOTB

Cons:

  • Nie jestem pewien, czy można go zmodyfikować lub zaktualizować z Lambdas


Zastanawiam się, czy ktoś ma doświadczenie w pracy w czasie rzeczywistym na AWS w ramach architektury opartej na Lambdzie i czy masz opinię na temat tego, jaki jest najlepszy sposób postępowania?

BarakChamo
źródło
Czy zastanawiałeś się nad zaimplementowaniem gry w aplikacji internetowej Firebase , np. Przy użyciu ReactFire , zamiast zaimplementowania „funkcji Firebase ” w AWS?
matsev
Tak, ale korzystamy z wielu usług świadczonych przez AWS w ramach naszej infrastruktury, a Firebase rozwiązuje tylko warstwę transportową, reszta jest lepiej obsługiwana przez AWS w tym przypadku, w przeciwnym razie ReactFire byłby świetną opcją.
BarakChamo
Nie jestem pewien, czy ma to zastosowanie w Twoim przypadku użycia, ale Elasticache Redis ma usługę PubSub, z której możesz skorzystać. Prawdopodobnie dużo niestandardowej logiki.
Adam Owczarczyk
Cognito Sync jest dobre do przechowywania spersonalizowanych danych użytkownika i można z nim korzystać z wyzwalacza AWS Lambda, który działa absolutnie dobrze w Twoim przypadku użycia.
Ankit Pise
Uważam, że ten artykuł Google Cloud porównujący AWS Mobile Hub i Firebase jest bardzo przydatny: cloud.google.com/docs/compare/aws/mobile
MatthewThomasGB,

Odpowiedzi:

44

Zadałem podobne pytanie działowi wsparcia AWS i to była ich odpowiedź.

Moje pytanie do nich:

Jaka jest grupa usług AWS (jeśli to możliwe), które dają taki sam DBaaS w czasie rzeczywistym w przeglądarce jak Firebase?

AWS Cognito wydaje się być świetnym rozwiązaniem dla kont użytkowników. Czy jest coś podobnego dla części WebSockets / bazy danych czasu rzeczywistego?

Ich odpowiedź:

Jeśli chodzi o Twoje pytanie, Firebase jest najbliżej usługi AWS AWS MobileHub. Możesz sprawdzić więcej szczegółów poniżej na temat mobilehub z poniższego linku.

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

„AWS Cognito wydaje się być świetnym rozwiązaniem dla kont użytkowników. Czy jest coś podobnego do części WebSockets / bazy danych czasu rzeczywistego?”

Amazon Dynamodb to szybka i elastyczna usługa bazy danych NoSQL dla wszystkich aplikacji, które wymagają spójnych, jednocyfrowych milisekund opóźnienia w dowolnej skali. Jest to w pełni zarządzana baza danych w chmurze, która obsługuje modele sklepów z dokumentami i kluczową wartością. Elastyczny model danych, niezawodna wydajność i automatyczne skalowanie przepustowości sprawiają, że doskonale nadaje się do zastosowań mobilnych, internetowych, gier, technologii reklamowych, IoT i wielu innych.

Amazon Dynamodb można dodatkowo zoptymalizować dzięki Amazon DynamoDB Accelerator (DAX), który jest w pełni zarządzaną, wysoce dostępną pamięcią podręczną, która może skrócić czas odpowiedzi Amazon DynamoDB z milisekund do mikrosekund, nawet przy milionach żądań na sekundę.

Aby uzyskać więcej informacji, zapoznaj się z poniższą dokumentacją.

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

Jeśli masz dodatkowe pytania, nie wahaj się i daj mi znać.

Dzięki.

Z poważaniem,

Tayo O. Amazon Web Services

Sprawdź Centrum wiedzy wsparcia AWS, bazę wiedzy zawierającą artykuły i filmy, które odpowiadają na pytania klientów dotyczące usług AWS: https://aws.amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category

Podczas badania tej odpowiedzi również znalazłem to, wygląda interesująco:

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

Ciekawe są również komentarze do tego artykułu.

Jacob Wakeem: Jaką przewagę ma to podejście nad używaniem aws iot? Wygląda na to, że iot ma wszystkie te funkcje bez pisania ani jednej linii kodu i przy architekturze bezserwerowej.

Sam Dengler: Zarządzana funkcja PubSub w usłudze AWS IoT jest również dobrym podejściem do aplikacji opartych na wiadomościach, tak jak to zostało przedstawione w artykule. W przypadku Elasticache (Redis) klienci korzystający z Pub / Sub zazwyczaj używają również Redis jako magazynu danych do innych zastosowań, takich jak buforowanie, tabele wyników itp. W związku z tym można również używać ElastiCache (Redis) z usługą AWS IoT wyzwalając funkcję AWS Lambda za pośrednictwem silnika reguł AWS IoT. W zależności od architektury aplikacji opartej na komunikatach i sposobu wykorzystania danych jedno rozwiązanie może być lepiej dopasowane niż drugie.

Quang Van
źródło
14

Sprawdź AWS AppSync, aby uzyskać dostęp do niektórych z tych funkcji w czasie rzeczywistym i offline przy użyciu różnych źródeł danych, w tym wyszukiwania i obliczeń w bazach danych.

Richard
źródło
6

AWS Amplify to nowoczesna odpowiedź AWS na Firebase.

Najszybszy sposób tworzenia aplikacji mobilnych i internetowych

AWS Amplify to platforma programistyczna do tworzenia bezpiecznych, skalowalnych aplikacji mobilnych i internetowych. Ułatwia uwierzytelnianie użytkowników, bezpieczne przechowywanie danych i metadanych użytkowników, autoryzowanie selektywnego dostępu do danych, integrację uczenia maszynowego, analizę metryk aplikacji i wykonywanie kodu po stronie serwera. Amplify obejmuje pełny przepływ pracy w zakresie tworzenia aplikacji mobilnych, od kontroli wersji, testowania kodu po wdrożenie produkcyjne, i łatwo skaluje się wraz z Twoją firmą od tysięcy użytkowników do dziesiątek milionów. Biblioteki Amplify i CLI, część Amplify Framework, są open source i oferują wtyczkowy interfejs, który umożliwia dostosowywanie i tworzenie własnych wtyczek.

mahemoff
źródło
Spróbował tego. Poważnie brakuje. Nie polecaj. Trzymaj się Firestore. Amplify nawet nie wspomina o SLA (dotyczy konta usługi, jeśli nie masz umowy, to tylko 99%, co jest złe) ani o maksymalnej liczbie połączeń ani o tym, jak to działa na dużą skalę. Ubogi. Ponadto nie ma wtyczki Typescript do obsługi rzeczy po stronie serwera, takich jak firebase-admin.
Oliver Dixon
Amplify nie jest, amplify wszystko według mnie komplikuje.
Tim
0

Wiem, że to stare pytanie, ale obecnie AWS oferuje AppSync ... usługę, która niszczy Firebase RDB pod każdym względem

sercasti
źródło