Equilibrar la necesidad de fiabilidad del servicio con la necesidad de lanzar nuevas características.
→Definir un objetivo de nivel de servicio (SLO) (por ejemplo, 99.9% de disponibilidad). El 0.1% restante es el presupuesto de error. Si el presupuesto está mayormente intacto, lanzar características. Si el presupuesto se agota, detener los lanzamientos de características y centrarse en mejoras de fiabilidad.
Por qué: El presupuesto de error proporciona un marco basado en datos para tomar decisiones de riesgo, alineando a los equipos de ingeniería, producto y negocio en un objetivo común.
Aprender de los incidentes para evitar que se repitan, al tiempo que se fomenta una cultura de seguridad psicológica.
→Realizar postmortems sin culpa después de los incidentes. Centrar la investigación en factores sistémicos, lagunas en los procesos y fallos de herramientas, no en atribuir culpas a individuos. El resultado debe ser una lista de elementos de mejora accionables.
Por qué: Una cultura sin culpa fomenta la comunicación honesta y abierta, lo que lleva a una comprensión más precisa de las causas raíz de un incidente y a acciones preventivas más efectivas.
Coordinar la respuesta a un incidente mayor de manera efectiva, evitando confusiones y duplicación de esfuerzos.
→Implementar un sistema de comando de incidentes (ICS) con roles claramente definidos: Comandante de Incidentes (coordinación general), Líder de Operaciones (investigación/corrección técnica) y Líder de Comunicaciones (actualizaciones a las partes interesadas).
Por qué: ICS proporciona una estructura estandarizada y escalable para la respuesta a incidentes, asegurando líneas claras de autoridad y comunicación, lo cual es crucial para resolver problemas complejos rápidamente.
Medir el rendimiento de una organización de entrega de software.
→Rastrear las cuatro métricas clave de DORA: Frecuencia de Despliegue (con qué frecuencia), Tiempo de Espera para Cambios (cuánto tiempo desde el commit hasta el despliegue), Tasa de Fallo de Cambios (qué porcentaje de despliegues causa fallos) y Tiempo para Restaurar el Servicio (MTTR).
Por qué: Estas cuatro métricas proporcionan una visión equilibrada tanto de la velocidad de desarrollo como de la estabilidad operativa, y se ha demostrado que se correlacionan con organizaciones de alto rendimiento.
Un equipo de SRE está dedicando demasiado tiempo a tareas operativas manuales y repetitivas (toil), sin tiempo para proyectos de ingeniería.
→Identificar y cuantificar el "toil" que consume más tiempo. Priorizar y automatizar estas tareas (por ejemplo, implementar autoescalado en lugar de escalado manual, auto-remediación para alertas comunes). Limitar el "toil" a < 50% del tiempo del ingeniero.
Por qué: El "toil" es un lastre para la productividad y la moral. Reducirlo sistemáticamente mediante la automatización libera a los ingenieros para trabajar en mejoras de fiabilidad a largo plazo.
Atribuir los costos de la nube con precisión a diferentes equipos, servicios o entornos en una infraestructura compartida.
→Implementar una estrategia consistente de etiquetado/etiquetado. Utilizar estas etiquetas para filtrar en los informes de Cloud Billing. Para GKE, habilitar la asignación de costos de GKE para desglosar los costos por namespace o carga de trabajo.
Por qué: La asignación precisa de costos proporciona visibilidad, lo que impulsa la rendición de cuentas. Los equipos que pueden ver sus gastos están capacitados para optimizarlos.
Optimizar los costos de cómputo para un conjunto diverso de cargas de trabajo (estable, interrumpible, desarrollo/prueba).
→Hacer coincidir la carga de trabajo con el modelo de precios. Utilizar descuentos por uso comprometido (CUDs) para cargas de trabajo estables, 24/7. Utilizar VMs Spot para trabajos tolerantes a fallos e interrumpibles (por ejemplo, procesamiento por lotes). Programar los entornos de desarrollo/prueba para que se apaguen fuera del horario laboral.
Por qué: Un enfoque único para los precios de cómputo es ineficiente. Usar la herramienta adecuada para el trabajo puede generar ahorros significativos (>70%) sin afectar el rendimiento.
Optimizar los costos y el rendimiento de GKE asegurando que los pods soliciten las cantidades adecuadas de CPU y memoria.
→Desplegar el Vertical Pod Autoscaler (VPA) en modo `recommendation`. Analizar sus sugerencias para ajustar las `requests` de recursos de los pods. Una vez seguro, cambiar al modo `auto` para un dimensionamiento continuo.
Por qué: El aprovisionamiento excesivo de pods desperdicia dinero, mientras que el aprovisionamiento insuficiente causa problemas de rendimiento (throttling, OOMKilled). VPA utiliza datos de uso reales para hacer recomendaciones precisas de tamaño, mejorando tanto la eficiencia como la estabilidad.
Reducir la latencia causada por los arranques en frío para un servicio de Cloud Run.
→Configurar un valor de `min-instances` para mantener un número de instancias activas. Además, optimizar la imagen del contenedor (imagen base más pequeña, menos capas) y el código de inicio de la aplicación (inicialización perezosa).
Por qué: `min-instances` es la forma más directa de reducir los arranques en frío, pero tiene un costo. Combinarlo con la optimización del contenedor y el código proporciona un enfoque equilibrado para el rendimiento y el costo.
Optimizar los costos para una carga de trabajo de análisis de BigQuery a gran escala con patrones de consulta variables.
→Cambiar de precios bajo demanda a BigQuery Editions (slots). Adquirir un compromiso de slots base para una carga predecible y habilitar el autoescalado para picos. Además, optimizar las consultas usando tablas particionadas/agrupadas y evitando `SELECT *`.
Por qué: Para cargas de trabajo consistentes, los precios basados en slots son más rentables que bajo demanda. El autoescalado proporciona flexibilidad para ráfagas mientras controla los costos. La optimización de consultas y tablas reduce la cantidad de datos procesados, disminuyendo directamente los costos.
Reducir los altos costos de egreso de red para una aplicación distribuida globalmente.
→Usar Cloud CDN para almacenar en caché contenido estático en el borde, más cerca de los usuarios. Para el tráfico dinámico, elegir el nivel de servicio de red apropiado (Premium para rendimiento, Standard para ahorro de costos). Procesar datos regionalmente para minimizar el tráfico entre regiones.
Por qué: El egreso es un factor importante de costo. CDN descarga tráfico del origen, reduciendo directamente el egreso. El uso cuidadoso de los niveles de red y el procesamiento regional de datos pueden reducir significativamente los costos.