realtime dynamodb aws appsync amazon-web-services firebase-database firebase-realtime-database real-time aws-lambda aws-iot

amazon-web-services - aws - dynamodb vs firebase



¿Cuál sería el equivalente de AWS a Firebase Realtime Database? (3)

Estoy trabajando en un nuevo proyecto de juego en este momento que consistirá en un front-end React Native y un back-end basado en Lambda. La aplicación requiere algunas características en tiempo real, como registros de usuarios activos, geofencing, etc.

Estaba mirando la base de datos en tiempo real de Firebase que parece una solución realmente elegante para la sincronización de datos en tiempo real, pero no creo que AWS tenga nada parecido.

Las 3 opciones que se me ocurren para el tiempo real "sin servidor" utilizando solo los servicios de AWS son:

Opción 1: AWS IoT Messaging a través de WebSockets

Este es bastante obvio, una conexión administrada de WebSockets a través del SDK de IoT. Estaba pensando en activar Lambdas en respuesta a eventos entrantes y salientes y simplemente usar WebSockets como la capa en tiempo real, construyendo una lógica de manejo personalizado en el cliente de la aplicación como lo haría normalmente.

La desventaja de esto, al menos en comparación con Firebase, es que tendré que manejar los datos en los eventos yo mismo, lo que agregará otra capa de administración además de WebSockets y tendrá que estar estandarizado con la capa de datos API en las tiendas de la aplicación. .

Pros:

  • Conexión bidireccional escalable en tiempo real

Contras:

  • Solo funciona cuando la aplicación está abierta
  • La estructura del mensaje debe implementarse
  • Múltiples capas de transporte para gestionar

Opción 2: volver a buscar activada por inserción

Otra opción es usar notificaciones push como desencadenantes en tiempo real, pero use una solicitud HTTP regular a API Gateway para obtener la carga útil actualizada.

Me gusta este enfoque porque se adhiere a una sola capa de transporte y a una única fuente de verdad para el estado de la aplicación. También activará actualizaciones cuando la aplicación no esté abierta, ya que se trata de notificaciones push.

La desventaja es que se trata de una gran cantidad de trabajo personalizado con asignaciones potencialmente difíciles entre las notificaciones push a los datos que deben recuperarse.

Pros:

  • Las notificaciones push funcionan incluso cuando la aplicación está cerrada
  • Fuente única de verdad, capa de transporte

Contras:

  • La solución más personalizada
  • Implicará muchas más solicitudes HTTP en general

Opción 3: Cognito Sync Esto es más nuevo para mí y no estoy seguro de si realmente puede interactuar desde el servidor.

Cognito Sync ofrece sincronización de estado de usuario. en todos los dispositivos con soporte fuera de línea y es parte del Cognito SDK que usaré de todos modos. Parece exactamente lo que estoy buscando, pero no pude encontrar ninguna evidencia concluyente sobre si es posible modificar o "activar" las actualizaciones de AWS y no solo de uno de los dispositivos.

Pros:

  • Proporciona un modelo de datos abstractos en tiempo real.
  • Conectado a los registros de usuario de Cognito OOTB

Contras:

  • No estoy seguro si se puede modificar o actualizar desde Lambdas


Me pregunto si alguien tiene experiencia haciendo AWS en tiempo real como parte de una arquitectura basada en Lambda y si tiene una opinión sobre cuál es la mejor manera de proceder.


Consulte AWS AppSync para conocer algunas de estas funciones en tiempo real y fuera de línea utilizando diferentes fuentes de datos, incluidas la búsqueda y el cálculo de bases de datos.


Hice una pregunta similar al Soporte de AWS, y esta fue su respuesta.

Mi pregunta para ellos:

¿Cuál es el grupo de servicios de AWS (si es posible) para darle esa misma DBaaS en el navegador en tiempo real como Firebase?

AWS Cognito parece ser excelente para cuentas de usuario. ¿Hay algo similar para la parte WebSockets / DB en tiempo real?

Su respuesta:

A su pregunta, Firebase está más cerca del servicio AWS AWS MobileHub. Puede consultar más detalles a continuación sobre mobilehub desde el siguiente enlace.

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

"AWS Cognito parece ser excelente para las cuentas de usuario. ¿Hay algo similar para la parte de WebSockets / DB en tiempo real?"

Amazon Dynamodb es un servicio de base de datos NoSQL rápido y flexible para todas las aplicaciones que necesitan latencia de milisegundos de un solo dígito a cualquier escala. Es una base de datos en la nube totalmente administrada y admite modelos de almacén de documentos y valores clave. Su modelo de datos flexible, rendimiento confiable y escala automática de la capacidad de rendimiento, lo hacen ideal para dispositivos móviles, web, juegos, tecnología publicitaria, IoT y muchas otras aplicaciones.

Amazon Dynamodb se puede optimizar aún más con Amazon DynamoDB Accelerator (DAX), que es un caché en memoria totalmente administrado y de alta disponibilidad que puede reducir los tiempos de respuesta de Amazon DynamoDB de milisegundos a microsegundos, incluso a millones de solicitudes por segundo.

Para obtener más información, consulte la documentación a continuación.

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

Si tiene más preguntas, no dude en hacérmelo saber.

Gracias.

Atentamente,

Tayo O. Amazon Web Services

Consulte el Centro de conocimiento de soporte de AWS, una base de conocimiento de artículos y videos que responden las preguntas de los clientes sobre los servicios de AWS: https://aws.amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category

Además, mientras investigaba esta respuesta, también encontré esto, parece interesante:

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

Los comentarios a ese artículo también son interesantes.

Jacob Wakeem: ¿Qué ventaja tiene este enfoque sobre el uso de aws iot? Parece que iot tiene todas estas funcionalidades sin escribir una sola línea de código y con una arquitectura sin servidor.

Sam Dengler: La función administrada PubSub en el servicio AWS IoT también es un buen enfoque para las aplicaciones basadas en mensajes, como la que se muestra en el artículo. Con Elasticache (Redis), los clientes que usan Pub / Sub también suelen usar Redis como almacén de datos para otros casos de uso, como almacenamiento en caché, tablas de clasificación, etc. Dicho esto, también puede usar ElastiCache (Redis) con el servicio AWS IoT activando una función AWS Lambda a través del motor de reglas de AWS IoT. Dependiendo de cómo está diseñada la aplicación basada en mensajes y cómo se aprovechan los datos, una solución puede ser mejor que la otra.