intermediate Por Mathias Paulenko

Plantilla de Objetivo de Nivel de Servicio (SLO)

Una plantilla para definir objetivos de confiabilidad, presupuestos de error y metodos de medicion para servicios y sistemas.

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

Descripcion General

Un Objetivo de Nivel de Servicio (SLO) define un objetivo de confiabilidad para un servicio. Traduce las expectativas de los usuarios en metas medibles que orientan las prioridades de ingenieria, las compensaciones y la inversion. Esta plantilla ayuda a los equipos a definir Indicadores de Nivel de Servicio (SLIs), establecer objetivos, gestionar presupuestos de error y revisar el rendimiento en el tiempo.

Cuando Usar

  • For alternatives, see Complete Guide to Observability with the Grafana Stack.

  • Lanzar un nuevo servicio o producto.

  • Establecer expectativas de confiabilidad con stakeholders o clientes.

  • Introducir presupuestos de error para equilibrar velocidad y estabilidad.

  • Negociar un Acuerdo de Nivel de Servicio (SLA) interno o externo.

  • Revisar la salud del servicio trimestralmente o despues de incidentes mayores.

Prerequisitos

  • Comprension clara de la funcionalidad orientada al usuario y los viajes criticos del usuario.
  • Instrumentacion que produce las metricas necesarias para los SLIs.
  • Plataforma de monitoreo u observabilidad que pueda calcular la confiabilidad en el tiempo.
  • Acuerdo de prioridades entre producto, ingenieria y operaciones.
  • Datos historicos o estimaciones para establecer objetivos realistas.

Solucion

Plantilla

1. Definicion del SLO

CampoDescripcionEjemplo
Nombre del servicioEl servicio o sistema cubiertoCheckout API
Nombre del SLONombre corto para el objetivoDisponibilidad de checkout
SLIMedida cuantitativa del nivel de servicioRatio de solicitudes HTTP exitosas
ObjetivoNivel de confiabilidad deseado99.9%
Ventana de medicionPeriodo de tiempo para evaluacion30 dias
DuenoEquipo responsableEquipo checkout
StakeholdersUsuarios del SLOProducto, soporte, plataforma

2. Tipos Comunes de SLIs

Tipo de SLIQue MideFormula Tipica de SLI
DisponibilidadEsta respondiendo el servicio?solicitudes exitosas / solicitudes totales
LatenciaQue tan rapido es el servicio?porcentaje de solicitudes bajo umbral
CalidadEs correcta la salida?respuestas validas / respuestas totales
Tasa de errorCon que frecuencia falla?1 - (solicitudes exitosas / solicitudes totales)
ThroughputPuede manejar la carga?solicitudes por segundo
FrescuraLos datos estan actualizados?porcentaje de datos actualizados dentro del umbral
DurabilidadSe preservan los datos?porcentaje de objetos almacenados exitosamente en el tiempo

3. Ejemplos de SLOs

ServicioSLIObjetivoVentanaJustificacion
Checkout APIDisponibilidad99.95%30 diasEndpoint critico para ingresos
Checkout APILatencia p99< 500ms30 diasUmbral de experiencia de usuario
Servicio de busquedaDisponibilidad99.9%30 diasImportante pero no critico para ingresos
Servicio de busquedaLatencia p95< 200ms30 diasRetroalimentacion rapida al usuario
Pipeline de datosFrescura99.5%24 horasAnalitica necesita datos recientes
Almacenamiento de objetosDurabilidad99.999999999%1 anoProteccion contra perdida de datos

4. Politica de Presupuesto de Error

ObjetivoPresupuesto de ErrorTasa de Quemado (Diaria)Accion al Agotar el Presupuesto
99.9%0.1%~0.003%Revisar politica de releases y congelar cambios no criticos
99.95%0.05%~0.0017%Endurecer rollout y requerir revision de incidentes
99.99%0.01%~0.0003%Detener releases de funcionalidades y priorizar trabajo de confiabilidad

