Cet article est une adaptation de Introduction to Firebase đŸ”„ Ă©crit Ă  l'origine par GeekyAnts

Un petit post à propos de ce qu'est Firebase et sa nouvelle base de données NoSQL - Cloud Firestore.

Avec une variété de technologies cÎté serveur qui sont sur le marché aujourd'hui, les développeurs ont du mal à décider quel type de backend est le plus approprié pour leur application.

Dans ce post, nous allons explorer l'un de ces choix qui s'appelle Firebase đŸ”„, ainsi que tous les outils et services qu'il fournit.

Firebase

Firebase est une plate-forme de développement d'applications mobiles et Web qui fournit aux développeurs une pléthore d'outils et de services pour les aider à développer des applications de haute qualité, à élargir leur base d'utilisateurs et à générer davantage de profits.

Les origines

En 2011, avant que Firebase ne devienne Firebase, c'était une startup appelée Envolve. En tant qu'Envolve, il fournissait aux développeurs une API qui permettait d'intégrer une fonctionnalité de chat en ligne sur leur site Web.

Ce qui est intéressant, c'est que les gens utilisaient Envolve pour transmettre des données d'application qui n'étaient pas que des messages de discussion. Les développeurs utilisaient Envolve pour synchroniser les données d'application, telles que l'état d'un jeu en temps réel avec leurs utilisateurs.

Cela a conduit les fondateurs d'Envolve, James Tamplin et Andrew Lee, à séparer le systÚme de discussion et l'architecture en temps réel. En avril 2012, Firebase a été créée en tant qu'entreprise indépendante fournissant des fonctionnalités en temps réel en tant que Backend-as-a-Service.

AprÚs son acquisition par Google en 2014, Firebase a rapidement évolué pour devenir le monstre multifonctionnel pour plate-forme mobile et web qu'elle est aujourd'hui.

Les services de Firebase

Les services de Firebase peuvent ĂȘtre divisĂ©s en deux groupes :

DĂ©velopper et tester son application :

Grandir et engager son public :

Firebase Realtime Database

Firebase Realtime Database est une base de données NoSQL hébergée dans le cloud qui vous permet de stocker et de synchroniser des données entre vos utilisateurs en temps réel.

Realtime Database est vraiment juste un gros objet JSON que les développeurs peuvent gérer en temps réel.


Realtime Database => Un arbre de valeurs

Simplement avec une API, Firebase Realtime Database fournit à votre application à la fois la valeur actuelle des données et les éventuelles mises à jour de ces données.

La synchronisation en temps réel permet à vos utilisateurs d'accéder facilement à leurs données depuis n'importe quel appareil, que ce soit sur le Web ou sur un appareil mobile. La base de données en temps réel permet également à vos utilisateurs de collaborer les uns avec les autres.

Un autre gros avantage de Realtime Database est qu'elle est livrée avec des SDK mobiles et Web, vous permettant de créer vos applications sans avoir besoin de serveurs.

Lorsque vos utilisateurs sont hors ligne, les SDK de base de données en temps réel utilisent le cache local sur l'appareil pour servir et stocker les modifications. Lorsque l'appareil est en ligne, les données locales sont automatiquement synchronisées.

Realtime Database peut également s'intégrer à l'authentification Firebase pour fournir un processus d'authentification simple et intuitif.

Firebase Authentication

Firebase Authentication fournit des services backend, des SDK faciles Ă  utiliser et des bibliothĂšques d'interfaces utilisateur prĂȘtes Ă  l'emploi pour authentifier les utilisateurs de votre application.

Normalement, il vous faudrait des mois pour configurer votre propre systĂšme d'authentification. Et mĂȘme aprĂšs cela, vous devrez garder une Ă©quipe dĂ©diĂ©e pour maintenir ce systĂšme. Mais si vous utilisez Firebase, vous pouvez configurer l'ensemble du systĂšme en moins de 10 lignes de code qui gĂ©rera tout pour vous, y compris les opĂ©rations complexes comme la fusion de comptes.

Vous pouvez authentifier les utilisateurs de votre application à l'aide des méthodes suivantes:

  • Email & mot de passe
  • NumĂ©ro de tĂ©lĂ©phone
  • Google
  • Facebook
  • Twitter
  • etc!

L'utilisation de Firebase Authentication facilite la création de systÚmes d'authentification sécurisés, tout en améliorant l'expérience de connexion et d'intégration pour les utilisateurs finaux.

