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ávelContras:
Só funciona quando o aplicativo está abertoA estrutura da mensagem precisa ser implementadaMúltiplas camadas de transporte a serem gerenciadasOpçã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 transporteContras:
Solução mais personalizadaEnvolverá muito mais solicitações HTTP em geralOpçã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 OOTBContras:
Não tenho certeza se pode ser modificado ou atualizado a partir do LambdasGostaria 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?