Lineamientos:

  • Un presupuesto de error mide cuanta falta de confiabilidad es aceptable en una ventana.
  • La tasa de quemado indica que tan rapido se consume el presupuesto.
  • Cuando el presupuesto se agota o se proyecta agotarse, reducir cambios riesgosos.
  • Un presupuesto excesivo restante puede indicar objetivos demasiado conservadores.

5. Medicion y Alertas

MetricaFuenteAgregacionUmbral de Alerta
DisponibilidadLoad balancer o logs de aplicacionVentana 5 minObjetivo SLO - 1% durante 10 min
Latencia p99Metricas de aplicacionVentana 1 horaLatencia objetivo + 20% durante 15 min
Tasa de errorLogs de aplicacionVentana 5 min> 0.5% durante 5 min
Presupuesto de errorCalculo de SLO30 dias movil80% consumido en 50% de la ventana
Tasa de quemadoCalculo de SLOVentana 1 horaAlta tasa de quemado por 2 horas consecutivas

6. Ciclo de Revision y Mejora

ActividadFrecuenciaDuenoSalida
Revision de dashboard de SLOsSemanalEquipo SREEstado actual y tendencias
Revision de presupuesto de errorMensualDueno del servicioDecisiones de releases y acciones de seguimiento
Revision de objetivos SLOTrimestralProducto + ingenieriaObjetivos ajustados con justificacion
Revision post-incidenteDespues de cada incidenteComandante de incidenteImpacto en SLO y acciones de mejora
Comunicacion de SLOsTrimestralLiderazgo de ingenieriaReporte de stakeholders sobre confiabilidad

Explicacion

Los SLOs dan a los equipos un lenguaje compartido para la confiabilidad. Al definir SLIs, objetivos y presupuestos de error, una organizacion puede decidir cuando priorizar nuevas funciones versus trabajo de estabilidad. Los SLOs tambien reducen la fatiga de alertas al enfocar el monitoreo en la confiabilidad que impacta al usuario en lugar de cada metrica interna.

Definicion de SLO en Prometheus (Sloth)

version: "prometheus/v1"
service: "api-gateway"
slos:
  - name: "availability"
    objective: 99.9
    description: "Respuestas HTTP exitosas para el API gateway"
    sli:
      events:
        error_query: sum(rate(http_requests_total{job="api-gateway",status=~"5.."}[{{.window}}]))
        total_query: sum(rate(http_requests_total{job="api-gateway"}[{{.window}}]))
    alerting:
      name: ApiGatewayAvailability
      page_alert:
        disable: false
        labels:
          severity: page
          team: platform
      ticket_alert:
        disable: false
        labels:
          severity: ticket
          team: platform

  - name: "latency-p99"
    objective: 99
    description: "Latencia P99 por debajo de 500ms para el API gateway"
    sli:
      events:
        error_query: |
          sum(rate(http_request_duration_seconds_bucket{job="api-gateway",le="0.5"}[{{.window}}]))
          /
          sum(rate(http_request_duration_seconds_count{job="api-gateway"}[{{.window}}]))
        total_query: "1"
    alerting:
      name: ApiGatewayLatency
      page_alert:
        disable: false
      ticket_alert:
        disable: false

Hoja de Calculo de Presupuesto de Error

=== Calculo de Presupuesto de Error ===

Objetivo SLO: 99.9% disponibilidad
Periodo: 30 dias (43,200 minutos)

Tiempo de inactividad permitido (presupuesto de error):
  43,200 * (1 - 0.999) = 43.2 minutos por mes

Presupuesto consumido este periodo:
  - Incidente 1 (2026-06-05): 12 min inactividad -> 12 min consumidos
  - Incidente 2 (2026-06-12): 8 min inactividad -> 8 min consumidos
  - Incidente 3 (2026-06-20): 5 min inactividad -> 5 min consumidos
  Total consumido: 25 minutos

