Check out what’s new from Firebase at Google I/O 2022. Learn more

Comprendre la facturation de la base de données en temps réel

Firebase facture les données que vous stockez dans votre base de données et tout le trafic réseau sortant au niveau de la couche de session (couche 5) du modèle OSI. Le stockage est facturé 5 $ pour chaque 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 les données téléchargées via les 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 les règles de sécurité, 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 de votre base de données, Firebase facture les données téléchargées. En règle générale, cela représente l'essentiel de vos coûts de bande passante, mais ce n'est pas le seul facteur de votre facture.
  • Surdébit de protocole : un certain trafic supplémentaire entre le serveur et les clients est nécessaire pour établir et maintenir une session. Selon le protocole sous-jacent, ce trafic peut inclure : la surcharge du protocole en temps réel de la base de données en temps réel Firebase, la surcharge WebSocket et la surcharge de l'en-tête HTTP. Chaque fois qu'une connexion est établie, cette surcharge, combinée à toute surcharge de chiffrement SSL, contribue aux coûts de connexion. Bien que ce ne soit pas beaucoup de bande passante pour une seule requête, cela peut représenter une part importante de votre facture si vos charges utiles sont minuscules ou si vous effectuez des connexions fréquentes et courtes.
  • Surcharge de cryptage SSL : il y a un coût associé à la surcharge de cryptage SSL nécessaire pour les connexions sécurisées. En moyenne, ce coût est d'environ 3,5 Ko pour la poignée de main initiale et d'environ des dizaines d'octets pour les en-têtes d'enregistrement TLS sur chaque message sortant. Pour la plupart des applications, il s'agit d'un petit pourcentage de votre facture. Cependant, cela peut devenir un pourcentage important si votre cas spécifique nécessite de nombreuses poignées de main SSL. Par exemple, les appareils qui ne prennent pas en charge les tickets de session TLS peuvent nécessiter un grand nombre d'établissements de liaison de connexion SSL.
  • Données de la console Firebase : bien qu'il ne s'agisse généralement pas d'une part importante des coûts de la base de données en temps réel, Firebase facture les données que vous lisez et écrivez à partir de la console Firebase.

Estimez votre consommation facturée

Pour voir vos connexions actuelles à la base de données en temps réel et l'utilisation des données, consultez l'onglet Utilisation dans la console Firebase. Vous pouvez vérifier l'utilisation sur la période de facturation en cours, les 30 derniers jours ou les dernières 24 heures.

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

  • Connexions : le nombre de connexions simultanées, actuellement ouvertes et en temps réel à votre base de données. Cela inclut les connexions en temps réel suivantes : WebSocket, interrogation longue et événements HTML envoyés par le serveur. Il n'inclut pas les 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 : tous les octets téléchargés à partir de votre base de données, y compris la surcharge de protocole et de chiffrement.
  • Charge : ce graphique indique la quantité de votre base de données utilisée, traitant les requêtes, sur un intervalle d'une minute donné. Vous pouvez rencontrer des problèmes de performances lorsque votre base de données approche de 100 %.

Optimiser l'utilisation

Il existe quelques meilleures pratiques que vous pouvez utiliser pour optimiser l'utilisation de votre base de données et les coûts de bande passante.

  • Utilisez les SDK natifs : dans la mesure du possible, utilisez les SDK qui correspondent à la plate-forme de votre application, au lieu de l'API REST. Les SDK maintiennent des connexions ouvertes, réduisant les coûts de cryptage SSL qui s'additionnent généralement avec l'API REST.
  • Recherchez les bogues : si vos coûts de 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 que prévu à l'origine. Pour identifier les problèmes, utilisez l' outil de génération de profils pour mesurer vos opérations de lecture et activez la journalisation de débogage dans les SDK Android , Objective-C et Web . Vérifiez les processus d'arrière-plan et de synchronisation dans votre application pour vous assurer que tout fonctionne comme prévu.
  • Réduisez les connexions : si possible, essayez d'optimiser la bande passante de votre connexion. De petites requêtes REST fréquentes peuvent s'avérer plus coûteuses qu'une connexion unique et continue à l'aide du SDK natif. Si vous utilisez l'API REST, envisagez d'utiliser un HTTP keep-alive ou des événements envoyés par le serveur , ce qui peut réduire les coûts des poignées de main SSL.
  • Utiliser des tickets de session TLS : réduisez les frais généraux de cryptage SSL lors de la reprise des connexions en émettant des tickets de session TLS . Ceci est particulièrement utile si vous avez besoin de connexions fréquentes et sécurisées à la base de données.
  • Indexer les requêtes : L' indexation de vos données réduit la bande passante totale que vous utilisez pour les requêtes, ce qui a le double avantage de réduire vos coûts et d'augmenter les performances de votre base de données. Utilisez l'outil de profilage 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 renvoyées par vos opérations d'écoute et utilisez 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 auditeurs aussi loin que possible sur le chemin pour limiter la quantité de données qu'ils synchronisent.
  • Réduisez les coûts de stockage : exécutez des tâches de nettoyage périodiques et réduisez les données en double dans votre base de données.
  • Règles d'utilisation : empêchez toute opération potentiellement coûteuse et non autorisée sur votre base de données. Par exemple, l'utilisation des règles de base de données en temps réel Firebase pourrait éviter un scénario dans lequel un utilisateur malveillant télécharge à plusieurs reprises l'intégralité de votre base de données. En savoir plus sur l'utilisation des règles de base de données en temps réel Firebase .

Le meilleur plan d'optimisation pour votre application dépend de votre cas d'utilisation particulier. Bien qu'il ne s'agisse pas d'une liste exhaustive des meilleures pratiques, vous pouvez trouver plus de conseils et d'astuces des experts Firebase sur notre canal Slack ou sur Stack Overflow .