Nous avons récemment réalisé un projet web et mobile se basant sur Firebase, voici donc un retour d’expérience d’une équipe n’ayant jamais eu l’opportunité de travailler sur ce produit auparavant.
Il faut d’abord savoir que Firebase est un sous semble du célèbre cloud de Google : Google Cloud Platform (GCP). En effet lorsqu’on créé un projet Firebase, nous créons en arrière plan un projet GCP.
La prise en main de Firebase via la console est très intuitive et même pour quelqu’un qui ne connaît pas bien le monde du cloud, il est possible et facile de mettre en ligne une application web (Hosting) se basant sur une BDD nosql (Cloud Firestore), avec une gestion utilisateurs (Authentication) et du stockage de fichiers (Storage).
Firebase est donc très facile à prendre en main et est parfaitement adapté pour des projets tests (Proof of Concept par ex) même pour des développeurs qui découvrent tout juste l’outil.
Toutefois, lorsque l’on développe une application demandant des fonctionnalités métiers avancées et de la performance (essayer de limiter les read/write pour éviter les coûts), il est essentiel de prendre le temps de découvrir plus profondément ce que proposent les modules de Firebase et de savoir quelles sont leurs limites.
En effet, par exemple pour Cloud Firestore, il absolument indispensable de définir une structure adaptée à son modèle de données pour éviter d’atteindre trop vite les limites techniques des requêtes (https://firebase.google.com/docs/firestore/query-data/queries). Certaines limites forcent même l’architecture à évoluer en utilisant des solutions tierces comme Algolia ou Elasticsearch.
Nous avons aussi été heurté à une autre limite, concernant la gestion de notification push (Cloud Messaging), il est impossible à l’heure actuelle d’avoir des statistiques de réception push sans passer par la console Firebase. On ne peut donc pas afficher ces statistiques sur une application web par exemple.
Enfin pour la CI, il faudra aussi jongler entre le CLI de Firebase et celui de GCP pour arriver à déployer automatiquement l’environnement souhaité.
Google possède une chaine youtube dédiée au solutions Firebase (https://www.youtube.com/user/Firebase) avec du contenu à jour et de très bonnes guidelines par exemple pour Cloud Firestore.
Il faut savoir aussi que l’offre gratuite de Firebase (offre Spark) ne propose désormais plus la possibilité d’utiliser le module Cloud Functions. Celui-ci est indispensable à n’importe quel projet ayant des besoins métiers un peu avancés. Il faudra donc s’orienter sur une offre Blaze à minima pour y avoir accès.
Pour conclure, Firebase est très attirant du fait de sa simplicité aux premiers abords et son interface d’administration très intuitive. Pour un projet très simple ne requérant que peu de fonctionnalités et peu de trafic, il est parfaitement adapté et peu coûteux (voir pas du tout si on ne dépasse les limites gratuites de chaque module). Cependant, pour un projet plus ambitieux, il est absolument nécessaire d’être accompagné d’architectes spécialisés dans l’environnement GCP afin de développer l’application le plus efficacement possible et d’éviter de se heurter aux nombreuses limites de chaque module.