Skills que aprenderás
Convocatorias
No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.
Recursos
No hay recursos disponibles todavía para esta convocatoria
Dirigido a desarrolladores con experiencia consolidada en Go que ya dominan la concurrencia básica, el sistema de tipos y la escritura de tests, este curso lleva al participante al terreno donde el lenguaje se usa en producción a escala real. A lo largo de diez horas se trabaja con las herramientas de profiling y diagnóstico del runtime —pprof, race detector, trazas de GC— como punto de partida analítico para tomar decisiones de diseño justificadas; se abordan los patrones de concurrencia avanzada (pipeline, fan-out/fan-in, worker pool) y el debate fundamentado entre sync.Mutex y channels; se profundiza en el modelado de errores apto para sistemas distribuidos; y se construye un pipeline de CI completo con análisis estático, cobertura y generación de código automatizada. Al finalizar, el participante será capaz de diseñar servicios Go de alto rendimiento, diagnosticar sus cuellos de botella con evidencia empírica y establecer las garantías de calidad automatizadas que un equipo de producción necesita.
Al completar el curso, el participante será capaz de:
GOGC, GOMEMLIMIT) que permiten ajustar su comportamiento con base en trazas reales.sync.Mutex frente a channels en escenarios de acceso concurrente concreto, apoyándose en benchmarks y análisis de contención.pprof y go test -benchmem hasta alcanzar los objetivos de rendimiento definidos.Bloque 1 — El runtime bajo el microscopio: GC, memoria y herramientas de diagnóstico
El bloque abre con una lectura crítica del garbage collector de Go: cómo el runtime decide cuándo recolectar, qué significa la latencia de cola p99 en este contexto y cómo las variables de entorno GOGC y GOMEMLIMIT alteran el equilibrio entre presión de memoria y pausas. Los participantes trabajan con trazas de GC reales para cuantificar el efecto de cada ajuste antes de modificar ninguna línea de código. Sobre esa base se introduce el ciclo de optimización de memoria: captura de perfiles con pprof, interpretación de los flamegraphs de heap, identificación de las allocations evitables y verificación de mejoras con go test -benchmem. El bloque cierra con benchmarks comparativos de serialización JSON y Protobuf —usando -benchtime para garantizar significación estadística— situando la elección de librería como una decisión técnica respaldada por datos.
Bloque 2 — Concurrencia avanzada: patrones, diagnóstico y decisiones de diseño
Este bloque comienza donde GO02 termina y profundiza en tres patrones de concurrencia que aparecen recurrentemente en servicios de producción: pipeline, fan-out/fan-in y worker pool. Para cada uno se parte de las restricciones de throughput y latencia como parámetros de diseño, no como consideraciones a posteriori. A continuación se aborda el diagnóstico de race conditions: el race detector de Go se usa sobre bases de código reales para localizar todas las rutas problemáticas y proponer correcciones verificables. El bloque culmina con el debate sync.Mutex vs. channels —uno de los puntos de mayor controversia en equipos Go— resuelto mediante benchmarks de contención y análisis de legibilidad, de modo que la elección quede documentada con criterios reproducibles.
Bloque 3 — Diseño de errores y calidad automatizada en producción
El tercer bloque trata el manejo de errores como un problema de arquitectura, no de sintaxis. Se modelan errores centinela y tipos de error personalizados para que el código de llamada pueda reaccionar de forma precisa, y se implementan estrategias de retry con backoff exponencial en clientes HTTP y gRPC que evitan las tormentas de reintentos. Finalmente el bloque integra todo el trabajo del curso en la cadena de entrega: se construye un pipeline de CI con staticcheck o golangci-lint, tests de integración, umbral de cobertura del 80 % y automatización de generación de código mediante go generate con mockgen o stringer. El resultado es un repositorio cuyo merge queda bloqueado si cualquiera de esas garantías no se cumple.
golangci-lint instalado o acceso a su imagen Docker oficial.mockgen (del proyecto uber-go/mock o google/go-mock) y stringer disponibles en el PATH.gopls actualizado a la versión compatible con Go 1.22.pprof, go tool trace).select (equivalente al curso GO02).testing.net/http, encoding/json, context).