BaaS auto-hébergés

Un BaaS (Backend as a Service) est un service cloud qui fournit aux développeurs toutes les fonctionnalités backend prêtes à l’emploi (comme la gestion des bases de données, l’authentification des utilisateurs, le stockage de fichiers et les notifications push) via des APIs, afin qu’ils puissent se concentrer sur le développement du frontend sans avoir à gérer l’infrastructure coté serveur (Backend).

Le fait de pouvoir auto-héberger une telle infrastructure, permet de mieux gérer les couts liés à l'usage, couts qui explosent avec le nombre d'utilisateurs croissant si on utilise un service comme Firebase de Google (qui stock la data dans la NoSQL DB propriétaire Firestore) ou Amplify d'Amazon.

Le choix d'une plateforme Backend-as-a-Service (BaaS) est donc crucial pour les startups et scaleups qui souhaitent accélérer leur développement tout en se concentrant sur leur proposition de valeur unique.

Cette analyse comparative explore 3 plateformes BaaS open source et auto-hébergeables Supabase, PocketBase, Appwrite, mettant en lumière leurs caractéristiques communes et leurs atouts distinctifs.

Article rédigé à l'aide de Perplexity.

Points communs des solutions BaaS

Architecture et fonctionnalités fondamentales

La plupart des solutions BaaS partagent un ensemble de fonctionnalités essentielles qui constituent le socle de leur offre :

  • Authentification 🔑 et gestion des utilisateurs 👥 : Toutes les plateformes offrent des systèmes d'authentification intégrés avec support pour l'email et les identités sociales.
  • Stockage de données 📀 : Chaque solution propose une base de données pour stocker les informations de l'application, bien que les technologies sous-jacentes diffèrent.
  • API automatisées 🤖 : Génération automatique d'API (REST et/ou GraphQL) pour interagir avec les données stockées, réduisant considérablement le temps de développement.
  • Stockage de fichiers 🗂️ : Fonctionnalités de gestion et de stockage de fichiers intégrées pour les médias et documents.
  • Capacités temps réel ⚡️ : Support pour des mises à jour en temps réel via WebSockets, permettant des expériences utilisateur interactives.

Avantages pour les startups et scaleups

Ces plateformes partagent des bénéfices essentiels pour les entreprises en croissance :

  • Réduction du time-to-market ⏳ : En éliminant le besoin de développer un backend personnalisé, ces solutions permettent une mise sur le marché accélérée.
  • Économies de développement 💸 : Réduction des coûts initiaux de développement et de maintenance d'infrastructure.
  • Focus sur le produit 🛹 : Les équipes peuvent se concentrer sur les fonctionnalités différenciantes plutôt que sur l'infrastructure.
  • Flexibilité de déploiement ☁️ : Options d'hébergement cloud et auto-hébergées pour s'adapter à différentes stratégies d'entreprise.

Analyse comparative : Supabase vs Appwrite vs PocketBase

Supabase 🦾

  • PostgreSQL natif : Basé sur PostgreSQL (NoSQL pour Firebase), offrant une puissance et une flexibilité exceptionnelles pour les données relationnelles et vectorielles.
  • APIs multiples : Génération automatique d'APIs REST via PostgREST et GraphQL via pg_graphql.
  • Edge Functions : Fonctions serverless TypeScript distribuées globalement pour la logique métier personnalisée.
  • Sécurité avancée : Contrôle d'accès basé sur les rôles via Row Level Security de PostgreSQL.
  • Intégrations IA : Facilite l'intégration avec OpenAI et Hugging Face.
  • Richesse des fonctionnalités : Environnement complet incluant webhooks de base de données, jobs cron, et transformations d'images.

Idéal pour :

  • les projets nécessitant des données relationnelles complexes
  • Applications avec besoins en IA et apprentissage automatique
  • Équipes ayant une expertise SQL souhaitant un accès direct à la base de données
  • Startups cherchant une solution complète et hautement extensible

voir repo Github avec docker compose

