Salut
J’ai été dans la meme situation que toi pour 2 apps :
- une app mobile Ionic
- une app web en SaaS sur AngularJS.
Donc j’en profite pour te livrer plus en détails mon expérience :
Pour les 2 j’ai opté pour un MBaaS : en gros c’est un backend prêt à l’emploi pour les frontends web (SaaS, mobile hybride).
Ca peut tout aussi bien marcher pour du desktop (Electron, NW) puisque ca reste du web encapsulé.
Pourquoi pas avoir utilisé un framework server-side classique ?
J’avais l’expérience sur un framework PHP (Laravel 5) , mais je voulais me concentrer sur le frontend. De plus coder un backend Laravel n’avait pas de valeur ajoutée sur le projet.
Last but not least, le MBaaS donne accès à des infos pas seulement techniques, mais aussi des infos d’analytics pour les commerciaux et autres non techs. Pas besoin de passer 4 mois a coder en plus un dashboard spécifique.
Concrètement j’ai pris Parse.com qui est sans doute l’un des des plus aboutis.
Mais maintenant que Facebook l’a racheté puis arrêté (à la surprise générale) j’ai cherché un service concurrent.
Les avantages de Parse (et sans doute d’autres) :
- une SDK Javascript qui wrappe l’API Rest serveur built-in. Ca facilite les action CRUD
et autres connectivités Oauth2. On y prend vite gout ^^
- un outil CLI pour faciliter les déploiements, les rollbacks, log in console
- des extensions (manip d’image, outil mailing, analytics, files)
- Hosting : hébergement de l’appli frontend
- Cloud Code : API Rest built-in + la possibilité de l’étendre avec ses propres fonctions métier (en NodeJS)
- création d’ACL pour sécuriser les objets (tuples DB)
- monitoring de trafic
- un Data Studio pour créer ses modèles métier (modélisation base de données en gros)
- 30 requêtes par IP par secondes, au dela c’est 100$ par mois.
- push de données
- stockage de fichiers en Cloud (Google ou CloudFront je sais plus)
Inconvénients :
- SDK JS basé sur Backbone. C’est pas incompatible avec Angular pour autant (tu cites Ionic)
mais faut SURTOUT pas oublier d’invoquer $scope.$apply() dans les callbacks des méthode SDK qui font des appels Ajax.
Sur Github ya des portages Angular de la SDK Parse, mais aucun n’a fonctionné chez moi.
- Les objets Backbone fonctionnent avec des get/set, alors que Angular fonctionne en dirty checking (object.prop)
Warning : L’isomorphisme :
…qui a des tonnes de vertus mais requiert des gros points de vigilance :
Autrefois on codait en JS pour le client-side, et en PHP (ou autre) pour le server-side. Les frontières étaient naturelles, pas d’ambiguité : le code JS est accessible, le code PHP ne l’est pas. Chacun son camp. Point.
Maintenant avec le codage full-JS, on change la donne, ces frontières n’existent plus. Le meme code marche aussi bien d’un coté que de l’autre. Il faut simplement penser différemment sinon on prend de mauvaises habitudes.
Dans les premières semaines, je me suis un peu fait peur : je me suis surpris à coder des choses sensibles (domaine métier) côté client.
Par exemple la création et l’édition d’un compte client.
Abérrant hein ?
"Ba oui mais ca fonctionne, la SDK et l’API Rest le permettent."
Et c’est là que même avec 10 d’expé, on se met à refaire des erreurs de débutants.
J’ai donc tôt fait de prendre l’habitude de me répéter 50 fois par jour :
- “oui ca marche, mais est-ce que code est au bon endroit ?”
- “est ce que craint si le code est accessible / lisible par n’importe qui” ?
- “ai je besoin d’avoir la main/ contrôle / autorité sur ce code ?”
–> ex : si j’ai besoin de désactiver un traitement métier, mais que la règle qui l’entoure évolue entretemps et l’invalide.
Autres services MBaaS :
Depuis, j’en ai testé d’autres qui m’ont +/- convaincu :
- ApperyIO : pas accroché l’ergonomie UI
- Backand : vraiment pas mal mais tout en appels Rest (or j’ai pris gout à la SDK JS)
- Firebase : Data Studio mal foutu (trop orienté NoSQL pour moi)
- Kinvey : mon préféré : ressemble beaucoup à Parse (un peu cher mais service à haute valeur)
J’ai pas essayé :
Modulus,
Kuzzle
BaasBox
DreamFactory
StrongLoop
BuiltIO
Buddy
Anypresence
Kumulos
Hésite pas à compléter la liste !
Pricing :
En général le Starter plan est gratuit. Puis si tu dépasses un plafond tu paies.
Soit un forfait mensuel soit du “pay as you go” qui est plus équitable.
J’ai pas étudié tous les modèle de pricing. Si tu as bien avancé sur ce sujet hésite pas a partager.
My two cents.