Sobre el proyecto
Goa es un framework centrado en el diseño para construir servicios en Go. En lugar de escribir handlers, clientes y especificaciones por separado, describes tipos, métodos, validación y errores una sola vez en un DSL basado en Go, y el generador produce el resto.
Lo que el generador produce a partir de un único diseño:
- Interfaces de servicio tipadas, endpoints, clientes y validación de límites
- Handlers de servidor HTTP, codificadores/decodificadores, clientes Go, comandos CLI y especificaciones OpenAPI
- Definiciones de Protocol Buffer para gRPC, adaptadores de servidor/cliente, serialización y comandos CLI
- Código de servidor/cliente JSON-RPC, despacho de solicitudes, lotes y notificaciones
- Soporte de streaming: WebSocket y SSE para HTTP, SSE para JSON-RPC y streams gRPC
- Vistas de resultados nombradas con código para seleccionar y serializar formas de respuesta
Una única definición de servicio puede exponer la misma operación a través de HTTP, gRPC y JSON-RPC. Los transportes generados comparten una interfaz de servicio, por lo que la lógica de negocio se implementa una vez en Go ordinario fuera del árbol generado. Cambiar el diseño y regenerar actualiza handlers, clientes, validación y especificaciones juntos, lo que reduce la divergencia entre código y documentación.
El README también destaca un flujo de trabajo con agentes de codificación: una habilidad de "diseñador de servicios Goa" se puede instalar en un repositorio de aplicaciones para guiar cambios de diseño, generación, implementación y verificación. El proyecto señala a Goa-AI para construir agentes de IA y servidores MCP que reutilizan tipos de Goa y vinculan herramientas a métodos de servicio, con motores de ejecución en memoria o Temporal.
Para comenzar se requiere Go 1.26 o posterior (se recomienda 1.27.1). Una guía de inicio rápido recorre la inicialización de un módulo, la escritura de un diseño, la ejecución del generador y comandos de ejemplo, y la llamada al servicio resultante. Para los tres transportes, se necesitan el compilador de Protocol Buffer y los generadores de protobuf para Go; una primera ejecución solo con HTTP puede omitir los bloques de gRPC y JSON-RPC.
La documentación cubre la referencia del DSL, la generación de código, guías específicas de transporte, temas de producción como esquemas de seguridad e interceptores, y un conjunto de aplicaciones de ejemplo. El proyecto tiene licencia MIT y acepta contribuciones de la comunidad.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.