Comprender la facturación de bases de datos en tiempo real

Firebase factura por los datos que almacena en su base de datos y todo el tráfico de red saliente en la capa de sesión (capa 5) del modelo OSI. El almacenamiento se factura a $5 por cada GB/mes, evaluado diariamente. La facturación no se ve afectada por la ubicación de su base de datos. El tráfico saliente incluye sobrecarga de conexión y cifrado de todas las operaciones de la base de datos y datos descargados a través de lecturas de la base de datos. Tanto las lecturas como las escrituras de bases de datos pueden generar costos de conexión en su factura. Todo el tráfico hacia y desde su base de datos, incluidas las operaciones denegadas por las reglas de seguridad, genera costos facturables.

Algunos ejemplos comunes de tráfico facturado incluyen:

  • Datos descargados: cuando los clientes obtienen datos de su base de datos, Firebase cobra por los datos descargados. Normalmente, esto constituye la mayor parte de los costos de ancho de banda, pero no es el único factor en su factura.
  • Sobrecarga de protocolo: es necesario algo de tráfico adicional entre el servidor y los clientes para establecer y mantener una sesión. Según el protocolo subyacente, este tráfico puede incluir: sobrecarga del protocolo en tiempo real de Firebase Realtime Database, sobrecarga de WebSocket y sobrecarga del encabezado HTTP. Cada vez que se establece una conexión, esta sobrecarga, combinada con cualquier sobrecarga de cifrado SSL, contribuye a los costos de conexión. Aunque esto no es mucho ancho de banda para una sola solicitud, puede ser una parte sustancial de su factura si sus cargas útiles son pequeñas o si realiza conexiones cortas y frecuentes.
  • Gastos generales de cifrado SSL: existe un costo asociado con los gastos generales de cifrado SSL necesarios para conexiones seguras. En promedio, este costo es de aproximadamente 3,5 KB para el protocolo de enlace inicial y aproximadamente decenas de bytes para los encabezados de registros TLS en cada mensaje saliente. Para la mayoría de las aplicaciones, este es un pequeño porcentaje de su factura. Sin embargo, esto puede convertirse en un gran porcentaje si su caso específico requiere muchos apretones de manos SSL. Por ejemplo, los dispositivos que no admiten tickets de sesión TLS pueden requerir una gran cantidad de protocolos de enlace de conexión SSL.
  • Datos de la consola de Firebase: aunque esta no suele ser una parte importante de los costos de Realtime Database, Firebase cobra por los datos que lees y escribes desde la consola de Firebase.

Calcule su uso facturado

Para ver sus conexiones actuales de Realtime Database y el uso de datos, consulte la pestaña Uso en Firebase console. Puede verificar el uso durante el período de facturación actual, los últimos 30 días o las últimas 24 horas.

Firebase muestra estadísticas de uso para las siguientes métricas:

  • Conexiones: el número de conexiones simultáneas, actualmente abiertas y en tiempo real a su base de datos. Esto incluye las siguientes conexiones en tiempo real: WebSocket, sondeo largo y eventos HTML enviados por el servidor. No incluye solicitudes RESTful.
  • Almacenamiento: cuántos datos se almacenan en su base de datos. Esto no incluye el alojamiento de Firebase ni los datos almacenados a través de otros productos de Firebase.
  • Descargas: todos los bytes descargados de su base de datos, incluida la sobrecarga de protocolo y cifrado.
  • Carga: este gráfico muestra qué parte de su base de datos está en uso, procesando solicitudes, durante un intervalo determinado de 1 minuto. Es posible que vea problemas de rendimiento a medida que su base de datos se acerque al 100%.

Optimizar el uso

Existen algunas prácticas recomendadas que puede emplear para optimizar el uso de su base de datos y los costos de ancho de banda.

  • Utilice los SDK nativos: siempre que sea posible, utilice los SDK que correspondan a la plataforma de su aplicación, en lugar de la API REST. Los SDK mantienen conexiones abiertas, lo que reduce los costos de cifrado SSL que normalmente se acumulan con la API REST.
  • Verifique si hay errores: si sus costos de ancho de banda son inesperadamente altos, verifique que su aplicación no esté sincronizando más datos o con más frecuencia de lo que pretendía originalmente. Para identificar problemas, utilice la herramienta de generación de perfiles para medir sus operaciones de lectura y active el registro de depuración en los SDK de Android , Objective-C y Web . Verifique los procesos en segundo plano y de sincronización en su aplicación para asegurarse de que todo funcione como esperaba.
  • Reducir las conexiones: Si es posible, intenta optimizar el ancho de banda de tu conexión. Las solicitudes REST pequeñas y frecuentes pueden resultar más costosas que una conexión única y continua utilizando el SDK nativo. Si utiliza la API REST, considere usar un HTTP keep-alive o eventos enviados por el servidor , lo que puede reducir los costos de los protocolos de enlace SSL.
  • Utilice tickets de sesión TLS: reduzca los costos generales de cifrado SSL en las conexiones reanudadas mediante la emisión de tickets de sesión TLS . Esto es particularmente útil si necesita conexiones frecuentes y seguras a la base de datos.
  • Consultas de indexación: la indexación de sus datos reduce el ancho de banda total que utiliza para las consultas, lo que tiene el doble beneficio de reducir sus costos y aumentar el rendimiento de su base de datos. Utilice la herramienta de generación de perfiles para buscar consultas no indexadas en su base de datos.
  • Optimice sus oyentes: agregue consultas para limitar los datos que devuelven sus operaciones de escucha y utilice oyentes que solo descarguen actualizaciones de datos (por ejemplo, on() en lugar de once() . Además, coloque a sus oyentes lo más abajo posible en la ruta para limitar la cantidad de datos que sincronizan.
  • Reduzca los costos de almacenamiento: ejecute trabajos de limpieza periódicos y reduzca los datos duplicados en su base de datos.
  • Reglas de uso: evite operaciones no autorizadas y potencialmente costosas en su base de datos. Por ejemplo, usar las reglas de seguridad de bases de datos en tiempo real de Firebase podría evitar un escenario en el que un usuario malintencionado descargue repetidamente toda su base de datos. Obtenga más información sobre el uso de las reglas de base de datos en tiempo real de Firebase .

El mejor plan de optimización para su aplicación depende de su caso de uso particular. Si bien esta no es una lista exhaustiva de las mejores prácticas, puedes encontrar más consejos y sugerencias de los expertos de Firebase en nuestro canal de Slack o en Stack Overflow .