v1.0.0

Trabajos en background
sin librería.

GFire es un servicio Go headless: las apps encolan trabajo por HTTP, los workers ejecutan binarios externos y el estado vive en PostgreSQL, Redis o ValKey. v1.0.0 — listo para producción: bulk enqueue, cron recurrente, métricas Prometheus, CLI y tests E2E incluidos.

curl -fsSL https://get.gfire.hermesrodriguez.com/install.sh | sh

// 01 · Servicio headless

Un solo binario, sin UI embebida. Tu app nunca importa GFire como librería — solo HTTP y curl.

// 02 · Storage multi-backend

PostgreSQL con SKIP LOCKED, Redis/ValKey con BRPOP y scripts Lua. Elige el backend que encaje con tu stack.

// 03 · Escala horizontal

Nodos peer, storage compartido, sin Raft. Añade pods; se coordinan vía storage.

// Releases recientes

v1.0.02026-07-28PRODUCTION-READY
  • Bulk enqueue with partial acceptance (POST /v1/jobs/enqueue/batch)
  • Recurring cron jobs with distributed lock (robfig/cron)
  • CLI: gfire migrate, queue list, server status
  • Prometheus GET /metrics endpoint
  • Idempotency-Key for client retry deduplication
  • OpenAPI spec at GET /openapi.json
  • E2E test: docker-compose → curl → CLI verification
v0.6.12026-07-11AUDIT HARDENING
  • Band 7 audit hardening — request IDs, logging, metrics polish
  • Server shutdown grace period and drain
v0.6.02026-07-11USABLE PREVIEW
  • Band 3 engine — workers, retry, cancel, DLQ, result capture
  • REST API and CLI available for early testing

Changelog completo en GitHub

// Cómo funciona

Notas técnicas · v1.0.0

// Orquestación lista para producción

GFire es un servicio headless de orquestación de trabajos: cualquier cliente con HTTP puede encolar sin importar una librería atada a un runtime. v1.0.0 incluye el stack completo — backends PostgreSQL (SKIP LOCKED), Redis y ValKey, API REST con bulk enqueue y claves de idempotencia, trabajos recurrentes con distributed locks, CLI, métricas Prometheus y suite E2E. Agnóstico por diseño; los handlers son binarios externos.

// Arquitectura Redis / ValKey

go-redis/v9

Un driver para Redis y ValKey: cambia la dirección, misma implementación. Compatible con forks open source y Redis gestionado.

BRPOP (push por bloqueo)

Los workers bloquean en la cola en lugar de hacer polling. Menos CPU y red; un job despierta al worker en cuanto llega.

Scripts Lua

N nodos GFire peer comparten storage — sin Raft entre pods. Lua mueve jobs de forma atómica (p. ej. encolado → en ejecución); la capa de datos evita condiciones de carrera.

Sorted sets (ZSET)

Jobs diferidos y programados usan score = timestamp Unix. El scheduler solo extrae trabajo ya vencido — escala con backlogs grandes.

// Comparativa

GFire es standalone y sidecar-ready: encola con curl o cualquier cliente HTTP/JSON — sin SDK en tu app. A diferencia del protocolo TCP de Faktory o librerías in-process (Sidekiq, Asynq, River), los handlers son binarios externos.

Matriz completa en el repo

// Handlers externos

GFire no ejecuta tu lógica de negocio in-process. Los workers hacen dequeue y lanzan un subproceso por job (`cmd` en YAML). Handlers en Go, Python, Node, shell — GFire supervisa exit code, reintentos y continuaciones. Los handlers no hablan con Redis/PostgreSQL; el servicio posee el contrato de storage.

Instruction cards (~1 KB)

Los jobs son disparadores pequeños, no payloads pesados. Los datos viven en S3 o tu base de datos; GFire transporta la instrucción. Memoria Redis predecible y sin inestabilidad por mensajes grandes.

// Inicio rápido

Instala el CLI y verifica el binario (hoy: gfire version).

$ curl -fsSL https://get.gfire.hermesrodriguez.com/install.sh | sh
$ gfire version

v1.0.0 — release estable. API REST, worker engine y CLI completos.

Hitos planificados:ROADMAP.md

// Repositorios