Presupuesto restante: 43.2 - 25 = 18.2 minutos (42% del presupuesto restante)

Tasa de quemado:
  - Quemado rapido (ventana 1h): 2x normal -> alertar si > 6x
  - Quemado lento (ventana 6h): 1x normal -> alertar si > 3x

Decision: 42% del presupuesto restante al dia 20 de 30.
  - Verde (>50%): Continuar releases normales
  - Amarillo (20-50%): Reducir frecuencia de releases, priorizar estabilidad
  - Rojo (<20%): Congelar releases no criticos, enfocar en confiabilidad

Agenda de Reunion de Revision de SLO

=== Revision Mensual de SLO ===

1. Reporte de Cumplimiento de SLO (10 min)
   - Cumplimos cada objetivo SLO?
   - Estado del presupuesto de error: consumido vs restante
   - Tendencia: mejorando, estable o degradando?

2. Revision de Incidentes (15 min)
   - Incidentes que consumieron presupuesto
   - Patrones de causa raiz
   - Acciones de revisiones post-incidente

3. Discusion de Objetivos SLO (10 min)
   - Debemos ajustar algun objetivo?
   - Los SLIs siguen midiendo lo correcto?
   - Nuevos servicios que necesitan SLOs?

4. Planificacion de Releases (10 min)
   - Guia de presupuesto de error para el proximo mes
   - Cambios riesgosos planificados
   - Prioridades de trabajo de estabilidad

5. Acciones (5 min)
   - Responsable y fecha limite para cada accion
   - Proxima fecha de revision

Variantes

  • SLO orientado al cliente: Se usa para respaldar SLAs externos y comunicaciones con clientes.
  • SLO de plataforma interna: Rastrea la confiabilidad de servicios internos consumidos por otros equipos.
  • SLO de carga batch: Se enfoca en throughput, frescura y ventanas de finalizacion en lugar de disponibilidad.
  • SLO de movil o cliente: Incluye tasas de crash, tiempo de inicio de app y latencia de respuesta API.
  • SLO de plataforma de datos: Enfatiza frescura, completitud y rendimiento de consultas.

Lo que funciona

  • Comienza con unos pocos viajes criticos del usuario en lugar de medir todo.
  • Establece objetivos basados en expectativas de usuario y necesidades de negocio, no en infraestructura ideal.
  • Usa presupuestos de error para guiar decisiones de release en lugar de como castigo.
  • Manten los SLOs simples y comprensibles para stakeholders no tecnicos.
  • Revisa los objetivos trimestralmente y ajustalos a medida que evolucionan los servicios.
  • Alerta sobre quemado rapido de presupuesto, no solo sobre faltas de objetivo.
  • Documenta los SLIs de forma reproducible entre herramientas.
  • Alinea los SLOs con las prioridades de respuesta a incidentes.

Errores Comunes

  • Establecer SLOs al 100% sin considerar costo y complejidad.
  • Elegir SLIs que no reflejan la experiencia real del usuario.
  • Definir demasiados SLOs y perder el foco.
  • No usar presupuestos de error para influir en decisiones de release.
  • Ignorar los SLOs despues de definirlos.
  • Establecer objetivos basados solo en el rendimiento actual sin metas de mejora.
  • Confundir SLOs internos con SLAs externos.

Troubleshooting

  • No logs for a failing request: verify log shipping, retention, and that the request reached the service.
  • Alert fires but the service is healthy: tune thresholds and use multi-signal alerts.
  • Dashboard shows stale data: check refresh intervals, query range, and data source lag. Verify that the metric still exists.
  • High cardinality metrics explode costs: drop high-cardinality labels, aggregate before ingest, or use sampling.
  • Trace is incomplete across services: ensure all services propagate trace context. Instrument async and background jobs.

