Elige tus objetivos de nivel de servicio (SLO)

Last reviewed 2024-03-29 UTC

En este documento del framework de arquitectura de Google Cloud, se define cómo la experiencia del usuario define la confiabilidad y cómo elegir los objetivos de nivel de servicio adecuados para cumplir con ese nivel de confiabilidad. Este documento se basa en los conceptos definidos en Componentes de los SLO.

La cultura de la ingeniería de confiabilidad de sitios (SRE) valora los servicios confiables y la felicidad del cliente (o satisfacción del cliente). Sin un nivel de servicio definido y un método para recopilar métricas, es difícil (si no imposible) determinar dónde y cuánto invertir en las mejoras.

La métrica predominante que usas para medir el nivel de servicio es el objetivo de nivel de servicio (SLO). Un SLO se compone de los siguientes valores:

  • Un indicador de nivel de servicio (SLI): una métrica de un aspecto específico de tu servicio, como se describe en Elige tus SLI.
  • Duración: el período en el que se mide el SLI. Puede basarse en un calendario o en una ventana progresiva.
  • Un objetivo: el valor (o rango de valores) que el SLI debe cumplir en la duración determinada en un servicio en buen estado. Por ejemplo, el porcentaje de eventos correctos sobre el total de eventos que esperas que cumpla tu servicio, como el 99.9%.

Elegir los SLO correctos para tu servicio es un proceso. Comienza por definir los recorridos del usuario que definen la confiabilidad y, en última instancia, tus SLO. Los SLO que elijas deben medir todo el sistema, así como equilibrar las necesidades del desarrollo de funciones con la estabilidad operativa. Después de elegir los SLO, debes mejorarlos de forma iterativa y administrarlos a través de porcentajes de error aceptable.

Define los recorridos del usuario

Idealmente, tus SLI y SLO se basan en recorridos críticos del usuario (CUJ). Los CUJ consideran los objetivos del usuario y cómo tu servicio ayuda a los usuarios a alcanzarlos. Debes definir un CUJ sin considerar los límites del servicio. Cuando se cumple un CUJ, el cliente está satisfecho, lo que es una indicación de un servicio exitoso.

La satisfacción del cliente, o la insatisfacción con respecto a ese asunto, determina la confiabilidad y es la función más importante de cualquier servicio.

Por lo tanto, configura tu SLO lo bastante alto como para que la mayoría de los usuarios estén satisfechos con tu servicio y no más alto que eso. Así como no el objetivo correcto es del 100% de disponibilidad, agregar más “nueves” a tus SLO se vuelve costoso y puede que ni siquiera sea importante para el cliente.

Para el tiempo de actividad y otras métricas vitales, intenta un objetivo inferior al 100%, pero cerca de él. Evalúa el nivel mínimo de rendimiento y disponibilidad del servicio necesarios. No establezcas objetivos según niveles contractuales externos.

Usa los CUJ para desarrollar SLO

Elige los CUJ más importantes de tu empresa y sigue estos pasos para desarrollar los SLO:

  1. Elige una especificación de SLI (como disponibilidad o actualidad).
  2. Decide cómo implementar la especificación de SLI.
  3. Asegúrate de que tu plan abarque todos los CUJ.
  4. Establece los SLO según las necesidades de rendimiento anteriores o las necesidades comerciales.

Los CUJs no deben estar restringidos a un solo servicio ni a una organización o un equipo de desarrollo único. Tu servicio puede depender de decenas o más servicios. También es posible que esos servicios funcionen al 99.5%. Sin embargo, si no se realiza un seguimiento del rendimiento de extremo a extremo (sistema completo), ejecutar un servicio confiable es un desafío.

Define el objetivo y la duración

Definir el objetivo y la duración (consulta la definición anterior de un SLO) puede ser difícil. Una forma de comenzar el proceso es identificar los SLI y representarlos en el tiempo. Recuerda que un SLO no tiene que ser perfecto desde el principio. Itera en tu SLO para asegurarte de que se alinee con la satisfacción del cliente y cumpla tus necesidades empresariales.

A medida que realizas un seguimiento del cumplimiento del SLO durante eventos como implementaciones, interrupciones y patrones de tráfico diarios, obtendrás estadísticas sobre el objetivo. Estas estadísticas harán que sea más evidente lo que es bueno, malo o tolerable para tus objetivos y duraciones.

El desarrollo de funciones, las mejoras de código, las actualizaciones de hardware y otras tareas de mantenimiento pueden ayudar a que tu servicio sea más confiable. La capacidad de realizar estos cambios pequeños y frecuentes te ayuda a entregar funciones más rápido y con mayor calidad. Sin embargo, la velocidad a la que cambia el servicio también afecta la confiabilidad. Lograr objetivos de confiabilidad define un ritmo y un alcance del cambio (llamado velocidad de las funciones) que los clientes pueden tolerar y del que pueden beneficiarse.

Si no puedes medir la experiencia del cliente y definir los objetivos en torno a ella, puedes consultar fuentes externas y análisis de comparativas. Si no existe una comparativa similar, mide la experiencia del cliente, incluso si aún no puedes definir objetivos. Con el tiempo, puedes obtener un umbral razonable de satisfacción del cliente. Este umbral es tu SLO.

