En este tutorial rehacemos y traducimos al español un proyecto completo para crear un microservicio en Go con estilo de producción que puedas desplegar, observar y enviar a producción mediante CI CD. Incluye endpoints de salud y métricas, empaquetado en Docker, monitoreo con Prometheus y visualización en Grafana, además de una canalización en GitHub Actions. Desde Q2BSTUDIO, empresa de desarrollo de software a medida, aplicaciones a medida y especialistas en inteligencia artificial, ciberseguridad y servicios cloud, compartimos esta guía práctica para acelerar la puesta en producción de tus servicios.
Por qué este proyecto: adquirir habilidades reales en contenerización, observabilidad, CI CD y documentación; mostrar en entrevistas que controlas construir enviar monitorizar; y mantenerlo ligero con un servicio en Go con rutas health y metrics fácil de extender.
Qué vamos a construir: un servicio Go con GET /health que devuelve {status:OK} y GET /metrics con métricas Prometheus incluido un contador personalizado y un histograma de latencia; una imagen Docker publicada en DockerHub; un stack de Prometheus y Grafana para recolectar y visualizar; y un pipeline de GitHub Actions que prueba, construye y publica la imagen.
Requisitos previos: Docker y Docker Compose; cuenta de GitHub para CI CD; cuenta de DockerHub para publicar; y Go 1.24.x.
Pruébalo ahora con la imagen pública. Si haces fork sustituye negin007 por tu usuario de DockerHub. Comandos: docker pull negin007/mini-monitoring-app:latest y luego docker run -d -p 8080:8080 negin007/mini-monitoring-app:latest. Valida con curl https://localhost:8080/health y curl https://localhost:8080/metrics.
Estructura del proyecto recomendada: mini-monitoring-app con main.go, go.mod, Dockerfile, .dockerignore, docker-compose.yml, prometheus.yml, carpeta .github con workflows ci.yml y un README.md.
Paso 1 Escribe el servicio en Go: un main.go mínimo que expone los endpoints health y metrics con el handler de Prometheus. Mantén el servidor escuchando en el puerto 8080 y usa el registrador por defecto de Prometheus.
Paso 2 Instrumentación: expón dos métricas personalizadas. Counter health_requests_total para el conteo creciente de chequeos de salud y Histogram response_latency_seconds para medir latencias por buckets. Con el histograma podrás calcular percentiles como P95 en Prometheus usando esta consulta: histogram_quantile(0.95, sum(rate(response_latency_seconds_bucket[1m])) by (le)). rate X[1m] calcula la tasa por segundo en la última ventana de 1 minuto, sum by le agrega por bucket le significa menor o igual, e histogram_quantile obtiene el percentil 95.
Paso 3 Dockeriza el servicio con un Dockerfile multietapa para compilar binario estático y reducir tamaño de la imagen. Construye y prueba en local con docker build -t tuusuario/mini-monitoring-app:local . y docker run -p 8080:8080 tuusuario/mini-monitoring-app:local.
Paso 4 Valida los endpoints en local. Deberías ver {status:UP} en el endpoint de salud y en metrics las series de Prometheus incluyendo las personalizadas y las de Go runtime.
Paso 5 Añade el stack de monitoreo Prometheus y Grafana con docker-compose. En prometheus.yml configura global scrape_interval 5s y un job mini-monitoring-app con targets app:8080. Con docker-compose up -d levantas app, Prometheus en https://localhost:9090 y Grafana en https://localhost:3000 con credenciales admin admin. En Prometheus verifica en Status Targets que el servicio está en scrape up.
Paso 6 Crea un dashboard en Grafana. Panel tipo Stat para health_requests_total total de health checks y un panel de serie temporal para la latencia P95 usando la consulta histogram_quantile 0.95 sum rate response_latency_seconds_bucket 1m by le. Puedes complementar con paneles de throughput y error rate si añades más métricas.
Paso 7 CI CD con GitHub Actions en .github workflows ci.yml. El flujo ejecuta pruebas de Go, construye la imagen Docker y la publica en DockerHub. Configura los secretos DOCKERHUB_USERNAME y DOCKERHUB_TOKEN con permisos de lectura y escritura.
Consejos de producción: fija tags inmutables además de latest por ejemplo v1.0.x usa healthchecks en Docker Compose y en Kubernetes liveness y readiness añade etiquetas de métricas con dimensiones clave como método y ruta limita el cardinality de etiquetas define dashboards base para latencia P50 P95 P99 tasa de peticiones y errores y usa alertas en Prometheus para SLOs.
Cómo encaja con tu estrategia cloud y de datos: este patrón es ideal para desplegar en contenedores en servicios cloud AWS y Azure aprovechando pipelines y observabilidad centralizada. Si tu organización busca acelerar el time to market con infra gestionada y observabilidad de clase enterprise, nuestro equipo puede ayudarte a diseñar arquitecturas resilientes, escalables y seguras. Conoce más sobre nuestros servicios cloud AWS y Azure y cómo los integramos con tus flujos de CI CD.
Sobre Q2BSTUDIO: somos una consultora tecnológica especializada en software a medida y aplicaciones a medida, inteligencia artificial e IA para empresas incluidos agentes IA, ciberseguridad y pentesting, servicios de inteligencia de negocio con Power BI, y modernización de datos en la nube. Diseñamos soluciones end to end que combinan observabilidad, automatización de procesos, seguridad y analítica avanzada para transformar tus operaciones. Si buscas un partner para crear plataformas y microservicios listos para producción, descubre nuestro enfoque de software a medida y aplicaciones a medida.
Palabras clave para ayudarte a encontrar este contenido y mejorar tu posicionamiento: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud AWS y Azure, servicios inteligencia de negocio, IA para empresas, agentes IA y Power BI.
Conclusión: con un pequeño servicio en Go, Prometheus y Grafana para observabilidad, y Docker más GitHub Actions para la automatización de CI CD, dispones de una base sólida y escalable para servicios modernos listos para producción. Si quieres llevar este enfoque a tus productos con buenas prácticas, seguridad y analítica desde el primer día, Q2BSTUDIO está listo para ayudarte.