Lectura Adicional

  • Documentación oficial: consulta la referencia actualizada del framework o herramienta utilizada.
  • Guías relacionadas: explora las guías de slo y reliability para profundizar.
  • Patrones complementarios: revisa los patrones de diseño aplicables a tu stack tecnológico.
  • Postmortems públicos: estudia incidentes reales de equipos que enfrentaron problemas similares en producción.

Notas de Producción

  • Despliega gradualmente usando canary o blue-green para detectar regresiones temprano.
  • Configura alertas para errores, latencia p99 y tasa de fallos antes de habilitar en producción.
  • Documenta el rollback en el runbook; prueba el procedimiento en staging al menos una vez por trimestre.
  • Revisa logs estructurados con correlation IDs para trazar requests end-to-end en incidentes.

Puntos Clave

  • Aplica plantilla de objetivo de nivel de servicio (slo) cuando necesites una solución práctica para tu caso de uso.
  • Monitorea el rendimiento después de implementar; mide latencia, errores y uso de recursos antes y después.
  • Revisa la sección de Troubleshooting ante errores comunes; la mayoría tienen causa raíz documentada con solución.
  • Mantén dependencias actualizadas y ejecuta tests en CI para prevenir regresiones en producción.

Errores Comunes en Producción

  • Dejar campos requeridos vacíos o usar respuestas vagas de una palabra.
  • Llenar el documento una vez y nunca actualizarlo cuando cambia el alcance o las decisiones.
  • Guardar el documento donde el equipo no lo busque durante incidentes o revisiones.
  • No asignar un responsable, fecha límite o cadencia de revisión.
  • Copiar texto base sin eliminar secciones que no aplican.
  • Saltar el control de versiones, lo que impide rollback y responsabilidad.
  • No vincular el documento con decisiones relacionadas o acciones de seguimiento.
  • Evitar revisiones trimestrales que retirarían secciones obsoletas o sin uso.

Preguntas frecuentes

Cual es la diferencia entre SLI, SLO y SLA?
Un SLI es una metrica. Un SLO es el objetivo para esa metrica. Un SLA es un compromiso contractual, a menudo basado en SLOs, con consecuencias por no cumplir los objetivos.
Como elegimos el objetivo SLO correcto?
Comienza con datos historicos, considera los puntos de dolor del usuario y equilibra la confiabilidad contra el costo y la velocidad de entregas. Puntos de partida comunes son 99.9% para servicios...
Que pasa cuando se agota el presupuesto de error?
El equipo debe reducir cambios riesgosos, priorizar mejoras de confiabilidad y revisar incidentes recientes. Es una senal para invertir en estabilidad, no una razon para culpar a individuos.
Como calculamos la tasa de quemado del presupuesto de error?
La tasa de quemado mide que tan rapido estas consumiendo tu presupuesto de error. Una tasa de 1 significa que estas consumiendo presupuesto a ritmo normal (se agotara exactamente al final del...
Que es una alerta multi-window multi-burn-rate?
Las alertas multi-window multi-burn-rate evaluan la tasa de quemado sobre dos ventanas de tiempo simultaneamente. Por ejemplo: alerta si la tasa de 1 hora es mayor a 14.4x Y la tasa de 5 minutos...
Como establecemos SLOs para jobs de procesamiento batch?
Para jobs batch, usa SLOs de completitud en lugar de disponibilidad. Define SLIs como: porcentaje de jobs completados dentro de la ventana de plazo (ej. 95% de jobs ETL diarios completan en 4 horas)....
Deberiamos tener SLOs diferentes para diferentes niveles de usuario?
Si por razones de negocio, pero ten cuidado con la implementacion. Puedes definir SLOs especificos por nivel (ej. 99.99% para enterprise, 99.9% para tier gratuito) etiquetando requests con nivel de...
Como manejamos los SLOs durante incidentes?
Durante un incidente, el SLO ya se esta incumpliendo (el presupuesto se esta consumiendo). Enfocate en resolucion, no en medicion. Despues de la resolucion, calcula el presupuesto consumido y...