PostgREST supprime 80 % de votre code backend

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Et si votre base de données Postgres était l'API et que vous n'aviez aucun code backend à écrire ?
00:00:05Chaque fois que vous créez une API, vous écrivez le même code backend. Routes, contrôleurs, validation, auth, tout ça juste pour parler à votre
00:00:14base de données. Puis vous changez une colonne et tout casse. Pas de code backend personnalisé. Pas de contrôleurs. Pas de couche ORM.
00:00:21C'est ce que fait Postgres. C'est le moteur derrière Supabase. Il gère un trafic de production sérieux et en quelques minutes
00:00:29je vais vous montrer comment.
00:00:31Maintenant, si vous créez des API, celle-ci s'attaque aux points les plus agaçants de toute la pile.
00:00:40La logique dupliquée. Vous définissez les données dans la base de données.
00:00:44Ensuite, vous définissez les règles d'accès, le code backend et la validation ailleurs.
00:00:49Puis on fait de même pour la gestion des réponses ailleurs. Même système, plusieurs couches, multiples chances que ça casse.
00:00:56Postgres simplifie tout ça. Il a plus de 26 000 étoiles sur GitHub et est utilisé par Supabase à l'échelle de la production.
00:01:03Il transforme votre schéma en une API REST prête pour la production en quelques minutes. Pas d'ORM, pas de contrôleurs.
00:01:10La sécurité réside dans la base de données, ce qui signifie moins de duplication, moins de maintenance et beaucoup moins de temps passé à tout câbler.
00:01:19Laissez-moi vous montrer. Si vous aimez les outils de codage qui accélèrent votre flux de travail, n'oubliez pas de vous abonner.
00:01:24Nous publions des vidéos tout le temps.
00:01:26Très bien. Maintenant, construisons concrètement ce truc. Voici la configuration : trois conteneurs.
00:01:32C'est tout. Postgres, PostgREST, et Swagger UI pour la documentation.
00:01:38Voici le fichier Docker Compose. Rien de spécial ici. Juste trois services que j'ai reliés entre eux.
00:01:45Je le lance avec notre commande infaillible Docker Compose. Ça va démarrer et j'ai terminé.
00:01:51Pas de dépendances à installer. Pas de serveur à configurer. Maintenant, regardons la base de données.
00:01:55Je vais lancer cette commande Docker ici et c'est tout. Une table "todos" super simple : ID, titre, complété, créé, tout le contenu de base.
00:02:04C'est vraiment tout ce qu'il y a. Mais voici la partie où cela devient utile.
00:02:09La sécurité au niveau des lignes (RLS). Nous définissons qui peut accéder à quoi directement en SQL dans la base de données.
00:02:17Aucune logique d'authentification backend ne traîne ailleurs dans notre système. Voici la politique.
00:02:22J'ai un accès complet anonyme avec "true". Donc pour l'instant, tout est autorisé. Maintenant, regardez ça.
00:02:29Je vais appeler "get todos" avec cette commande curl et c'est tout. Du JSON complet venant directement de Postgres.
00:02:35Pas de code API. En partant de là, laissez-moi filtrer maintenant. Ça fonctionne immédiatement.
00:02:41Si je trie, boum, voilà. Maintenant créons une autre ligne, envoyons une requête POST avec un corps JSON et c'est fini.
00:02:50Et c'est déjà dans la base de données. Il n'y a pas de couche ORM qui essaie de suivre ici.
00:02:56Et voici la partie qui impressionne vraiment les gens : la doc Open API, Swagger UI auto-généré. C'est juste là.
00:03:04Je l'ouvre et nous avons une API interactive complète. Vous pouvez tout explorer, tester les points de terminaison, voir les schémas.
00:03:11Donc, en partant de zéro, vous avez maintenant un CRUD complet, du filtrage, du tri, de la pagination. Vous avez l'auth de base via RLS et la doc en moins d'une minute.
00:03:21Alors pourquoi les gens utilisent-ils ça ? Si cela ne suffisait pas, c'est parce que le travail backend traditionnel a un coût.
00:03:26Et la majeure partie de ce coût n'est pas liée au produit lui-même. En fait, nous faisons tout ce travail de maintenance, n'est-ce pas ?
00:03:33Si vous pensez à la pile normale, c'est peut-être Express, Prisma, des contrôleurs, des services, la validation à un endroit.
00:03:40Ensuite, nous avons l'auth ailleurs. Votre logique de base de données est encore à un autre endroit.
00:03:45Maintenant comparez cela à Postgres. Votre schéma définit l'API. Votre sécurité est la RLS.
00:03:52Vos relations existent déjà dans la base de données. Donc au lieu de construire une couche de traduction autour de vos données, nous exposons simplement les données correctement.
00:04:02C'est très différent. Maintenant, comparez cela à un backend personnalisé. Vous devez tout écrire vous-même.
00:04:07Cela vous donne de la flexibilité, certes. Mais cela vous donne aussi beaucoup plus de code à maintenir.
00:04:13Postgres reste plus simple. REST plus Postgres. La sécurité est dans la base. Elle n'est pas dispersée dans des middlewares ou des gestionnaires de routes.
00:04:23Votre maintenance reste faible car votre API suit votre schéma. C'est pour ça que les gens aiment ça.
00:04:28Maintenant, pour être honnête, c'est là que les gens ont des ennuis parce que quand quelque chose commence à paraître aussi propre, on agit comme si ça résolvait tout.
00:04:34Ça ne résout pas tout, d'accord ? Il y a toujours des points de vigilance.
00:04:38Il y aura des compromis et vous devriez savoir quoi surveiller avant même d'y toucher.
00:04:43Ce que les gens adorent ici est assez évident. C'est rapide à construire. On passe de l'idée à une API fonctionnelle très vite.
00:04:51Et ça passe très bien à l'échelle aussi. En plus de cela, Supabase en est un peu la preuve.
00:04:55Ils l'utilisent. Mais les inconvénients sont, par exemple, qu'une utilisation intensive de la RLS va augmenter la charge de la base de données.
00:05:02Vous devez donc réfléchir soigneusement à la conception. Une logique complexe peut vous pousser vers beaucoup de fonctions SQL ou de vues.
00:05:10Et certains adorent ça, tandis que d'autres vont détester. Alors, devriez-vous l'utiliser ou même essayer ?
00:05:15Oui, pour les bons projets. Si vous construisez des prototypes, des MVP ou n'importe quoi centré sur Postgres, alors bien sûr, pourquoi ne pas essayer ?
00:05:23Vous irez plus vite. Vous écrirez moins de code et vous obtiendrez des paramètres de sécurité plus robustes en poussant les règles dans la base de données.
00:05:32Maintenant, si votre application a une logique vraiment complexe, vous voudrez peut-être toujours une fine couche backend par-dessus, un petit layer BFF pour les cas particuliers.
00:05:40Mais même là, Postgres peut faire le plus gros du travail en dessous. Donc le point essentiel est celui-ci : Postgres vous permet de livrer plus vite, de mieux sécuriser et de moins maintenir.
00:05:50Votre base de données devient la source réelle des données, et votre API en découle au lieu de devenir son propre système séparé.
00:05:58Si vous appréciez les outils et conseils de codage comme celui-ci, abonnez-vous à la chaîne Better Stack. On se voit dans une autre vidéo.

