Backend · Especialidad técnica

Backend Go sobre
Cloud Run y Kubernetes.

Servicios Go production-ready para empresas que necesitan latencia p99 estable, autoscaling sin sorpresas y observabilidad real desde el día 1. Equipo 100% senior in-house.

Es la lengua del cloud moderno por una razón: mismo binario en local, en CI y en producción. Sin GIL, sin runtime warmup, sin frameworks asíncronos pesados. Aquí está cómo lo aplicamos.

<100 ms

Cold-start típico en Cloud Run con binario Go optimizado

<30 MB

Imagen Docker final con multi-stage build

0 → N

Autoscaling transparente, coste 0 € en idle

100%

Equipo senior in-house. Cero subcontratas

Por qué Go

Seis razones por las que Go es la lengua razonable para servicios cloud-native modernos.

No vendemos Go por moda. Lo elegimos cuando reduce coste de operación, mejora SLA o simplifica el modelo mental del sistema. Aquí lo concreto.

Latencia p99 estable bajo carga

Sin GIL, sin warmup runtime, sin cold-start prohibitivo en Cloud Run. Un binario Go arranca en <100 ms y mantiene p99 estable a alta concurrencia. Lo que en Node o Python requiere ajustes constantes, en Go es el default.

🧵

Concurrencia nativa con goroutines

Fan-out a múltiples APIs externas (Claude, Stripe, BigQuery) en paralelo es trivial: una goroutine por llamada, un sync.WaitGroup, errgroup.Group con cancelación. Sin event loops, sin async/await, sin frameworks asíncronos pesados.

📦

Binario único, footprint mínimo

Imagen Docker final de <30 MB con multi-stage build. Cero dependencias de runtime, cero compatibility hell. Cloud Run autoscaling 0→N transparente, coste por instancia inactiva = 0 €.

🛡️

Tipado fuerte y compilación estricta

El compilador Go captura errores que en Python o JavaScript llegan a producción. APIs internas con structs tipados, manejo de errores explícito, race detector en testing. Menos bugs, menos PagerDuty.

🔭

Observabilidad madura de serie

OpenTelemetry SDK oficial, instrumentación HTTP / gRPC / SQL out-of-the-box, structured logging con slog (Go 1.21+), pprof para profiling en producción. Sin parchear ecosistemas como en Node.

🌐

Cloud-native por diseño

Go es la lengua del cloud moderno: Kubernetes, Docker, Terraform, etcd, Prometheus, Grafana — todos escritos en Go. Las librerías oficiales de GCP, AWS y Azure tienen soporte first-class. La integración con Cloud Run, Pub/Sub, Spanner es natural.

Stack y elecciones

Lo que usamos por defecto y cuándo nos salimos del default.

Decisiones tomadas en producción real. Sin frameworks de moda, sin abstracciones que paga el cliente cuando se rompen.

Capa

HTTP / API

chi · echo · fiber

chi para routers idiomáticos y middleware nativo net/http. echo o fiber cuando quieres más batteries-included (binding, validators). Evitamos frameworks pesados tipo Beego.

Persistencia

pgx · sqlc · ent

pgx para Postgres directo (zero ORM overhead). sqlc para generar código tipado desde SQL real. ent cuando el dominio justifica un ORM con migraciones declarativas.

Mensajería

Pub/Sub · NATS · Kafka

Pub/Sub para integración GCP nativa. NATS cuando necesitas latencia <1 ms y no quieres lock-in. Kafka solo si ya hay equipo de plataforma manteniéndolo.

Observabilidad

OpenTelemetry · slog · pprof

OTel para tracing, métricas y logs estructurados, exportado a Cloud Trace, Datadog o Grafana. slog (Go 1.21+) como logger estándar. pprof always-on para profiling reactivo.

Testing

testify · gomock · go-test-deep

Tests de tabla con testify/assert. Mocks generados con mockgen. Race detector activo en CI. Tests de integración contra Postgres real con testcontainers-go.

Despliegue

Cloud Run · GKE · Terraform

Cloud Run para servicios HTTP/gRPC stateless con autoscaling. GKE cuando hay sidecars, jobs cron complejos o stateful workloads. Terraform para todo lo que toque infra — sin clicks en consola.

Casos de uso

Dónde Go gana en producción.

Servicios que escalan a millones de peticiones, latencia subsegundo, observabilidad madura y operación predecible.

🤖

Backend de agentes IA

Servicios Go que orquestan llamadas a LLMs (Claude, OpenAI), function tools sobre data warehouse y persistencia. Caso documentado: CityXerpa — 4 h → 8 s.

Ver caso CityXerpa →
📱

API gateway para apps Flutter

Backend Go que sirve a apps Flutter en producción con millones de peticiones. Auth, rate limiting, agregación de microservicios y caching agresivo en una sola capa.

🔁

Procesamiento de eventos a escala

Workers Go consumiendo de Pub/Sub o Kafka, con pool de goroutines acotado, dead-letter queue y backpressure. 10× throughput vs equivalentes en Node sin esfuerzo extra.

💳

Servicios fintech con SLA estricto

Pricing engines, payment routers y servicios de scoring donde p99 < 100 ms es requisito contractual. Go entrega ese SLA sin ajuste fino constante.

🔗

Integraciones B2B y middleware

