Backend et API

Des backends et des API qui tiennent la charge

Nous concevons et construisons la partie du produit que personne ne voit jusqu'à ce qu'elle casse : les API, les modèles de données, l'authentification et les intégrations qui tiennent une entreprise ensemble.

Là où les backends déraillent habituellement

Les problèmes de backend concernent rarement la vitesse brute. Ils concernent un modèle de données qui convenait à la première version et exige aujourd'hui trois jointures et une sous-requête pour répondre à une question de routine ; une API qui renvoie un HTTP 200 avec une erreur dans le corps, obligeant chaque client à deviner ; des intégrations qui échouent silencieusement à 3 heures du matin et qu'on découvre quinze jours plus tard par une réclamation client.

Les décisions coûteuses se prennent tôt et se défont difficilement. La normalisation du schéma, l'emplacement des frontières entre services, la séparation de l'authentification et de l'autorisation, le versionnage de l'API. Se tromper reste supportable un moment, puis cesse brusquement de l'être.

Nous préférons passer une semaine sur le modèle de données qu'un trimestre à le migrer.

Ce que nous construisons

Des API conçues pour ceux qui les consomment

REST ou GraphQL, choisi en fonction des clients qui l'utiliseront et non par préférence. Gestion cohérente des erreurs avec les bons codes de statut, pagination qui tient sur de grandes collections, et versionnage en place avant d'en avoir besoin — car l'ajouter après coup pendant que des clients sont en production est douloureux.

Des modèles de données qui survivent à la prochaine fonctionnalité

Conception de schéma pensée pour les requêtes que vous exécuterez réellement, indexation appropriée et migrations réversibles. Nous utilisons des bases relationnelles, documentaires ou graphes selon la forme des données plutôt que par habitude.

Authentification et autorisation, tenues séparées

Authentification par session ou par jeton conforme aux pratiques actuelles, et un modèle de permissions vérifié côté serveur à chaque requête. Confondre qui vous êtes et ce que vous avez le droit de faire est l'une des causes les plus fréquentes de failles de contrôle d'accès.

Des intégrations qui échouent bruyamment

Connexions à des tiers avec reprises, temporisation exponentielle, idempotence et file d'attente des messages morts, ainsi qu'une alerte quand quelque chose s'arrête. Une intégration en échec doit réveiller quelqu'un, pas s'accumuler en silence.

Traitements en arrière-plan et planification

Des files d'attente pour tout ce qui est lent, peu fiable ou en pics — imports, exports, génération de documents, notifications — afin qu'une requête utilisateur n'attende jamais un tiers.

De l'observabilité dès le premier déploiement

Journalisation structurée, points de contrôle de santé et métriques sur les chemins qui comptent. Diagnostiquer un incident en production doit être une requête, pas une fouille archéologique.

Les technologies que nous employons

Exécution

  • Node.js
  • Express
  • TypeScript

PHP

  • Laravel
  • PHP

API

  • REST
  • GraphQL
  • OpenAPI
  • Webhooks

Bases de données

  • MySQL
  • MongoDB
  • Neo4j

Exploitation

  • Docker
  • Azure
  • GitHub Actions

Nous choisissons parmi celles-ci selon les besoins du projet et selon ce que votre équipe saura maintenir après la livraison — et non selon nos préférences. Lorsqu'une pile technique est déjà en place et saine, nous travaillons avec elle.

Missions types

Une API pour un client mobile ou web

Construire la partie serveur d'un produit dont l'interface est déjà conçue ou déjà développée, y compris l'authentification et le modèle de données en dessous.

Sauver une base de données lente

Profilage des requêtes, travail sur les index et modifications de schéma sur un système qui a dépassé sa conception initiale. Souvent moins cher et plus rapide que la montée en puissance de l'infrastructure envisagée à la place.

Décomposer un monolithe, de façon sélective

Extraire les parties d'une grande application qui ont réellement besoin d'être mises à l'échelle ou déployées indépendamment — et laisser tranquilles celles qui n'en ont pas besoin, soit la plupart.

Relier des systèmes qui ne se parlent pas

Travail d'intégration entre des plateformes aux hypothèses incompatibles sur l'identité, le temps et la forme des données. La valeur réside dans le traitement correct des cas limites.

Les questions qu'on nous pose à ce sujet

Node.js ou Laravel — que choisir ?

Les deux sont capables de faire tourner des systèmes de production sérieux ; la décision tient donc davantage au contexte qu'aux tests de performance. Node avec TypeScript permet de partager les types et le langage avec un frontend React, et convient au temps réel et aux entrées-sorties à forte concurrence. Laravel apporte beaucoup de structure d'emblée — authentification, files d'attente, planification, ORM — ce qui mène souvent plus vite à un produit fonctionnel pour des applications de gestion classiques. Les compétences de votre équipe actuelle doivent peser lourd, car la maintenabilité dure plus longtemps que le développement.

REST ou GraphQL ?

REST est plus simple à mettre en cache, plus simple à déboguer et suffisant pour la plupart des applications. GraphQL justifie sa complexité supplémentaire quand de nombreux clients différents ont besoin de formes différentes des mêmes données, ou quand des clients mobiles multiplient les allers-retours. Choisir GraphQL pour un seul client web ajoute généralement du travail sans contrepartie.

Pouvez-vous améliorer un backend existant plutôt que le remplacer ?

Le plus souvent, et c'est normalement la meilleure économie. Nous commençons par du profilage et une revue, puis nous ciblons les goulots d'étranglement précis. Les réécritures complètes sont un dernier recours : elles prennent plus longtemps que prévu et suspendent le travail sur les fonctionnalités pendant toute leur durée.

Prenez-vous en charge l'hébergement et le déploiement ?

Nous mettons en place la chaîne de déploiement, la conteneurisation et les environnements, et nous pouvons gérer l'infrastructure dans la durée ou la confier à votre équipe avec sa documentation. Les comptes restent à votre nom dans les deux cas.

Comment abordez-vous la sécurité ?

Validation côté serveur de chaque entrée, requêtes paramétrées, secrets tenus hors du dépôt, analyse des dépendances dans l'intégration continue, accès au moindre privilège, et pratiques actuelles pour le stockage des mots de passe et la gestion des sessions. Nous ne sommes pas un cabinet de tests d'intrusion ; pour des systèmes traitant des données réglementées, nous recommanderons également une évaluation indépendante.

Un projet de backend et api ?

Envoyez-nous le problème et les contraintes que vous connaissez déjà. Nous reviendrons vers vous avec ce que nous pensons qu'il exige, une approche et un ordre de grandeur réaliste — ou pour vous dire que ce n'est pas un travail pour lequel nous sommes les bons.

Démarrer la conversation