Key Takeaway

PostgREST élimine le besoin de couches ORM et de contrôleurs manuels en transformant le schéma PostgreSQL en une API REST sécurisée par RLS, réduisant ainsi la maintenance de 80 %.

Highlights

PostgREST transforme directement un schéma de base de données PostgreSQL en une API REST fonctionnelle sans nécessiter de code backend personnalisé.

L'utilisation de cet outil permet de supprimer environ 80 % du code traditionnellement dédié aux routes, aux contrôleurs et aux couches ORM.

Le projet affiche plus de 26 000 étoiles sur GitHub et propulse l'infrastructure de production de Supabase.

La sécurité repose sur le Row Level Security (RLS) de PostgreSQL, intégrant les règles d'accès directement dans la base de données plutôt que dans un middleware externe.

L'outil génère automatiquement une documentation interactive via Swagger UI et expose un CRUD complet avec filtrage, tri et pagination dès le démarrage.

Une configuration minimale nécessite seulement trois conteneurs Docker pour faire fonctionner PostgreSQL, PostgREST et l'interface Swagger.

Le recours intensif au RLS et aux fonctions SQL peut augmenter la charge de calcul du serveur de base de données.

Timeline

Élimination de la redondance dans la pile technique

  • Le développement backend traditionnel duplique souvent la logique entre la base de données, la validation et les contrôleurs.
  • PostgREST simplifie l'architecture en faisant de la base de données la source unique de vérité pour l'API.
  • Les changements de colonnes ne brisent plus l'API car celle-ci suit dynamiquement le schéma.

Le développement d'API classiques impose la création répétitive de routes et de validateurs qui se cassent dès que la structure des données évolue. PostgREST supprime ces couches de traduction inutiles en exposant directement les données de manière structurée. Cette approche est déjà validée à grande échelle par des plateformes comme Supabase qui gèrent un trafic de production intensif.

Déploiement technique et infrastructure minimale

  • Un fichier Docker Compose avec trois services suffit pour obtenir une infrastructure complète.
  • L'installation ne requiert aucune dépendance logicielle complexe ni configuration de serveur manuelle.
  • Une simple table SQL définie avec des types standards devient instantanément un point de terminaison API.

La configuration repose sur trois briques : PostgreSQL pour le stockage, PostgREST pour l'interface et Swagger UI pour la documentation. Le lancement s'effectue via une commande Docker Compose unique, rendant l'environnement opérationnel en moins d'une minute. Une table 'todos' avec des colonnes ID et titre est immédiatement accessible via des requêtes HTTP sans intervention supplémentaire.

Sécurité native et fonctionnalités automatiques

  • Le Row Level Security (RLS) définit les permissions d'accès directement en SQL.
  • Les commandes Curl permettent d'effectuer des tris, des filtres et des créations de données immédiatement.
  • Swagger UI auto-génère une interface interactive pour tester les points de terminaison et consulter les schémas.

La logique d'authentification ne réside plus dans le code backend mais dans les politiques SQL de la base de données. Cela permet d'isoler les données au niveau de la ligne, garantissant qu'un utilisateur ne voit que ce qui lui est autorisé. L'API supporte nativement des fonctionnalités complexes comme la pagination et les corps JSON sans qu'une seule ligne de JavaScript ou de Python ne soit écrite.

Comparaison avec le développement traditionnel et limites

  • L'architecture traditionnelle multiplie les risques de bugs en dispersant la logique dans des services et des middlewares.
  • Le passage à PostgREST réduit les coûts de maintenance à long terme en synchronisant l'API et le schéma.
  • La logique métier très complexe peut nécessiter l'usage de fonctions SQL ou d'une légère couche Backend-for-Frontend.

Bien que PostgREST accélère drastiquement la création de MVP et de prototypes, il impose des compromis techniques. Une logique métier dense peut entraîner une surutilisation des vues SQL et des fonctions stockées, ce qui augmente la charge sur le processeur de la base de données. Pour les cas extrêmes, une fine couche backend additionnelle peut compléter le système pour gérer des scénarios spécifiques tout en laissant PostgREST traiter 80 % du flux de données.

Community Posts

View all posts