Firebase Authentication est crĂ©Ă©e par les mĂȘmes personnes qui ont crĂ©Ă© Google Sign-in, Smart Lock et Chrome Password Manager.

Firebase Cloud Messaging (FCM)

Firebase Cloud Messaging (FCM) fournit une connexion fiable et à faible consommation de batterie entre votre serveur et vos périphériques, vous permettant d'envoyer et de recevoir gratuitement des messages et des notifications sur iOS, Android et sur le Web.

Vous pouvez envoyer des messages de notification (limite de 2 Ko) et des messages de données (limite de 4 Ko).

En utilisant FCM, vous pouvez facilement cibler les messages en utilisant des segments prédéfinis ou créer les vÎtres, en utilisant les données démographiques et comportementales. Vous pouvez envoyer des messages à un groupe d'appareils abonnés à des rubriques spécifiques, ou vous pouvez obtenir des informations aussi détaillées qu'un seul appareil.

FCM peut envoyer des messages instantanément, ou à un moment ultérieur dans le fuseau horaire local de l'utilisateur. Vous pouvez envoyer des données d'application personnalisées, telles que la définition des priorités, des sons et des dates d'expiration, ainsi que le suivi des événements de conversion.

Vous pouvez également utiliser le test A / B pour essayer différentes versions de vos messages de notification, puis sélectionner celui qui correspond le mieux à vos objectifs.

Firebase Database Query

Firebase a simplifiĂ© le processus de rĂ©cupĂ©ration des donnĂ©es spĂ©cifiques de la base de donnĂ©es via des requĂȘtes. Les requĂȘtes sont crĂ©Ă©es en chaĂźnant une ou plusieurs mĂ©thodes de filtrage.

Firebase dispose de 4 fonctions de tri:

  • orderByKey()
  • orderByChild(‘child’)
  • orderByValue()
  • orderByPriority()

Notez que vous ne recevrez les donnĂ©es d'une requĂȘte que si vous avez utilisĂ© la mĂ©thode on () ou once ().

Vous pouvez également utiliser ces fonctions d'interrogation avancées pour restreindre davantage les données:

  • startAt(‘value’)
  • endAt(‘value’)
  • equalTo(‘child_key’)
  • limitToFirst(10)
  • limitToLast(10)

En SQL, les bases de l'interrogation impliquent deux Ă©tapes. D'abord, vous sĂ©lectionnez les colonnes de votre table. Ici, je sĂ©lectionne la colonne Users. Ensuite, vous pouvez appliquer une restriction Ă  votre requĂȘte en utilisant la clause WHERE. De la requĂȘte ci-dessous, j'obtiendrai une liste d'utilisateurs dont le nom est GeekyAnts.

Vous pouvez Ă©galement utiliser la clause LIMIT, qui limitera le nombre de rĂ©sultats que vous obtiendrez Ă  partir de votre requĂȘte.

Dans Firebase, l'interrogation implique également deux étapes. D'abord, vous créez une référence à la clé parente, puis vous utilisez une fonction de tri. En option, vous pouvez également ajouter une fonction d'interrogation pour une restriction plus avancée.

Comment stocker des données ? => Firebase Storage

Firebase Storage est une solution autonome permettant de télécharger du contenu généré par les utilisateurs, comme des images et des vidéos, à partir d'un appareil iOS et Android, ainsi que du Web.

Le stockage Firebase est conçu spécifiquement pour mettre à l'échelle vos applications, assurer la sécurité et assurer la résilience du réseau

Firebase Storage utilise un simple systÚme de dossiers / fichiers pour structurer ses données.

Firebase Test Labs

Firebase Test Labs fournit un grand nombre de périphériques de test mobiles pour vous aider à tester vos applications.

Firebase Test Labs est livré avec 3 modes de test:

Instrumentation Test

Ce sont des tests que vous avez écrits spécifiquement pour tester votre application, en utilisant des frameworks comme Espresso et UI Automator 2.0

Robo Test

Ce test est pour les personnes qui veulent juste se détendre et laisser Firebase s'inquiéter des tests. Firebase Test Labs peut simuler le toucher de l'utilisateur et voir comment fonctionne chaque composant de l'application.

Game Loop Test

