Parse server vs Firebase

Difficulté : | 10' Publié il y a 1 an
Parse server et Firebase sont des outils permettant le développement d'applications mobiles ou web plus rapidement. Ces outils vous évitent de devoir développer des parties telles que la gestion de la base de données, les envois de notifications push (Mobiles et même web pour Firebase). Voici un article vous permettant de voir la différence ainsi que les forces et faiblesses de chacune des solutions.

Tout d'abord vous devez savoir que ces deux outils ne fonctionnent pas de la même manière.

  • L'outil Parse-server est open-source depuis début 2016 et s'installe donc sur vos propres serveurs avec mongo-db comme gestionnaire de base de données. Toutes les données sont donc conservées chez vous.
  • Firebase, qui appartient maintenant à Google est différent puisque c'est une solution qui propose un service en version gratuite ainsi qu'un autre en version payante en fonction de votre utilisation.

Duel 1 : Installation des outils

Installation de Parse-server

Voici les commandes à lancer pour installer le serveur Parse sur votre machine locale. NPM doit préalablement avoir été installé sur votre poste.

$ npm install -g parse-server mongodb-runner
$ mongodb-runner start

Lorsque ces deux installations sont terminées. Vous pouvez créer un fichier myConfig.json qui vous servira de fichier de configuration pour votre serveur Parse.

{
   "appId": "myAppId",
   "masterKey": "myMasterKey",
   "databaseURI": "mongodb://localhost/test",
   "push": {
      "android":{
         "senderId": "your-sender-id",
         "apiKey": "your-api-key-gcm"
      }
   }
}
$ parse-server myConfig.json

À cette étape votre outil Parse doit fonctionner correctement en tache de fond avec la configuration renseignée dans le fichier ci-dessus. Vous pouvez si vous le voulez faire une dernière étape pour profiter d'un dashboard pour gérer facilement votre base de données ainsi que l'envoi simple de push notifications.

$ npm install -g parse-dashboard
$ parse-dashboard --appId yourAppId --masterKey yourMasterKey --serverURL "http://localhost:1337/parse"

Par défaut le serveur URL doit être http://localhost:1337/parse. Vous aurez l'info dans les retours de la commande : parse-server myConfig.json. Après avoir lancé la dernière commande parse-dashboard vous pourrez alors profiter d'un dashboard tout prêt pour gérer les données de votre serveur Parse.

Installation de firebase

Ici rien de plus simple que de créer un compte Firebase et d'ensuite créer un projet puis une application liée à ce projet pour profiter de l'outil. Vous pourrez ajouter une application IOS, Android ou même une web app.

Pour ce premier duel, malgré une assez grande facilitée d'installation, Parse-server est moins efficace que son rival. À ce stade, la seule chose qui pourrait faire pencher la balance du côté de Parse-server serait le fait que les données sont stockées sur votre serveur et vous avez le contrôle sur elles.

Duel 2 : Pluguer les outils sur votre application

Je vais vous expliquer dans cette partie comment mettre en place Parse-server et/ou Firebase dans une web-app puis dans une application mobile hybride de type Cordova.

Je vais partir du principe que vous connaissez déjà comment fonctionne cordova.

Ces petits exemples montrent l'initialisation de Parse et de Firebase pour utiliser la feature la plus simple à faire fonctionner : La base de données en temps réel.

Parse-server et web-app

Pour installer le SDK de Parse du côté client, rien de plus simple : il suffit d'ajouter la bibliothèque parse.js dans votre page index.html.

<script src="https://npmcdn.com/parse@1.9.2/dist/parse.js"></script>

Vous pouvez alors initialiser le SDK. Voici les quelques lignes obligatoires

Parse.initialize("myAppId");
Parse.serverURL = 'http://localhost/parse';

Voici le code d'exemple pour ajouter un contenu dans la base de données :

var myObject = Parse.Object.extend("myObject"); // On créé le modèle
var myObject = new myObject(); // On instancie l'objet que l'on veut insérer

testObject.save({
    foo: "bar"
})
.then(function(object) {
    alert("It worked!");
});

Ça y est, vous avez initialisé Parse avec une web-app. Vous pouvez dés à présent utiliser les features proposées par Parse pour les web-app.

Parse-server et application Cordova

Pour initialiser Parse dans une application Cordova, j'ai dans un premier temps téléchargé la lib parse.js que j'ai ajoutée au projet dans la partie js. Ensuite j'ai lié cette lib à mon fichier index.html dans l'application. C'est la même façon de faire que pour les web-app mais nous avons la bibliothèque Parse directement intégrée dans notre projet.

<script type="text/javascript" src="js/parse.js"></script>

Pour que Parse fonctionne voici le code js à injecter dans votre fichier source :

Parse.initialize("myAppId");
Parse.serverURL = "http://10.0.2.2:1337/parse"; // http://10.0.2.2/ est l'adresse localhost de votre machine dans le virtual device Android

Lorsque cela est fait, vous pouvez dés à présent vous mettre à la recherche de plugins Cordova dont vous avez besoin pour avoir accès a la base de données offerte par Parse ainsi qu'aux push notifications. Le code Js est le même que pour les web-app (une application Cordova est en javascript aussi).

