Read in English · Lire en français · Auf Deutsch lesen
Sección 9.5 de 9.8 · Intermedio · 24 min de lectura
SLI, SLO, SLA y presupuestos de errores
Videolección
5 min · narrado en inglés, con subtítulosSolo escuchar (audio)
Leer la transcripción
Te damos la bienvenida a la Sección nueve punto cinco. ¿Qué grado de fiabilidad debe tener un servicio? Esta lección convierte esa pregunta en números en los que ingenieros y product owners pueden ponerse de acuerdo.
Imagina una empresa de autobuses que promete casi todos los autobuses a su hora. Para que eso sea útil, debe decir qué cuenta como a su hora: con un margen de dos minutos. Debe decir cómo lo mide: en cada parada. Y qué significa casi todos: noventa y nueve de cada cien a lo largo de un mes. Si no lo cumple, el equipo de horarios deja de probar rutas nuevas y primero arregla la puntualidad. La perfección es imposible y muy cara. Así que ese autobús de cada cien que llega tarde es un margen que se puede gastar en obras y en rutas nuevas. La fiabilidad del software funciona exactamente así.
Un indicador de nivel de servicio, o SLI, es una medición de lo que reciben los usuarios. La mejor forma es una proporción: eventos buenos divididos entre eventos válidos. Por ejemplo, la proporción de solicitudes del proceso de pago que tienen éxito en menos de ochocientos milisegundos. Un objetivo de nivel de servicio, o SLO, es una meta para ese indicador durante una ventana establecida, como el noventa y nueve punto nueve por ciento en veintiocho días móviles. Un acuerdo de nivel de servicio, o SLA, es un contrato con los clientes que establece consecuencias, normalmente créditos de servicio. Muchos servicios tienen SLO, pero no SLA. La idea que los une es el presupuesto de errores. Con un objetivo del noventa y nueve punto nueve por ciento, uno de cada mil eventos puede ser malo sin que nadie haya fallado. Ese es el margen para lanzar funcionalidades y asumir riesgos.
Aquí están los tres términos en una misma escala, para la disponibilidad del proceso de pago. El SLO es la meta interna, el noventa y nueve punto nueve por ciento. El SLA, un contrato con los socios, se fija más laxo, en el noventa y nueve punto cinco. Por encima del SLO, el servicio está dentro de su presupuesto. El SLI de este mes es del noventa y nueve punto nueve cuatro por ciento. Por debajo del SLO, el objetivo no se cumple y se aplica la política de presupuesto de errores. Solo por debajo del SLA se deben créditos de servicio. Nunca fijes el SLO igual al SLA. Solo te enterarías de los problemas cuando ya debieras dinero.
Un SLI es útil en la medida en que se acerca a lo que experimentan los usuarios. Los servicios que responden a solicitudes necesitan disponibilidad, latencia y, a veces, calidad. Los pipelines de datos necesitan frescura, corrección y cobertura. El almacenamiento añade durabilidad. Escribe la latencia como proporción, no como promedio: el noventa y nueve por ciento de las solicitudes de la carta, en menos de trescientos milisegundos. Y mide cerca del usuario. Dentro del servidor de aplicaciones, pasas por alto las solicitudes que nunca llegaron a él.
Contemos un presupuesto. La API de pedidos de la plataforma de reparto de comida tiene un SLO del noventa y nueve punto nueve por ciento en treinta días. Así que el presupuesto es del cero punto uno por ciento. En tiempo, son cuarenta y tres punto dos minutos de caída total. En solicitudes, con unos tres millones al mes, son tres mil solicitudes malas. Ahora, un despliegue defectuoso a las tres de la tarde dura doce minutos. A ochocientas solicitudes por minuto, con un cuarenta por ciento fallando, son tres mil ochocientas cuarenta solicitudes malas. Eso es más que todo el presupuesto. Un solo incidente ha agotado el mes. El mismo incidente a las tres de la madrugada, con cincuenta solicitudes por minuto, cuesta solo doscientas cuarenta: el ocho por ciento del presupuesto. Los presupuestos basados en solicitudes ponderan los fallos según a cuántos usuarios afectan.
Un objetivo es una decisión de negocio. Aspirar al cien por cien es un error para casi todo. No deja presupuesto para el cambio, cuesta una fortuna y, de todos modos, no se puede conseguir. Una política de presupuesto de errores dice qué ocurre cuando se agota el presupuesto. En el ejemplo del Site Reliability Workbook de Google, se detienen todos los cambios salvo las correcciones urgentes y de seguridad, hasta que el servicio vuelve a estar dentro de su SLO. Su valor está en que se acuerda de antemano, así que una congelación es una regla pactada, no una pelea. Y un equipo que nunca gasta su presupuesto probablemente es demasiado prudente. Podría entregar más rápido o hacer más experimentos.
¿Cómo deberías alertar? Vigila la tasa de consumo: la rapidez con que se gasta el presupuesto. Una tasa de consumo de uno, la línea discontinua, agota el presupuesto justo al final de los treinta días. Un consumo rápido gasta una gran parte en horas. Aquí, el treinta por ciento se fue en unas tres horas. Eso debería despertar a alguien. Un consumo lento, aquí una tasa de unos dos durante cinco días, corresponde a un ticket. La opción por defecto del Workbook para un SLO del noventa y nueve punto nueve por ciento avisa a la persona de guardia si el dos por ciento del presupuesto se va en una hora, una tasa de consumo de catorce punto cuatro, o el cinco por ciento en seis horas. Una caída total genera un aviso en menos de un minuto.
La sección completa desarrolla la aritmética de la tasa de consumo y los errores habituales. A continuación, en la Sección nueve punto seis, veremos los logs, las métricas y las trazas. Nos vemos allí.
Lo que necesitas saber
- Un SLI es una medición centrada en el usuario, que se expresa mejor como eventos buenos divididos entre eventos válidos; un SLO es un objetivo para ese SLI durante una ventana de tiempo; un SLA es un contrato con consecuencias, fijado de forma menos exigente que el SLO.
- Los SLI útiles cubren disponibilidad, latencia y calidad en los servicios basados en solicitudes; frescura, corrección y cobertura en los pipelines; y durabilidad en el almacenamiento, medidos tan cerca del usuario como sea práctico.
- El presupuesto de errores es uno menos el SLO: un 99.9% en 30 días permite 43.2 minutos de caída total o el 0.1% de las solicitudes, y una política de presupuesto de errores por escrito establece qué ocurre cuando se agota.
- La tasa de consumo (burn rate) es la proporción de errores observada dividida entre la proporción permitida; el presupuesto gastado es igual a la tasa de consumo por la ventana de alerta dividida entre la ventana del SLO, de modo que una tasa de consumo de 14.4 durante una hora gasta el 2% de un presupuesto de 30 días.
- Las alertas multiventana y de múltiples tasas de consumo del SRE Workbook avisan a la persona de guardia cuando se gasta el 2% del presupuesto en una hora o el 5% en seis horas, y abren un ticket cuando se gasta el 10% en tres días; cada condición se confirma con una ventana corta que dura una duodécima parte.
- Los errores habituales son los objetivos del 100%, tener demasiados SLO, SLI que los usuarios no perciben, medir en el lugar equivocado y SLO sin ninguna política ni alertas que los respalden.
Tres términos, una idea
El Capítulo 2 presentó los objetivos de disponibilidad y los nueves (Sección 2.5) y mostró que un 99.9% en 30 días deja 43.2 minutos. Esta sección convierte esa aritmética en una disciplina operativa. El vocabulario procede del libro de Google Site Reliability Engineering (Beyer, Jones, Petoff y Murphy, O'Reilly, 2016) y de su complemento, The Site Reliability Workbook (2018), y hoy se usa mucho más allá de Google.
Un indicador de nivel de servicio (SLI) es una medida cuantitativa, definida con cuidado, de algún aspecto del servicio que reciben los usuarios. La forma más útil es una proporción: eventos buenos divididos entre eventos válidos. La proporción de solicitudes del proceso de pago que devuelven una respuesta correcta en menos de 800 ms, medida en el balanceador de carga
es un SLI. Va del 0% (nada funciona) al 100% (nada está roto), y la forma de proporción permite leer, comparar y usar para alertas cualquier SLI de la misma manera.
Un objetivo de nivel de servicio (SLO) es una meta para un SLI durante una ventana establecida: el 99.9% de las solicitudes del proceso de pago son buenas, medido durante 28 días móviles.
Es una promesa interna que acuerdan el equipo, el product owner y las personas que dependen del servicio. Un acuerdo de nivel de servicio (SLA) es un contrato con los clientes que establece consecuencias, normalmente créditos de servicio, si no se alcanza un nivel. Muchos servicios tienen SLO pero no SLA; las plataformas internas casi nunca tienen SLA.
La idea que une los tres es el presupuesto de errores. Si el objetivo es el 99.9%, el 0.1% de los eventos puede ser malo sin que nadie haya fallado. Ese 0.1% no es un desperdicio; es el margen que tiene el equipo para asumir riesgos: lanzar funcionalidades, ejecutar migraciones, experimentar con la configuración. El presupuesto convierte una discusión sobre sensaciones (¿es el servicio lo bastante fiable?
) en una discusión sobre números (¿hemos gastado nuestro presupuesto?
), y da a producto y a ingeniería una regla compartida para saber cuándo avanzar rápido y cuándo frenar.
SLI, SLO y SLA en una misma escala
Elegir buenos SLI
Un SLI es útil en la medida en que se acerca a lo que experimentan los usuarios. El Workbook ofrece un menú breve que cubre la mayoría de los servicios. Los servicios basados en solicitudes (API, páginas web) necesitan disponibilidad (la proporción de solicitudes válidas atendidas correctamente), latencia (la proporción atendida más rápido que un umbral) y, a veces, calidad (la proporción atendida sin degradación, como una carta mostrada sin recomendaciones personalizadas porque esa dependencia estaba caída). Los pipelines de datos necesitan frescura (la proporción de datos actualizados más recientemente que un umbral), corrección (la proporción de la salida que es correcta) y cobertura (la proporción de la entrada que se procesa). Los sistemas de almacenamiento añaden durabilidad (la proporción de los datos escritos que aún pueden leerse).
Los SLI de latencia se escriben como proporciones, no como promedios: el 99% de las solicitudes de la carta, en menos de 300 ms
. Esto conecta directamente con los percentiles de la Sección 2.4: decir que el 99% de las solicitudes debe tardar menos de 300 ms equivale a decir que el p99 debe ser inferior a 300 ms, pero la forma de proporción se suma limpiamente a lo largo del tiempo y entre servidores (se cuentan las buenas y las válidas), mientras que los percentiles no. Es habitual fijar dos umbrales de latencia, por ejemplo el 90% por debajo de 200 ms y el 99% por debajo de 800 ms, para captar tanto la experiencia típica como la de la cola.
Dónde mides importa tanto como qué mides. El Workbook separa la especificación del SLI (el resultado relevante para el usuario, como pedidos realizados correctamente
) de la implementación del SLI (cómo lo cuentas: logs del servidor, métricas del balanceador de carga, sondas sintéticas o instrumentación en la app móvil). Medir dentro del servidor de aplicaciones pasa por alto las solicitudes que nunca llegaron a él porque falló el DNS, la red de distribución de contenidos o el balanceador de carga. Medir en el cliente lo ve todo, pero incluye las malas conexiones móviles de los usuarios y llega con retraso. La mayoría de los equipos empieza con las métricas del balanceador de carga, que son baratas y están cerca del borde, y añade sondas sintéticas para las rutas con poco tráfico.
Define con precisión qué cuenta como válido y qué cuenta como bueno, porque los casos límite deciden si el número significa algo. ¿Es malo un 404 por una URL mal escrita? Normalmente no: es una respuesta correcta. ¿Es mala una respuesta 429 por limitación de tasa? Depende de si el cliente estaba dentro de su cuota acordada. ¿Son eventos válidos las comprobaciones de estado y las pruebas de carga? No; exclúyelas, o diluirán la proporción. Escribe estas reglas junto al SLO.
SLI para los ejemplos recurrentes
| Recorrido | Tipo de SLI | Especificación del SLI (buenos / válidos) | SLO de ejemplo |
|---|---|---|---|
| Reparto de comida: explorar cartas | Latencia | Solicitudes de la carta respondidas en menos de 300 ms / todas las solicitudes válidas de la carta | 99% en 28 días |
| Reparto de comida: hacer un pedido | Disponibilidad | Solicitudes de pedido respondidas con éxito o con un rechazo de negocio correcto / todas las solicitudes válidas de pedido | 99.9% en 28 días |
| Reparto de comida: ubicación del repartidor | Frescura | Vistas del mapa cuya posición del repartidor tiene menos de 30 s / todas las vistas del mapa | 99% en 28 días |
| Reparto de comida: pagos a restaurantes | Corrección | Lotes de pagos conciliados sin discrepancias / todos los lotes de pagos | 99.99% en un trimestre |
| Venta de entradas: proceso de pago en la puesta a la venta | Latencia y disponibilidad | Reservas de asientos confirmadas en 2 s / todos los intentos de reserva de fans admitidos | 99.5% durante cada puesta a la venta |
| Venta de entradas: entrega de la entrada electrónica | Frescura | Entradas en la app del fan en los 5 minutos siguientes al pago / todos los pedidos pagados | 99.9% en 28 días |
Fijar el objetivo
Un objetivo es una decisión de negocio, no técnica. El costo de cada nueve adicional sube abruptamente, mientras que los usuarios dejan de notar las mejoras a partir de cierto punto, porque su propia red telefónica, su wifi y sus dispositivos fallan con más frecuencia que eso. El libro de SRE de Google lo dice sin rodeos: aspirar al 100% es un error para casi todo, porque no deja presupuesto para el cambio, cuesta una fortuna y, de todos modos, no se puede conseguir. Un objetivo del 100% también convierte cada fallo en un incumplimiento de la política, lo que enseña a la gente a ignorar el SLO.
Buenos puntos de partida son el rendimiento pasado (¿qué logró el servicio durante el último trimestre, y estaban contentos los usuarios?), los objetivos de los servicios de los que dependes (no puedes prometer un 99.99% sobre una base de datos del 99.9%, como mostró la Sección 6.1 para las cadenas) y el costo de negocio de la falta de fiabilidad. En la plataforma de reparto de comida, los pedidos fallidos a la hora de comer cuestan ingresos y confianza de los clientes, así que un 99.9% en la realización de pedidos es defendible; las actualizaciones de la posición del repartidor son menos críticas y basta un 99%. Empieza un poco por debajo del rendimiento actual, para que el equipo no incumpla el objetivo de inmediato, y endurécelo más adelante con datos.
Elige la ventana a conciencia. Una ventana móvil, como los últimos 28 días, se ajusta a cómo recuerdan los usuarios las caídas (no las olvidan el día uno del mes), y 28 días contienen exactamente cuatro veces cada día de la semana, lo que mantiene justos los patrones semanales. Los meses naturales son adecuados para los informes y los contratos. Los servicios basados en eventos, como una puesta a la venta de entradas, pueden necesitar un SLO por evento, porque una hora de fallos durante la puesta a la venta importa mucho más que una semana tranquila.
Los presupuestos de errores en números
El presupuesto de errores puede contarse en tiempo o en eventos. Los presupuestos basados en tiempo son adecuados para servicios que o están disponibles o están caídos; los basados en solicitudes son más justos para servicios con tráfico irregular, porque una caída a las 03:00 afecta a menos usuarios que una a mediodía.
Ejemplo práctico
Ejemplo práctico: el presupuesto de la realización de pedidos
La API de pedidos de la plataforma de reparto de comida tiene un SLO del 99.9% de solicitudes buenas en 30 días. Gestiona unos 3 millones de solicitudes de pedido válidas en ese periodo, muy concentradas a la hora de la comida y de la cena.
| Presupuesto como fracción | 1 - 0.999 = 0.001, es decir, 0.1% |
|---|---|
| Presupuesto en tiempo | 0.001 × 30 días × 1440 minutos = 43.2 minutos de caída total |
| Presupuesto en solicitudes | 0.001 × 3 000 000 = 3000 solicitudes malas |
| Incidente 1: despliegue defectuoso a las 15:00 | 12 minutos × 800 solicitudes por minuto = 9600 solicitudes; falla el 40% = 3840 solicitudes malas |
| Resultado | 3840 es más que todo el presupuesto de 3000 solicitudes: un solo incidente agota el mes |
| El mismo incidente a las 03:00 | 12 × 50 solicitudes por minuto × 0.4 = 240 solicitudes malas, el 8% del presupuesto |
Los presupuestos basados en solicitudes ponderan los fallos según a cuántos usuarios afectan, y por eso los mismos 12 minutos pueden costar el 8% o más del 100% del presupuesto.
La visión basada en tiempo (43.2 minutos) habría puntuado ambos incidentes igual, con 12 × 0.4 = 4.8 minutos de caída equivalente, alrededor del 11% del presupuesto.
Políticas de presupuesto de errores
Un presupuesto no significa nada si no ocurre algo cuando se agota. Una política de presupuesto de errores es un documento breve, acordado de antemano por ingeniería, producto y dirección, que dice qué hará el equipo. La política de ejemplo del Workbook mide el presupuesto durante las cuatro semanas anteriores; si el servicio supera su presupuesto, se detienen todos los cambios y lanzamientos salvo las correcciones urgentes (incidencias P0) y las de seguridad hasta que el servicio vuelva a estar dentro de su SLO. También exige un postmortem con al menos una acción de máxima prioridad siempre que un solo incidente consuma más del 20% del presupuesto de cuatro semanas, y eleva los desacuerdos al director de tecnología.
El valor de una política está en que se acuerda antes de que haga efecto. En plena carrera por un lanzamiento, nadie quiere congelar los cambios; con una política firmada, la congelación es una regla acordada de antemano y no una pelea entre un SRE y un product manager. Las buenas políticas también dicen qué no cuenta en contra del equipo: una caída de red de toda la empresa, una dependencia que también está congelada, o tráfico fuera del alcance del SLO, como una prueba de carga.
Los profesionales no se ponen de acuerdo sobre lo mecánica que debe ser la política. Algunos equipos la aplican de forma estricta, porque las excepciones erosionan la confianza en todo el sistema. Otros tratan el presupuesto como información para una conversación y sostienen que una congelación rígida puede retrasar justo las correcciones que restaurarían la fiabilidad. Es habitual un camino intermedio: congelar automáticamente los lanzamientos de funcionalidades arriesgadas, seguir entregando las correcciones de fiabilidad y permitir que un directivo designado conceda excepciones documentadas. El caso contrario también importa: un equipo que nunca gasta su presupuesto probablemente es demasiado prudente y podría entregar más rápido, hacer más experimentos o reducir sus costos.
La tasa de consumo y las alertas basadas en SLO
Alertar sobre tasas de error brutas (avisar si falla más del 1% de las solicitudes durante 5 minutos
) genera mucho ruido: los picos breves despiertan a la gente por la noche por problemas que nunca amenazarían el SLO, mientras que una tasa de fallos constante del 0.5% puede agotar el mes en silencio sin cruzar nunca el umbral. La respuesta del Workbook es alertar sobre la tasa de consumo (burn rate): la rapidez con que se gasta el presupuesto comparada con el ritmo que lo agotaría justo al final de la ventana.
Tasa de consumo = proporción de errores observada / proporción de errores permitida. Con un SLO del 99.9%, la proporción permitida es el 0.1%, así que una proporción de errores del 0.1% es una tasa de consumo de 1 (el presupuesto dura exactamente la ventana), el 1% es una tasa de consumo de 10 y el 100% (una caída total) es una tasa de consumo de 1000. La fracción del presupuesto de la ventana que se gasta durante una ventana de alerta es tasa de consumo x ventana de alerta / ventana del SLO. Para una ventana de 30 días (720 horas), una tasa de consumo de 14.4 mantenida durante una hora gasta 14.4 × 1 / 720 = 0.02, es decir, el 2% del presupuesto del mes; a ese ritmo, todo el presupuesto se agotaría en 720 / 14.4 = 50 horas.
El Workbook recomienda una alerta multiventana y de múltiples tasas de consumo como opción razonable por defecto para un SLO del 99.9%: avisar a la persona de guardia (page) si se gasta el 2% del presupuesto en una hora (tasa de consumo 14.4) o el 5% en seis horas (tasa de consumo 6), y abrir un ticket si se gasta el 10% en tres días (tasa de consumo 1). Cada condición debe cumplirse en una ventana larga y en una corta, siendo la corta una duodécima parte de la larga (5 minutos, 30 minutos y 6 horas, respectivamente). La ventana larga garantiza que el problema es significativo; la corta, que sigue ocurriendo, de modo que la alerta deja de dispararse a los pocos minutos de una corrección en lugar de seguir en rojo durante una hora.
Consumos rápidos y lentos
SLO = 0.999 # 99.9% of requests good
PERIOD_H = 30 * 24 # 720-hour SLO window
def burn_rate(bad, total, slo=SLO):
"""Observed error ratio divided by the ratio the SLO allows."""
if total == 0:
return 0.0
return (bad / total) / (1 - slo)
def budget_spent(rate, window_h, period_h=PERIOD_H):
"""Fraction of the whole window's budget used in window_h hours."""
return rate * window_h / period_h
def page(w1h, w5m, w6h, w30m):
"""Each argument is (bad, total) for that window."""
fast = burn_rate(*w1h) >= 14.4 and burn_rate(*w5m) >= 14.4
slow = burn_rate(*w6h) >= 6 and burn_rate(*w30m) >= 6
return fast or slow
print(round(burn_rate(bad=288, total=20_000), 1)) # 14.4
print(budget_spent(14.4, window_h=1)) # 0.02, i.e. 2%Los umbrales también fijan el tiempo de detección. Si la API de pedidos falla por completo (proporción de errores del 100%, tasa de consumo de 1000), la proporción de errores de una hora supera el 1.44% al cabo de 0.0144 × 60 = unos 0.9 minutos, así que el aviso salta en menos de un minuto. Si falla el 2% de las solicitudes (tasa de consumo 20), la proporción de una hora llega al 1.44% al cabo de 0.72 × 60 = unos 43 minutos. Los problemas graves avisan rápido; los leves solo avisan si persisten, que es exactamente el comportamiento que se quiere a las tres de la madrugada.
Los servicios con poco tráfico rompen esta aritmética: con 10 solicitudes por hora, un solo fallo es una proporción de errores del 10% y una tasa de consumo de 100. Los remedios del Workbook son el tráfico sintético para añadir señal, agrupar servicios relacionados de poco tráfico bajo un mismo SLO, hacer que los fallos aislados importen menos mediante reintentos y alternativas, o aceptar una ventana más larga. Para el sistema de venta de entradas, que está casi inactivo entre puestas a la venta y luego extremadamente ocupado, funcionan mejor los SLO por evento con alertas de tasa de consumo durante la ventana del evento que una cifra mensual.
Los SLA y los créditos de servicio
Un SLA traslada el objetivo de la ingeniería al derecho contractual. Define el servicio cubierto, cómo se mide la disponibilidad, las exclusiones (mantenimiento programado, uso indebido por parte del cliente, fuerza mayor), la compensación y cómo la reclama el cliente. La compensación habitual es un crédito de servicio: un porcentaje de la cuota mensual que se devuelve, escalonado según cuánto se haya incumplido el nivel. Los créditos suelen ser pequeños en comparación con la pérdida real del cliente, y por eso los SLA se leen mejor como una señal de la confianza del proveedor que como un seguro; los clientes cuyas pérdidas serían grandes necesitan su propia resiliencia, no un crédito mayor.
Considera un SLA ilustrativo que la plataforma de reparto de comida podría ofrecer a los restaurantes asociados para su API de recepción de pedidos: 99.5% de disponibilidad mensual, con un crédito del 10% sobre la cuota de la plataforma de ese mes por debajo del 99.5% y del 25% por debajo del 99.0%. El SLO interno es el 99.9%. El hueco entre ambos es deliberado: el equipo debería agotar el presupuesto de su SLO, aplicar su política y recuperarse mucho antes de que el contrato esté en riesgo. Nunca fijes el SLO igual al SLA; solo te enterarías de los problemas cuando ya debieras dinero.
De ahí se derivan dos consecuencias arquitectónicas. Primera: un SLA solo puede ser honesto si conoces los SLA de tus propias dependencias (proveedor de nube, procesador de pagos, proveedor de mapas) y cómo se combinan. Segunda: los SLA necesitan pruebas: el método de medición del contrato debe ser uno que puedas obtener de tu propia telemetría, lo que constituye un requisito para el diseño de la observabilidad.
Errores comunes
Demasiados SLO. Un servicio con treinta SLO no tiene ninguno, porque nadie puede razonar sobre ellos ni actuar en consecuencia. Empieza con dos o tres por cada recorrido crítico del usuario: normalmente un SLO de disponibilidad y uno o dos de latencia. Medir lo que no es. La utilización de CPU, la profundidad de las colas y el retraso de las réplicas son causas útiles que vigilar, pero no son SLI, porque los usuarios no las experimentan directamente. Medir en el lugar equivocado. Las tasas de éxito del lado del servidor parecen perfectas mientras la CDN devuelve errores. Promediar. Un SLO de latencia media oculta la cola lenta de la que se quejan los usuarios.
Objetivos sin consecuencias. Un SLO sin política de presupuesto ni alertas de tasa de consumo es un adorno del panel. Objetivos fijados solo por ingenieros. El product owner debe estar de acuerdo, porque el SLO intercambia funcionalidades por fiabilidad. No revisarlos nunca. Revisa los SLO cada uno o dos trimestres: si los usuarios se quejan mientras el SLO está en verde, el SLI o el objetivo están mal; si el presupuesto nunca se toca, puede que el objetivo sea demasiado laxo o el equipo demasiado prudente. Un solo SLO para recorridos muy distintos. Meter la exploración de la carta y el pago en una sola proporción permite que las abundantes solicitudes baratas oculten los fallos de las escasas y valiosas.
Los SLO conectan con el resto de este capítulo. Las alertas de tasa de consumo son las alertas basadas en síntomas que se recomiendan en observabilidad; los incidentes que consumen presupuesto alimentan las revisiones posteriores al incidente; y la medida de la respuesta de un SLO es una función de aptitud natural para la arquitectura.
Comprueba lo que has entendido
¿Por qué un SLI suele escribirse como eventos buenos divididos entre eventos válidos?
Porque la proporción siempre está entre el 0% y el 100%, se suma limpiamente entre servidores y a lo largo del tiempo con solo contar, y permite leer, comparar y convertir en presupuesto de errores cualquier SLI de la misma manera.
Un SLO del 99.9% en 30 días registra una tasa de consumo de 6 durante seis horas. ¿Qué fracción del presupuesto se gasta?
6 × 6 / 720 = 0.05, es decir, el 5% del presupuesto de 30 días.
¿Por qué un SLA debe ser más laxo que el SLO interno?
Para que el equipo detecte un presupuesto de errores agotado y responda mucho antes de que se incumpla el contrato y haya que pagar créditos de servicio.
¿Qué aporta la ventana corta en una alerta multiventana?
Confirma que el problema sigue ocurriendo, de modo que la alerta se restablece a los pocos minutos de una corrección en lugar de seguir activa durante toda la ventana larga.
Fuentes y lecturas recomendadas
¿Tienes una pregunta sobre esta sección? ArchitectBot, el asistente de estudio con IA del curso, responde primero a partir del curso.
Pregunta: “Nuestra API de reparto de comida aún no tiene SLO. ¿Con qué dos o tres SLI deberíamos empezar y cómo elegimos un objetivo que acepte el equipo de producto?”