Test Labs prend en charge le test des applications de jeu. Il est livrĂ© avec un support bĂȘta pour l'utilisation d'un "mode dĂ©mo" oĂč l'application de jeu s'exĂ©cute en simulant les actions du joueur.

Remote Config

Remote config nous permet essentiellement de publier des mises à jour à nos utilisateurs immédiatement. Si on souhaite changer la palette de couleurs pour un écran, la disposition pour une section particuliÚre dans notre application ou afficher des options promotionnelles / saisonniÚres - c'est complÚtement faisable en utilisant les paramÚtres cÎté serveur sans avoir besoin de publier une nouvelle version.

Remote Config nous donne le pouvoir de:

  • Rapidement et facilement mettre Ă  jour nos applications sans avoir besoin de publier une nouvelle version de l'app / play store.
  • DĂ©finir sans effort le comportement ou l'apparence d'un segment dans notre application en fonction de l'utilisateur / pĂ©riphĂ©rique qui l'utilise.

Firebase App Indexing

Pour que le contenu de votre application soit indexĂ© par Google, utilisez les mĂȘmes URL dans votre application que vous utilisez sur votre site Web et assurez vous d'ĂȘtre le propriĂ©taire de votre application et de votre site Web. Google Search explore les liens sur votre site Web et les sert dans les rĂ©sultats de recherche. Ensuite, les utilisateurs qui ont installĂ© votre application sur leurs appareils accĂšdent directement au contenu de votre application lorsqu'ils cliquent sur un lien.

Les liens profonds sont des URL qui vous mĂšnent Ă  un contenu. La plupart des liens web sont des liens profonds.

Firebase peut maintenant modifier les liens profonds en liens dynamiques! Les liens dynamiques permettent à l'utilisateur d'accéder directement à un emplacement particulier de votre application.

Il y a 3 utilisations fondamentales pour les liens dynamiques :

  • Convertir les utilisateurs Web mobiles en utilisateurs d'applications natives.

  • Augmentez la conversion pour le partage utilisateur-utilisateur. En convertissant les utilisateurs de votre application, lorsque l'application est partagĂ©e avec d'autres utilisateurs, vous pouvez ignorer le message gĂ©nĂ©rique affichĂ© lorsqu'un utilisateur le tĂ©lĂ©charge depuis le store. Au lieu de cela, vous pouvez leur montrer un message d'accueil personnalisĂ©.

  • Le lecteur s'installe Ă  partir de service tiers. Vous pouvez utiliser les rĂ©seaux sociaux, les e-mails et les SMS pour augmenter votre public cible. Lorsque les utilisateurs installent l'application, ils peuvent voir le contenu exact de vos campagnes.

Firestore

Cloud Firestore est une base de données de documents NoSQL qui vous permet de facilement stocker, synchroniser et interroger des données pour vos applications mobiles et Web - à l'échelle mondiale.

Bien que cela puisse ressembler à quelque chose de similaire à la base de données en temps réel, Firestore apporte beaucoup de nouvelles choses à la plate-forme qui en fait quelque chose de complÚtement différent de Realtime Database.

RequĂȘte amĂ©liorĂ©e et structure de donnĂ©es

LĂ  oĂč Realtime Database stocke des donnĂ©es sous la forme d'un arbre JSON gĂ©ant, Cloud Firestore adopte une approche beaucoup plus structurĂ©e. Firestore conserve ses donnĂ©es dans des objets appelĂ©s documents. Ces documents sont constituĂ©s de paires clĂ©-valeur et peuvent contenir n'importe quel type de donnĂ©es, depuis les chaĂźnes jusqu'aux donnĂ©es binaires en passant par des objets qui ressemblent Ă  des arbres JSON (Firestore l'appelle des maps). Les documents, Ă  leur tour, sont regroupĂ©s en collections.

La base de données Firestore peut se composer de plusieurs collections qui peuvent contenir des documents pointant vers des sous-collections. Ces sous-collections peuvent à nouveau contenir des documents qui pointent vers d'autres sous-collections, et ainsi de suite.

Vous pouvez crĂ©er des hiĂ©rarchies pour stocker les donnĂ©es associĂ©es et rĂ©cupĂ©rer facilement les donnĂ©es dont vous avez besoin Ă  l'aide de requĂȘtes. Toutes les requĂȘtes peuvent Ă©voluer en fonction de la taille de votre jeu de rĂ©sultats. Votre application est donc prĂȘte Ă  Ă©voluer depuis le premier jour.