Firebase et web-app

Maintenant nous allons nous intéresser à l'initialisation de l'outil Firebase dans une web-app. C'est aussi simple qu'avec Parse-server. Voici le code à ajouter dans votre page web.

<script src="https://www.gstatic.com/firebasejs/3.5.0/firebase.js"></script>
<script>
  var config = {
    apiKey: "<API_KEY>",
    authDomain: "<PROJECT_ID>.firebaseapp.com",
    databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
    storageBucket: "<BUCKET>.appspot.com",
    messagingSenderId: "<SENDER_ID>",
  };
  firebase.initializeApp(config);
</script>

Depuis la console de Firebase vous pourrez facilement récupérer toutes les clés de votre projet, API_KEY, PROJECT_ID, DATABASE_NAME...

Voila le code qui vous permettra d'enregistrer du contenu dans la base de données :

firebase.database().ref('myObject/' + myObjectId).set({
    foor: "bar",
    foo2: "bar2",
  });

Firebase et application Cordova

Pour pluguer Firebase avec une application Cordova il faudra ajouter un plugin à votre projet. J'ai trouvé que ce plugin était le plus simple a câbler et le plus efficace.

Avec le plugin Télérik, le code d'ajout dans la base de données est le même qu'avec la web-app. Cf : paragraphe précédent.

Duel 3 : Features proposées pour chacun des outils

Base de données en temps réel

Elle permet de persister des données dynamiques qui concernent votre application.

Outils disposant de cette feature :

  • Firebase
  • Parse server

Cibles pouvant utiliser la base de données :

  • Android
  • IOS
  • Web-app

Storage

Avec les deux solutions vous pouvez aussi uploader vos fichiers relatifs à l'application. Par exemple la photo de profil de votre utilisateur, un fichier pdf ou autre..

Disponible pour Parse-server et Firebase.

Vous pouvez uploader des fichiers avec un input de type file ou en envoyant directement du base64.

Push Notification

Cette feature permet d'envoyer des push notifications aux devices enregistrés sur votre application et abonnés aux différents "flux" de push.

Pour Firebase, c'est disponible sur :

  • Android
  • IOS
  • Web-app

Pour Parse server, c'est disponible sur :

  • Android
  • IOS

Ici Firebase prend un léger avantage sur Parse-server car pouvoir envoyer des push notifications sur navigateur apporte un plus.

Authentification

L'authentification est intégrée directement dans les deux outils et gère vos utilisateurs ainsi que les sessions dans vos applications. De plus les outils mettent à disposition des connexions par des services tiers.

  • Facebook : Firebase, Parse server
  • Google + : Firebase
  • Twitter : Firebase
  • Github : Firebase

La connexion Facebook est totalement fonctionnelle et assez simple à utiliser. Avec Firebase aucun soucis puisque le service de google sert de lien entre les deux. J'ai eu un léger soucis avec Parse, mon travail étant en local, cela faisait dysfonctionner la connexion Facebook au moment de la redirection.

Admob

Cette fonctionnalité n'est disponible qu'avec Firebase qui vous branche directement avec le service google adéquat. Ils vous permet d'ajouter des publicités exclusivement dans vos applications Android et IOS. Pas de web-app ici car Adsense fera très bien le boulot. Vous pouvez aussi gérer un IAM (In-App "Market")

Pour une personne souhaitant monétiser son application c'est une feature très intéressante !

Analytics

Voici la dernière fonctionnalité qui m'a semblé intéressante : l'analytics de vos applications.

Ceci permet de voir le nombre d'utilisateurs globaux et journaliers de votre applications ainsi que connaître le pourcentage d'ouverture des notifications.

Vous pouvez ainsi connaître l'âge moyen des utilisateurs, leur sexe, leurs pays d'origine, etc... comme tout autre outil d'analytics.

L'outil ressemble à Google Analytics, à vrai dire, et fonctionne plutôt bien. Une latence d'une journée a cependant été remarquée pour l'affichage des stats.

Firebase a été racheté par Google, la première mise à jour de l'outil a intégré cette fonctionnalité d'analyse. Un gros plus par rapport à Parse-server.

Conclusion : Parse-server ou Firebase ?

Je pense que j'utiliserai Firebase de mon côté lorsque j'aurai besoin de tels outils. Il apporte un plus grand nombre de fonctionnalités.

D'un point de vue utilisation, si vous lisez la documentation des deux outils, ils peuvent paraître compliqués mais avec un peu de recherche et d'obstination vous comprendrez vite comment s'utilisent les deux outils et la plus-value sur vos projets sera énorme.

Bien-sûr mon choix est discutable... du côté de Parse-server, les données persistées resteront sur vos serveurs et vous avez donc la main dessus...

Je vous invite à tester les deux solutions et de vous faire votre propre opinion ! N'hésitez pas à donnez vos avis sur les deux solutions dans les commentaires.

Tags de l'article :

Cordova Parse Firebase

Commentaires