BFF con Go (Parte 5): Observabilidad, Feature Flags y Entornos

Apr 2, 2025 10 min

BFF con Go (Parte 5): Observabilidad, Feature Flags y Entornos 👁️‍🗨️🚩🌍

Después de asegurar, testear, documentar y desplegar nuestro BFF en Go, en esta quinta parte nos enfocamos en cómo mantenerlo operativo, flexible y adaptable en producción.

Veremos cómo:

  • 👁️‍🗨️ Añadir observabilidad con logs estructurados y trazas
  • 🚩 Aplicar feature flags sin redeploys
  • 🌍 Separar entornos de forma segura con archivos .env y variables de entorno

👁️‍🗨️ 1. Observabilidad con logs estructurados y trazabilidad

Usa logrus o zap para logging estructurado:

go get github.com/sirupsen/logrus
import log "github.com/sirupsen/logrus"

log.SetFormatter(&log.JSONFormatter{})
log.WithFields(log.Fields{
  "endpoint": "/users",
  "status": 200,
}).Info("Request procesado")

Para trazabilidad distribuida, puedes integrar OpenTelemetry:

go get go.opentelemetry.io/otel/sdk

Y propagar trace_id por headers para seguir requests entre microservicios.


🚩 2. Feature Flags

Utiliza herramientas como Unleash o Flagsmith para activar o desactivar funcionalidades dinámicamente:

if featureFlags.IsEnabled("nueva_pagina") {
  renderNewPage()
} else {
  renderOldPage()
}

También puedes hacerlo con simples variables de entorno mientras creces:

if os.Getenv("FEATURE_NUEVA_PAGINA") == "true" {
  // Activar nueva funcionalidad
}

Esto evita redeploys y permite pruebas A/B.


🌍 3. Separación de entornos con .env

Usa github.com/joho/godotenv para cargar variables de entorno:

go get github.com/joho/godotenv

Crea un archivo .env:

ENV=development
PORT=8080
JWT_SECRET=superclave

Y cárgalo en main.go:

import "github.com/joho/godotenv"

dotenv.Load()
port := os.Getenv("PORT")

Esto permite tener .env.development, .env.production, etc., y cargar según el entorno.


🚀 Cierre

Tu BFF ahora es:

  • 🔍 Observable
  • ⚙️ Configurable por entorno
  • 🚩 Flexible con feature flags

Ya tienes una base profesional para operar en producción y escalar funcionalidad de forma segura.

¿Te gustaría una Parte 6 conectando con frontend en React o Flutter? Escríbeme en codeIA.cl o déjame tu comentario. 👨‍💻✨

~devjaime