Lorsque votre projet est associé au forfait Spark sans frais, l'utilisation de Realtime Database ne vous est pas facturée. Vous bénéficiez d'une utilisation sans frais qui inclut 1 Go de stockage de données et 10 Go/mois de téléchargements de données.
Si vous passez au forfait Blaze avec paiement à l'usage, vous conservez l'utilisation sans frais (1 Go de stockage de données et 10 Go/mois de téléchargements de données), et vous êtes facturé pour toute utilisation au-delà de ce montant. Si vous passez au forfait Blaze, nous vous recommandons de configurer des alertes de budget pour votre projet.
Le reste de cette page décrit la facturation plus en détail.
Comment Realtime Database calcule la facturation
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 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 les frais de connexion et de chiffrement de toutes les opérations de base de données et des données téléchargées via les lectures de base de données. Les opérations de lecture et d'écriture dans la 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 la majeure partie de vos coûts de bande passante, mais ce n'est pas le seul facteur de votre facture.
- Surcharge du protocole : un 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 Firebase Realtime Database, la surcharge WebSocket et la surcharge d'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 cela ne représente 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 établissez des connexions fréquentes et courtes.
- Surcharge de chiffrement SSL : le chiffrement SSL nécessaire aux connexions sécurisées entraîne des coûts supplémentaires. En moyenne, ce coût est d'environ 3, 5 Ko pour le handshake initial et d'environ quelques dizaines d'octets pour les en-têtes d'enregistrement TLS sur chaque message sortant. Pour la plupart des applications, cela représente un faible pourcentage de votre facture. Toutefois, ce pourcentage peut devenir important si votre cas d'utilisation spécifique nécessite de nombreux handshakes SSL. Par exemple, les appareils qui ne sont pas compatibles avec les tickets de session TLS peuvent nécessiter un grand nombre de handshakes de connexion SSL.
- Données de la console Firebase : bien que cela ne représente généralement pas une part importante des coûts de Realtime Database, Firebase facture les données que vous lisez et écrivez à partir de la console Firebase.
Estimer votre utilisation facturée
Pour connaître vos connexions Realtime Database et votre utilisation des données actuelles, consultez l'onglet Utilisation de la console Firebase. Vous pouvez vérifier l'utilisation au cours de la période de facturation actuelle, des 30 derniers jours ou des 24 dernières heures.
Firebase affiche les statistiques d'utilisation pour les métriques suivantes :
- Connexions : nombre de connexions simultanées actuellement ouvertes à votre base de données en temps réel. Cela inclut les connexions en temps réel suivantes : WebSocket, interrogation longue et événements envoyés par le serveur HTML. Il n'inclut pas les requêtes RESTful.
- Stockage : quantité de données stockées dans votre base de données. Cette valeur n'inclut pas les données Firebase Hosting ni celles 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 les dépassements associés au protocole et au chiffrement.
- Charge : ce graphique montre quelle part de votre base de données est utilisée pour traiter les requêtes sur un intervalle d'une minute donné. Vous risquez de rencontrer des problèmes de performances lorsque votre base de données approche les 100%.
Optimiser l'utilisation
Vous pouvez appliquer quelques bonnes pratiques 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 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 vos coûts de bande passante sont anormalement élevés, vérifiez que votre application ne synchronise pas plus de données ou plus souvent que prévu. Pour identifier les problèmes, utilisez l'outil de profilage afin de 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éduire les connexions : si possible, essayez d'optimiser la bande passante de votre connexion. De petites requêtes REST fréquentes peuvent être plus coûteuses qu'une seule connexion continue à l'aide du SDK natif. Si vous utilisez l'API REST, envisagez d'utiliser une connexion HTTP persistante ou des événements envoyés par le serveur, ce qui peut réduire les coûts liés aux handshakes SSL.
- Utiliser des tickets de session TLS : réduisez les coûts de chiffrement SSL sur les connexions reprises en émettant des 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 : l'indexation de vos données réduit la bande passante totale que vous utilisez pour les requêtes, ce qui présente 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 les 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 deonce()). De plus, placez vos écouteurs aussi loin que possible dans le chemin d'accès pour limiter la quantité de données qu'ils synchronisent. - Réduire 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.
- Utilisez des règles : empêchez toute opération non autorisée potentiellement coûteuse sur votre base de données. Par exemple, l'utilisation de Firebase Realtime Database Security Rules peut éviter qu'un utilisateur malveillant ne télécharge l'intégralité de votre base de données de manière répétée. En savoir plus sur l'utilisation des règles Firebase Realtime Database
Le meilleur plan d'optimisation pour votre application dépend de votre cas d'utilisation spécifique. Cette liste de bonnes pratiques n'est pas exhaustive. Vous trouverez d'autres conseils et astuces d'experts Firebase sur notre canal Slack ou sur Stack Overflow.