Mejores Prácticas para la Nube y Serverless
Sintonización de arranques en frío, observabilidad y barreras de control de costos.
Busca en todas las páginas de la documentación
Sintonización de arranques en frío, observabilidad y barreras de control de costos.
Aplique estas reglas en las plantillas de CI, los archivos README de servicio y las revisiones de plataforma para que cada implementación de Go obtenga una latencia, facturas y respuesta a incidentes predecibles.
CGO_ENABLED=0 para Lambda y contenedores mínimos. Evita sorpresas del enlazador dinámico en los tiempos de ejecución proporcionados.-ldflags="-s -w" a menos que necesite símbolos de Delve en desarrollo. Los zips más pequeños se cargan más rápido en el arranque en frío.bootstrap en la raíz del zip para provided.al2023. Los nombres incorrectos fallan en tiempo de ejecución con errores opacos.sync.Once, no en init(). Mantiene las rutas de código no utilizadas fuera de la ruta de arranque en frío.context.Context de la plataforma a todas las llamadas SDK. Respeta los plazos de API Gateway, Cloud Run y desconexión del cliente.context.WithTimeout ligeramente por debajo de los límites de la plataforma. Devuelva errores estructurados antes de las finalizaciones forzadas./tmp en Lambda. Trate el almacenamiento de la instancia como efímero.* en identidades de tiempo de ejecución.--allow-unauthenticated después de picos.govulncheck en módulos que toquen SDKs de la nube. Los problemas de la cadena de suministro aterrizan primero en las rutas de credenciales y HTTP.log/slog a stdout/stderr. CloudWatch, Cloud Logging y App Insights analizan campos estructurados.ReadHeaderTimeout en cada http.Server en contenedores. Bloquea ataques de lentitud antes de que se ejecuten los manejadores.http.Server.Shutdown limitado. Cloud Run y ECS envían señales de terminación antes de SIGKILL.Latencia de extremo a extremo p99 dividida por ruta fría vs. cálida.
Si el frío domina, corrija el empaquetado y la inicialización antes de aumentar el gasto en memoria.
El desarrollo puede ser más flexible para la velocidad, pero no debe compartir roles o secretos de producción.
Use cuentas o espacios de nombres separados con políticas paralelas.
Las capas ayudan a los equipos políglotas a compartir agentes; los binarios de Go puros rara vez necesitan capas a menos que distribuyan extensiones de observabilidad.
Prefiera primero binarios únicos más pequeños.
Pruebe caóticamente entregas duplicadas de SQS y reintentos de HTTP en pruebas de integración; afirme un efecto secundario visible.
Cuando necesite operadores, CRDs personalizados, características de service mesh o estándares de clúster uniformes para varios equipos que las funciones administradas no pueden alojar.
Sí: deje margen por encima del tamaño en vivo del heap; las muertes por OOM son más difíciles de depurar que las configuraciones de memoria ligeramente más altas.
Versiones de Stack: Esta página fue escrita para Go 1.26.x (predeterminado Green Tea GC, modernizadores go fix - verifique el parche en la compilación), chi (última versión - verifique en la compilación), gin (última versión - verifique en la compilación), echo (última versión - verifique en la compilación), google.golang.org/grpc (última versión - verifique en la compilación), sigs.k8s.io/controller-runtime (última versión - verifique en la compilación), kubebuilder (última versión - verifique en la compilación), tinygo (última versión - verifique los objetivos de la placa en la compilación), wazero (última versión - verifique en la compilación) y golangci-lint (última versión - verifique el conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 19 jul 2026