Qual seria o equivalente da AWS ao Firebase Realtime Database?

Estou trabalhando em um novo projeto de jogo no momento que consistirá em um front-end do React Native e um back-end baseado em Lambda. O aplicativo requer alguns recursos em tempo real, como registros de usuários ativos, cercas geográficas etc.

Eu estava olhando o banco de dados em tempo real do Firebase, que parece uma solução realmente elegante para sincronização de dados em tempo real, mas não acho que a AWS tenha algo parecido.

As três opções em que eu poderia pensar em tempo real "sem servidor" usando apenas os serviços da AWS são:

Opção 1: AWS IoT Messaging over WebSockets

Essa é bastante óbvia, uma conexão gerenciada de WebSockets por meio do IoT SDK. Eu estava pensando em acionar o Lambdas em resposta a eventos de entrada e saída e apenas usar o WebSockets como a camada em tempo real, criando uma lógica de manipulação personalizada no cliente do aplicativo, como faria normalmente.

A desvantagem disso, pelo menos em comparação com o Firebase, é que terei que lidar com os dados nos eventos, o que adicionará outra camada de gerenciamento sobre os WebSockets e terá que ser padronizado com a camada de dados API nas lojas do aplicativo .

Prós:

Conexão em tempo real bidirecional escalável

Contras:

Só funciona quando o aplicativo está abertoA estrutura da mensagem precisa ser implementadaMúltiplas camadas de transporte a serem gerenciadas

Opção 2: buscar novamente acionado por push

Outra opção é usar as notificações por push como gatilhos em tempo real, mas use uma solicitação HTTP regular para o API Gateway para obter a carga útil atualizada.

Eu gosto dessa abordagem porque ela adere a apenas uma camada de transporte e a uma única fonte de verdade para o estado do aplicativo. Também acionará atualizações quando o aplicativo não estiver aberto, pois são notificações push.

A desvantagem é que isso é muito trabalho personalizado, com mapeamentos potencialmente difíceis entre notificações push para os dados que precisam ser buscados.

Prós:

As notificações por push funcionam mesmo quando o aplicativo está fechadoFonte única da verdade, camada de transporte

Contras:

Solução mais personalizadaEnvolverá muito mais solicitações HTTP em geral

Opção 3: Cognito Sync Isso é mais recente para mim e não tenho certeza se ele pode realmente ser conectado com o servidor.

O Cognito Sync oferece sincronização de estado do usuário. em todos os dispositivos, com suporte offline e faz parte do Cognito SDK que usarei de qualquer maneira. Parece exatamente o que estou procurando, mas não consegui encontrar nenhuma evidência conclusiva sobre se é possível modificar ou "acionar" atualizações da AWS e não apenas de um dos dispositivos.

Prós:

Fornece um modelo de dados abstratos em tempo realConectado aos registros de usuário do Cognito OOTB

Contras:

Não tenho certeza se pode ser modificado ou atualizado a partir do Lambdas


Gostaria de saber se alguém tem experiência em trabalhar em tempo real na AWS como parte de uma arquitetura baseada em Lambda e se você tem uma opinião sobre qual é a melhor maneira de proceder?

questionAnswers(3)

yourAnswerToTheQuestion