13 points par narubrown 2026-01-18 | 2 commentaires | Partager sur WhatsApp
  • Spine est un framework web backend en Go qui expose explicitement le flux d’exécution au lieu de le masquer
  • Un Pipeline unique possède l’ordre complet d’exécution, et le Controller se concentre uniquement sur la logique métier
  • La signature de méthode constitue le contrat d’API, sans annotations ni automatisation basée sur des conventions
  • L’ordre de traitement d’une requête est clairement visible dans le code
  • L’accent est mis moins sur la productivité initiale que sur la maintenabilité à long terme et la facilité de suivi du flux d’exécution
  • Echo est utilisé comme transport HTTP, avec une conception indépendante de l’ORM permettant de choisir librement Bun, GORM, etc.

Aperçu de Spine

Spine est un framework dont l’objectif est de rendre explicite le flux d’exécution des requêtes web
Là où la plupart des frameworks masquent l’ordre d’exécution pour plus de confort, Spine l’ancre dans la structure du code
Il vise une structure capable de répondre clairement à la question : « où commence la requête, qui la traite, et dans quel ordre s’exécute-t-elle ? »

Principes de conception

Politique sans magie

  • Le Pipeline est le seul composant à connaître l’ordre d’exécution
  • Les comportements qui « font les choses automatiquement » sont réduits au minimum
  • Toute extension et toute exécution sont enregistrées explicitement et suivent un ordre prévisible

Contrat fondé sur la signature

  • La signature de méthode constitue le contrat d’API
  • La création des entrées est assurée par ArgumentResolver, et le traitement des sorties par ReturnValueHandler
  • Les mappings par annotation et les inférences automatiques fondées sur des conventions sont exclus

Indépendance du Controller

  • Le Controller ne dépend pas des types HTTP/transport
  • Il n’utilise que des types sémantiques comme path., query., httperr.*
  • Il ignore le modèle d’exécution, mais la source des entrées est explicitée par les types

Fonctionnalités principales

Routage et paramètres

  • Prise en charge des Path Parameters (binding basé sur l’ordre)
  • Utilitaires Query Values (parsing Int, String, Boolean)
  • Binding automatique du Body DTO

Traitement des réponses

  • Conversion automatique struct -> JSON via ReturnValueHandler
  • Mapping automatique de error -> code de statut HTTP
  • Types d’erreurs sémantiques comme httperr.NotFound, BadRequest, etc.

Préoccupations transverses

  • Interceptor (PreHandle, PostHandle, AfterCompletion)
  • Intercepteur CORS intégré
  • Conteneur IoC basé sur les constructeurs

Architecture

  • Séparation de la couche Transport (actuellement Echo, conçue pour être remplaçable)
  • Conception indépendante de l’ORM (Bun, GORM, etc. peuvent être utilisés librement ⚠️ seule la compatibilité avec Bun a été vérifiée à ce jour)

Points forts en environnement de grande ampleur

Comme un seul acteur connaît l’ordre d’exécution, le coût de suivi du flux des requêtes diminue
Les préoccupations transverses comme le logging, les transactions et la sécurité ne sont placées que dans le Pipeline, ce qui rend prévisibles leur point d’application et leur timing ; c’est une stratégie qui renonce partiellement à la productivité initiale pour absorber structurellement la complexité croissante sur le long terme

Ce que Spine n’est pas

  • Ce n’est pas un remplaçant de Spring/NestJS
  • Ce n’est pas un framework visant à maximiser la productivité
  • Ce n’est pas un framework d’automatisation basé sur les annotations
  • Ce n’est pas un framework centré sur un moteur HTTP ou un routeur

Spine est un projet qui a besoin d’aide

Spine n’est pas encore un framework achevé ; de nombreuses parties ont été publiées volontairement dans un état inachevé
Il reste à vérifier si la structure est suffisamment explicable et si le modèle d’exécution met correctement en lumière les problèmes réels

Comment participer

  • Mettre un ⭐️ sur GitHub pour suivre le projet
  • Laisser une issue avec vos impressions ou vos questions après l’avoir essayé
  • Laisser en commentaire vos critiques, suggestions ou questions sur la conception

Liens de référence

2 commentaires

 
bsh998 2026-01-20

Je pense que la crédibilité serait renforcée si la description générée par l'IA était légèrement retouchée pour être formulée de manière plus naturelle.

 
narubrown 2026-01-20

Bonjour, merci beaucoup pour votre retour.
Quand vous dites que cela ressemble à de l’IA, vous parlez du post sur GeekNews ?

Je pensais qu’il fallait écrire comme ça ici ^^… Comme les autres posts étaient rédigés de cette manière, j’ai volontairement fait pareil.

https://spine.na2ru2.me/ko/
J’ai également ouvert un site pour apprendre Spine.
Si cela vous intéresse, n’hésitez pas à y jeter un œil, merci.