Appwrite 🧙‍♂️

  • Multi-projets/multi-bases : Support pour plusieurs projets et bases de données, offrant une meilleure organisation.
  • Runtimes polyvalents : Support pour plus de 10 langages de programmation dans ses fonctions serverless (Node.js, Python, PHP, Ruby, Dart, Go, etc.) contre 1 seul pour Supabase.
  • Marketplace de fonctions : Bibliothèque de templates prêts à l'emploi pour accélérer le développement.
  • UX développeur optimisée : Abstraction simplifiée au-dessus de MariaDB pour une expérience développeur fluide.
  • Fonctionnalités temps réel étendues : Updates en temps réel sur tous les produits, pas seulement sur la base de données.
  • Messagerie intégrée : 10 fournisseurs différents couvrant SMS, emails et notifications push.

Idéal pour :

  • les équipes travaillant avec divers langages de programmation (en serverless)
  • Projets nécessitant une gestion de plusieurs applications ou microservices
  • Applications avec besoins importants en communication (notifications, emails)
  • Startups cherchant une expérience développeur simplifiée

PocketBase 🏎️

  • Simplicité extrême : Application autonome dans un seul fichier exécutable, simplifiant considérablement le déploiement.
  • Performances exceptionnelles : Particulièrement rapide pour les requêtes en lecture intensive grâce à SQLite.
  • Légèreté : Empreinte minimale en termes de ressources système.
  • Portabilité : Facilement déplaçable entre différents environnements.
  • Extensibilité via Go et JavaScript : Permet d'étendre les fonctionnalités via des hooks en Go et JavaScript.

Idéal pour :

  • Les startups avec ressources limitées
  • Applications nécessitant un déploiement rapide et simple ou prototypage rapide
  • Projets avec prédominance de requêtes en lecture
  • Équipes préférant une solution légère et portable

Critères de sélection pour l'architecture

Pour choisir la solution BaaS la plus adaptée, les architectes devraient considérer :

  1. Modèle de données et complexité : PostgreSQL (Supabase) pour des besoins complexes, SQLite (PocketBase) pour plus de simplicité, ou MariaDB (Appwrite) pour un équilibre intermédiaire.
  2. Niveau d'abstraction souhaité : Accès direct à PostgreSQL avec Supabase, abstraction simplifiée avec Appwrite, ou approche minimaliste avec PocketBase.
  3. Besoins de mise à l'échelle : Supabase offre des répliques en lecture et une architecture solide pour la mise à l'échelle, tandis que PocketBase brille par sa simplicité mais pourrait présenter des limitations à grande échelle.
  4. Expertise technique de l'équipe : Supabase demande plus de connaissances SQL, Appwrite propose une courbe d'apprentissage plus douce, PocketBase est le plus accessible.
  5. Intégrations requises : Évaluer les intégrations natives avec l'IA (Supabase, Nhost), les fonctions serverless multi-langages (Appwrite), ou la légèreté du déploiement (PocketBase).
  6. Budget et contraintes économiques : Examiner les modèles de tarification, avec Appwrite débutant à 15$/mois et Supabase à 25$/mois, contre une approche plus légère et potentiellement économique avec PocketBase.

Conclusion

Le choix d'une solution BaaS pour une startup ou scaleup doit s'aligner avec sa stratégie technique et commerciale :

  • Supabase se distingue par sa puissance, sa flexibilité et son écosystème PostgreSQL complet, idéal pour les applications complexes et évolutives nécessitant des données structurées avancées.
  • Appwrite offre un excellent équilibre entre simplicité d'utilisation et richesse fonctionnelle, avec un accent sur l'expérience développeur et la polyvalence des langages supportés.
  • PocketBase brille par sa simplicité et sa légèreté exceptionnelles, parfait pour les petites équipes cherchant un démarrage rapide et une maintenance minimale.

Les alternatives comme Back4App, Nhost et Kuzzle peuvent également répondre à des besoins plus spécifiques selon le contexte du projet.

Youtube

Les vidéos de Fireship.io (qui est grand fan de Firebase voir la dernière vidéo) :