Conectores entre ERPs, CRMs y APIs externas. Los binarios Go se despliegan donde haga falta — Cloud Run, GKE, on-prem — sin cambiar código.

📊

ETL y pipelines de datos

Procesadores de batch e ingestión streaming hacia BigQuery, Redshift o Snowflake. Concurrencia nativa hace que Go compita con Spark para muchos casos por una décima del coste.

Proceso

De auditoría a producción en 8–12 semanas.

Sprints quincenales, demos en vivo cada dos viernes, precio fijo tras Discovery. Sin sorpresas en factura.

01

Discovery técnico

Auditoría del problema actual (latencia, coste, deuda técnica), revisión del stack existente y definición del SLO objetivo. Decidimos juntos si Go encaja o si la respuesta correcta es otra.

1 sem

02

Diseño y prototipo

Arquitectura del servicio en Go: routing, contratos, persistencia, mensajería, observabilidad. Prototipo funcional desplegado en Cloud Run con tests de carga reales.

2–3 sem

03

Implementación

Desarrollo del servicio production-ready: handlers, middleware, manejo de errores, logging estructurado, tests de tabla y de integración con testcontainers, CI/CD a Cloud Run.

4–8 sem

04

Despliegue y handover

Rollout progresivo (canary), runbooks, dashboards Grafana / Cloud Monitoring, documentación de operación. Sesión de traspaso al equipo del cliente o continuamos como soporte 24/7.

1–2 sem

Caso técnico relacionado

CityXerpa: agente IA con Claude + BigQuery + backend Go.

Tickets de soporte de 4 h a 8 s. Servicio Go en Cloud Run que orquesta function calling sobre BigQuery. Stack desglosado, métricas y roadmap de 10 mejoras documentado.

VER EL CASO →

FAQ técnica

Las preguntas que nos hace cualquier CTO la primera semana.

Cada uno encaja en un caso. Para servicios en path crítico de cliente con SLA real y autoscaling agresivo, Go gana en latencia, footprint, concurrencia y simplicidad operacional. Node es razonable cuando el equipo es JavaScript end-to-end y la carga es moderada. Python para ML/data science y prototipado. Java para entornos con ecosistema enterprise muy asentado. No vendemos Go a quien no le encaja.

Cloud Run es la respuesta correcta para el 80% de servicios HTTP/gRPC stateless: autoscaling 0→N transparente, sin gestionar nodos, sin pods crashloop, deploy en minutos. GKE entra cuando necesitas sidecars, jobs cron complejos, stateful workloads o control fino sobre la red. Para servicios sencillos, GKE añade complejidad operacional sin beneficio.

Stack estándar: OpenTelemetry SDK oficial para tracing y métricas, exportado a Cloud Trace o Datadog según preferencia del cliente. structured logging con slog (Go 1.21+) escribiendo JSON a stdout que Cloud Logging indexa. Prometheus-compatible metrics expuestos en /metrics. pprof always-on detrás de auth para profiling reactivo. Dashboards Grafana o Cloud Monitoring con SLIs/SLOs por endpoint.

Por defecto, hexagonal liviana: handlers HTTP/gRPC, capa de aplicación con casos de uso, dominio puro testable y adaptadores hacia infra (DB, colas, APIs externas). Sin DDD ortodoxo a menos que el dominio lo justifique — sobre-engineering es el enemigo. Tests de tabla en el dominio, integración con testcontainers en adaptadores. Linting con golangci-lint en CI, race detector activo en tests.

Las dos cosas. Migraciones típicas: monolitos PHP/Ruby/Python con cuellos de botella en latencia que se trocean en microservicios Go por dominio. La migración suele ser strangler pattern — el servicio Go nuevo recibe progresivamente porcentajes del tráfico vía proxy, sin big-bang. Mantenemos compatibilidad de API mientras dura el cambio.

Cinco gates: (1) golangci-lint con configuración estricta en CI; (2) tests con cobertura mínima negociable (60–80% según criticidad); (3) race detector en CI; (4) revisión por pares obligatoria con un senior antes del merge; (5) integración con testcontainers contra dependencias reales (Postgres, Redis), no mocks. Cero excepciones.

Un microservicio Go bien definido en Cloud Run con persistencia, observabilidad y CI/CD parte de 25.000–40.000 € en desarrollo. Migraciones más complejas (de Python o Node a Go con strangler pattern) se sitúan en 60.000–150.000 € según alcance. Soporte mensual desde 3.500 €/mes con SLA negociable. Precio fijo tras Discovery.

Sí, cuando el caso lo justifica: stateful workloads (databases, brokers de cola), jobs cron complejos, sidecars (Istio, OPA), o requisitos de red avanzados. Para greenfield empezamos en Cloud Run y migramos a GKE solo si aparece la necesidad real. Provisioning con Terraform, deployments con Helm, observabilidad con Prometheus + Grafana.

¿Tu backend tiene un cuello de botella?

Auditoría técnica en 2 semanas.
Plan de acción concreto.

Latencia, coste, deuda técnica, observabilidad. Te entregamos un informe ejecutivo con prioridades y un plan de migración a Go (o lo que tenga sentido) — aunque el plan no nos contrate.

Equipo 100% senior in-house en Barcelona y Andorra · Respuesta en 24 h