Comprendre la facturation Realtime Database

Firebase facture les données que vous stockez dans votre base de données et l'ensemble du réseau sortant le trafic au niveau de la couche de session (couche 5) du modèle OSI. Le stockage est facturé à 5 $ par Go/mois, évalué quotidiennement. La facturation n'est pas affectée par l'emplacement de votre base de données. Le trafic sortant inclut la surcharge de connexion et de chiffrement de toutes les opérations de base de données et des données téléchargées via des lectures de base de données. Les lectures et les écritures de base de données peuvent entraîner des frais de connexion sur votre facture. Tout le trafic vers et depuis votre base de données, y compris les opérations refusées par ce qui entraîne des coûts facturables.

Voici quelques exemples courants de trafic facturé :

  • Données téléchargées:lorsque les clients obtiennent des données depuis votre base de données, Firebase des frais pour les données téléchargées. En général, cela représente l'essentiel de vos coûts de bande passante, mais ce n'est pas le seul facteur de votre facture.
  • Coûts liés au protocole:trafic supplémentaire entre le serveur et les clients. est nécessaire pour établir et maintenir une session. En fonction de l'infrastructure sous-jacente ce trafic peut inclure: les flux en temps réel de Firebase Realtime Database le protocole, la surcharge WebSocket et la surcharge de l'en-tête HTTP. Chaque fois qu'un une connexion établie, cette surcharge, combinée à tout chiffrement SSL contribuent aux coûts de connexion. Bien que ce ne soit pas beaucoup de bande passante pour une même requête, cela peut représenter une part importante si vos charges utiles sont minuscules ou si vous établissez des connexions fréquentes et courtes.
  • Frais de chiffrement SSL:l'utilisation du chiffrement SSL de chiffrement nécessaire pour sécuriser les connexions. En moyenne, ce coût est d'environ 3,5 Ko pour le handshake initial, et environ des dizaines de octets pour les en-têtes d'enregistrement TLS de chaque message sortant. Pour la plupart des applications, il s'agit un petit pourcentage de votre facture. Toutefois, il peut s'agir d'un pourcentage si votre cas spécifique nécessite de nombreuses handshakes SSL. Par exemple, les appareils non compatibles avec les tickets de session TLS peut nécessiter un grand nombre de handshakes de connexion SSL.
  • Données de la console Firebase:bien qu'il ne s'agisse généralement pas d'un de Realtime Database, Firebase facture les données que vous lisez et écrire à partir de la console Firebase.

Estimer votre consommation facturée

Pour connaître vos connexions Realtime Database actuelles et votre consommation de données, consultez le Utilisation de la console Firebase. Vous pouvez vérifier l'utilisation sur la période de facturation en cours des règles, des 30 derniers jours ou des dernières 24 heures.

Firebase affiche des statistiques d'utilisation pour les métriques suivantes:

  • Connexions:nombre de connexions en temps réel ouvertes simultanément de connexions à votre base de données. Cela inclut les données en temps réel suivantes : WebSocket, interrogation longue et événements HTML envoyés par le serveur. Oui sans inclure de requêtes RESTful.
  • Stockage:quantité de données stockées dans votre base de données. Cela n'inclut pas l'hébergement Firebase ni les données stockées via d'autres produits Firebase.
  • Téléchargements:nombre total d'octets téléchargés à partir de votre base de données, protocole inclus et les coûts liés au chiffrement.
  • Charge : ce graphique indique la quantité de votre base de données utilisée pour traiter des requêtes sur un intervalle d'une minute donné. Vous constaterez peut-être des problèmes de performances lorsque votre base de données approche de 100%.

Optimiser l'utilisation

Il existe quelques bonnes pratiques que vous pouvez appliquer pour optimiser l'utilisation de votre base de données et les coûts liés à la bande passante.

  • Utilisez les SDK natifs:dans la mesure du possible, utilisez les SDK correspondant à la plate-forme de votre application, plutôt que l'API REST. Les SDK maintiennent des connexions ouvertes, ce qui réduit les coûts de chiffrement SSL qui s'accumulent généralement avec l'API REST.
  • Recherchez les bugs:si les coûts de votre bande passante sont élevés de manière inattendue, vérifiez que votre application ne synchronise pas plus de données ou ne se synchronise pas plus souvent qu'à l'origine ; prévu. Pour identifier les problèmes, utilisez l'outil Profiler : mesurer vos opérations de lecture et activer la journalisation de débogage dans Android Objective-C, et Web SDK. Vérifiez les processus en arrière-plan et de synchronisation dans votre application pour vous assurer que tout fonctionne comme prévu.
  • Réduisez le nombre de connexions:si possible, essayez d'optimiser votre connexion. la bande passante réseau. Les petites requêtes REST fréquentes peuvent coûter plus cher qu'une une connexion continue à l'aide du SDK natif. Si vous utilisez l'API REST, envisagez d'utiliser un "keep-alive" HTTP ou des événements envoyés par le serveur, ce qui peut réduire les coûts liés aux poignées de main SSL.
  • Utiliser des tickets de session TLS:réduisez les frais généraux liés au chiffrement SSL en cas de reprise. des connexions en émettant Tickets de session TLS. Cela est particulièrement utile si vous avez besoin de connexions fréquentes et sécurisées à la base de données.
  • Requêtes d'index:indexer vos données réduit la bande passante totale utilisée pour les requêtes, ce qui présente le double avantage de réduire les coûts et d'améliorer les performances de votre base de données. Utilisez les profileur pour rechercher des requêtes non indexées dans votre base de données.
  • Optimisez vos écouteurs:ajoutez des requêtes pour limiter les données que vous écoutez. les opérations renvoient et utilisent des écouteurs qui ne téléchargent que les mises à jour des données, (par exemple, on() au lieu de once()). De plus, placez vos écouteurs aussi loin que possible pour limiter la quantité de données qu'ils synchronisent.
  • Réduction des coûts de stockage:exécutez des tâches de nettoyage périodiques et réduisez les éventuels doublons. dans votre base de données.
  • Utilisez des règles : évitez toute opération non autorisée et potentiellement coûteuse sur votre base de données. Par exemple, utiliser Firebase Realtime Database Security Rules permet d'éviter un scénario où un utilisateur malveillant télécharge de manière répétée toute votre base de données. En savoir plus sur à l'aide de règles Firebase Realtime Database.

Le meilleur plan d'optimisation pour votre application dépend de votre cas d'utilisation. Bien que cette liste ne soit pas exhaustive, vous trouverez d'autres conseils et astuces des experts Firebase sur notre canal Slack ou sur Stack Overflow.