13 puntos por narubrown 2026-01-18 | 2 comentarios | Compartir por WhatsApp
  • Spine es un framework web backend basado en Go que hace explícito el flujo de ejecución en lugar de ocultarlo
  • Un solo Pipeline es dueño de todo el orden de ejecución, y el Controller se enfoca únicamente en la lógica de negocio
  • La firma del método es el contrato del API, y no hay automatización basada en anotaciones ni convenciones
  • El orden de la solicitud se ve con claridad en el código
  • Se enfoca menos en la productividad inicial y más en la mantenibilidad a largo plazo y en la facilidad para rastrear el flujo de ejecución
  • Usa Echo como HTTP Transport, y su diseño es independiente del ORM, por lo que se puede elegir libremente entre Bun, GORM, etc.

Resumen de Spine

Spine es un framework cuyo objetivo es hacer explícito el flujo de ejecución de las solicitudes web
Fija en la estructura del código el orden de ejecución que la mayoría de los frameworks ocultan por conveniencia
Apunta a una estructura capaz de responder con claridad: "dónde empieza una solicitud, quién la procesa y en qué orden se ejecuta"

Principios de diseño

Política de no magia

  • Pipeline es el único componente que conoce el orden de ejecución
  • Se minimiza el comportamiento que "lo hace por ti"
  • Toda extensión y ejecución se registra de forma explícita y tiene un orden predecible

Contrato basado en firmas

  • La firma del método es el contrato del API
  • ArgumentResolver se encarga de crear las entradas y ReturnValueHandler de procesar las salidas
  • No se permite mapeo basado en anotaciones ni inferencia automática basada en convenciones

Independencia del Controller

  • El Controller no depende de tipos HTTP/Transport
  • Solo usa tipos semánticos como path., query., httperr.*
  • No conoce el modelo de ejecución, pero el origen de las entradas se especifica mediante tipos

Funciones principales

Routing y parámetros

  • Soporte para Path Parameter (binding basado en orden)
  • Utilidades para Query Values (parseo de Int, String, Boolean)
  • Binding automático de Body DTO

Manejo de respuestas

  • Conversión automática de struct -> JSON mediante ReturnValueHandler
  • Mapeo automático de error -> código de estado HTTP
  • Tipos de error semánticos como httperr.NotFound, BadRequest, etc.

Intereses transversales

  • Interceptor (PreHandle, PostHandle, AfterCompletion)
  • CORS Interceptor integrado
  • IoC Container basado en constructores

Arquitectura

  • Separación de la capa Transport (actualmente Echo, diseñado para poder reemplazarse)
  • Diseño independiente del ORM (se puede usar libremente Bun, GORM, etc. ⚠️ por ahora solo se ha verificado compatibilidad con Bun)

Fortalezas en entornos grandes

Como solo hay un actor que conoce el orden de ejecución, se reduce el costo de rastrear el flujo de solicitudes
Los intereses transversales como logging, transacciones y seguridad se colocan únicamente en Pipeline, por lo que el punto y el momento de aplicación son predecibles; la estrategia consiste en sacrificar parte de la productividad inicial para absorber mediante estructura la complejidad que crece a largo plazo

Lo que Spine no es

  • No es un reemplazo de Spring/NestJS
  • No es un framework orientado a maximizar la productividad
  • No es un framework de automatización basado en anotaciones
  • No es un framework centrado en el HTTP Engine o el Router

Proyectos donde Spine necesita ayuda

Spine aún no es un framework terminado; intencionalmente se ha publicado con muchas partes incompletas
Hace falta validar si la estructura se explica lo suficientemente bien y si el modelo de ejecución revela correctamente los problemas reales

Cómo participar

  • Dar ⭐️ al proyecto en GitHub para seguirlo de cerca
  • Probarlo y dejar impresiones o dudas en un issue
  • Dejar en los comentarios críticas, sugerencias o preguntas sobre el diseño

Enlaces de referencia

2 comentarios

 
bsh998 2026-01-20

Creo que la credibilidad aumentaría si retocan un poco la explicación generada por IA y la redactan con frases más naturales.

 
narubrown 2026-01-20

Hola, muchas gracias por tus comentarios.
¿Te refieres a que parece generado por IA en la publicación de GeekNews?

Pensé que aquí originalmente había que escribir así ^^… Como otras publicaciones también eran así, lo redacté intencionalmente de esa manera.

https://spine.na2ru2.me/ko/
Además, también abrí un sitio donde se puede aprender spine.
Si te interesa, échale un vistazo también. Gracias.