Les requĂȘtes Firestore sont peu profondes. Par ceci, je veux dire que dans Firestore, vous pouvez simplement chercher n'importe quel document que vous voulez sans avoir Ă  rĂ©cupĂ©rer toutes les donnĂ©es contenues dans l'une de ses sous-collections liĂ©es.


Vous pouvez récupérer un seul document sans avoir à récupérer l'une de ses sous-collections

RequĂȘtes avec Firestore

Imaginez que vous avez crĂ©Ă© une collection dans Firestore contenant une liste de villes. Ainsi, avant de pouvoir envoyer une requĂȘte, vous devrez stocker la base de donnĂ©es dans une variable.

Ici, citiesRef est cette variable qui contient votre collection de villes. Maintenant, si vous voulez trouver une liste de capitales, vous devez Ă©crire une requĂȘte comme celle-ci:

Voici un autre exemple de requĂȘtes dans Firestore. Dites que vous voulez voir seulement 2 des villes de votre base de donnĂ©es dont la population est plus de 100 000.

Mais Cloud Firestore peut rendre l'interrogation encore plus facile! Dans certains cas, Cloud Firestore peut rechercher automatiquement dans plusieurs champs de votre base de donnĂ©es. Firestore vous guidera vers la construction automatique d'un index qui aidera Firestore Ă  rendre l'interrogation extrĂȘmement simple.

Meilleure Ă©volution

Bien que Firebase Realtime Database puisse évoluer, les choses vont devenir folles quand votre application deviendra vraiment populaire ou si votre base de données devient vraiment massive.

Cloud Firestore est basé sur l'infrastructure Google Cloud. Cela lui permet d'évoluer beaucoup plus facilement et à une plus grande capacité que Realtime Database.

Base de données multi-régions

Dans Firestore, vos donnĂ©es sont automatiquement copiĂ©es dans diffĂ©rentes rĂ©gions. Ainsi, si un centre de donnĂ©es se dĂ©connecte pour une raison imprĂ©vue, vous pouvez ĂȘtre sĂ»r que les donnĂ©es de votre application sont toujours en sĂ©curitĂ© ailleurs.

La base de données multi-régions de Firestore offre également une forte cohérence. Toute modification de vos données sera reflétée dans chaque copie de votre base de données.

Différents modÚles de prix

Realtime Database charge ses utilisateurs en fonction de la quantité de données que vous avez stockée dans la base de données.

Cloud Firestore vous facture Ă©galement la mĂȘme chose, mais le coĂ»t est nettement infĂ©rieur Ă  celui de Realtime Database et au lieu de baser le coĂ»t sur la quantitĂ© de donnĂ©es stockĂ©es, le prix de Firestore dĂ©pend du nombre de lectures / Ă©critures que vous effectuez.

Consultez cet article pour en savoir plus sur Cloud Firestore :

Vous pouvez Ă©galement parcourir ce codelab pour mieux comprendre le fonctionnement de Cloud Firestore :

DerniÚres nouveautés de Firebase

Robo Scripts

Firebase Test Labs a ce service étonnant appelé Robo Test qui nous permet de tester notre application sans avoir à écrire de script de test. Avec Robo Test, Firebase permet de tester complÚtement votre application, voire de remplir des champs de formulaire spécifiques et des boutons poussoirs!

Maintenant Firebase a mis au point une autre fonctionnalité de test appelée Robo Scripts. Avec Robo Scripts, vous pouvez enregistrer une série d'actions pour que Firebase prenne votre application.

Lorsque vous exécutez un test Robo avec un script Robo attaché, Firebase commence par parcourir les actions enregistrées depuis le script Robo, puis explore l'application comme d'habitude.

Firebase Predictions

Firebase intÚgre désormais l'apprentissage automatique, qui permet d'analyser les données de votre application et de créer des groupes d'utilisateurs dynamiques en fonction du comportement prévu de l'utilisateur.

Firebase Predictions peut fonctionner avec Remote Config pour augmenter les conversions en fournissant une expérience personnalisée basée sur le comportement de chaque utilisateur.

Ou, il peut travailler avec Notifications composer pour livrer le bon message au bon groupe d'utilisateurs.

Firebase Predictions peut également fonctionner de pair avec les tests A / B pour évaluer l'efficacité de vos stratégies basées sur les prévisions.