Comprende todo el sistema

El servicio puede existir en una línea larga de servicios con procesamiento anterior y posterior. Medir el rendimiento de un sistema distribuido de forma fragmentada (servicio por servicio) no refleja con exactitud la experiencia del cliente y puede causar una interpretación demasiado sensible.

En cambio, debes medir el rendimiento en función del SLO en el frontend del proceso para comprender lo que experimentan los usuarios. Al usuario no le preocupa una falla de componente que haga que una consulta falle si la consulta se reintenta automática y exitosamente.

Si se implementan servicios internos compartidos, cada servicio puede medir el rendimiento por separado en comparación con el SLO asociado, y los servicios para el al usuario actúan como sus clientes. Maneja estos SLO por separado.

Es posible compilar un servicio con alta disponibilidad (por ejemplo, 99.99%) sobre un servicio con menor disponibilidad (por ejemplo, 99.9%) a través de factores de resiliencia como reintentos inteligentes, almacenamiento en caché y puesta en cola. Cualquier persona con conocimiento práctico de las estadísticas debe poder leer y entender el SLO sin la necesidad de comprender el servicio subyacente ni el diseño organizativo como se describe en la ley de Conway.

Elige los SLO correctos

Existe una tensión natural entre la velocidad de desarrollo de los productos y la estabilidad operativa. Cuanto más cambies el sistema, más probable será que se interrumpa. Las herramientas de supervisión y observabilidad son fundamentales para la estabilidad operativa a medida que aumentas la velocidad de las funciones. Estas herramientas se conocen como herramientas de administración del rendimiento de las aplicaciones (APM) y también se pueden usar para establecer los SLO.

Cuando se define de forma correcta, un SLO ayuda a los equipos a tomar decisiones operativas basadas en datos que aumentan la velocidad de desarrollo sin sacrificar la estabilidad. El SLO también puede hacer que los equipos de desarrollo y operaciones compartan un único objetivo acordado. Compartir un solo objetivo alivia la tensión natural mencionada antes: el objetivo del equipo de desarrollo de crear y, luego, iterar en productos y el objetivo del equipo de operaciones de mantener la integridad del sistema.

Usa este documento y otros documentos de confiabilidad en el framework de arquitectura para comprender y desarrollar los SLO. Después de leer y comprender estos artículos, consulta la información más detallada sobre los SLO (y otras prácticas de SRE) en El libro de SRE y en La hoja de cálculo de SRE.

Usa SLO internos estrictos

Se recomienda tener SLO internos más estrictos que los externos. Dado que el incumplimiento del ANS suele requerir la emisión de un crédito financiero o los reembolsos del cliente, debes abordar los problemas antes de que tengan un impacto financiero.

Recomendamos usar estos SLO internos más estrictos con un proceso retrospectivo libre de culpas y una revisión de incidentes. Para obtener más información, consulta Compila un proceso de administración de incidentes colaborativo en la categoría de confiabilidad del Centro de arquitectura.

Mejora los SLO de forma iterativa

Los SLO no deben configurarse en situaciones. Revisa los SLO de forma periódica (de forma trimestral o, al menos, una vez al año) y confirma que reflejen con precisión la satisfacción del usuario y se correlacionen con las interrupciones del servicio. Asegúrate de que cubran las necesidades comerciales actuales y cualquier nuevo recorrido crítico del usuario. Revisa y aumenta tus SLO según sea necesario después de estas revisiones.

Usa porcentajes de error aceptable para administrar la velocidad de desarrollo

Los porcentajes de error aceptables muestran si tu servicio es más o menos confiable de lo necesario para un período específico. Los porcentajes de error aceptables se calculan como 100% – SLO durante un período, como 30 días.

Cuando te queda capacidad en el porcentaje de error aceptable, puedes seguir lanzando mejoras o funciones nuevas con rapidez. Cuando el porcentaje de error aceptable sea cercano a cero, ralentiza o suspende los cambios de servicio y, luego, invierte recursos de ingeniería para mejorar las funciones de confiabilidad.

Google Cloud Observability incluye la supervisión de SLO para minimizar el esfuerzo de configurar los SLO y los porcentajes de error aceptable. El paquete de operaciones incluye una interfaz gráfica de usuario que te ayudará a configurar los SLO de forma manual, una API para la configuración programática de los SLO y paneles integrados que hacen un seguimiento de la tasa de gasto del porcentaje de error aceptable. Para obtener más información, consulta Crea un SLO.

Resumen de recomendaciones de SLO

  • Define y mide los SLI centrados en el cliente, como la disponibilidad o la latencia del servicio.
  • Define un porcentaje de error aceptable centrado en el cliente que sea más estricto que tu ANS externo. Incluye consecuencias por incumplimientos, como bloqueos de producción.
  • Configura los SLI de latencia para capturar valores atípicos, como el percentil 90 o 99, a fin de detectar las respuestas más lentas.
  • Revisa los SLO una vez al año como mínimo y confirma que se correlacionan bien con la satisfacción del usuario y las interrupciones del servicio.

¿Qué sigue?