¿Qué es la Observabilidad?

Por: Artiko
observabilidadfundamentossistemas-distribuidosconfiabilidad

¿Qué es la Observabilidad?

El origen del término

La palabra “observabilidad” no nació en el mundo del software. Fue acuñada por el ingeniero y matemático Rudolf E. Kálmán en 1960, en el contexto de la teoría de control de sistemas dinámicos. Su definición es matemáticamente precisa: un sistema es observable si, a partir de sus salidas, es posible determinar completamente el estado interno del sistema en cualquier momento dado.

En la teoría de control, si tienes un sistema con variables internas que no puedes medir directamente, la observabilidad te dice si es posible, en principio, inferir esas variables a partir de las mediciones externas disponibles.

El mundo del software adoptó este concepto porque describe perfectamente el problema al que nos enfrentamos con sistemas distribuidos modernos: tenemos decenas o cientos de servicios interactuando, y cuando algo falla, necesitamos entender qué está pasando adentro a partir solo de lo que podemos observar desde afuera.


La definición práctica en software

En el contexto de ingeniería de software, la observabilidad es la capacidad de entender el estado interno de un sistema a partir de sus salidas externas.

Esto tiene tres implicaciones importantes:

1. No se trata solo de saber si algo está caído

El monitoreo tradicional te dice “el servicio está abajo” o “la latencia superó el umbral”. La observabilidad te permite responder preguntas como: “¿Por qué el percentil 99 de latencia aumentó en el endpoint /api/checkout específicamente para usuarios en México con tarjetas Visa entre las 14:00 y las 14:23?”

2. No requiere conocer las preguntas de antemano

Este es el punto más importante. Los sistemas de monitoreo tradicionales están basados en alertas predefinidas: tú decides qué métricas vigilar y qué umbrales son críticos. Pero en un sistema complejo, no puedes predecir todos los modos de fallo posibles. La observabilidad te da las herramientas para investigar fallas que nunca anticipaste.

3. Es una propiedad del sistema, no solo de las herramientas

Un sistema observable es uno que fue diseñado para ser entendido. No basta con agregar Prometheus o Datadog encima de un sistema opaco. La observabilidad debe estar integrada en la arquitectura, en las decisiones de diseño, en el código mismo.


¿Por qué importa hoy más que nunca?

La arquitectura de software evolucionó significativamente en la última década. Pasamos de sistemas monolíticos desplegados en pocos servidores a arquitecturas de microservicios con decenas o cientos de servicios independientes, ejecutándose en contenedores orquestados por Kubernetes, comunicándose de forma asíncrona, escalando dinámicamente.

graph LR
    A[Sistema Monolítico<br/>1 servidor, 1 base de datos] -->|evolución| B[Microservicios<br/>100+ servicios, 1000+ instancias]
    B --> C[Complejidad exponencial<br/>en debugging y operación]
    C --> D[Necesidad de Observabilidad]

En un monolito, cuando algo falla, sabes exactamente dónde mirar. Los logs están en un solo lugar, puedes poner un debugger, el stack trace te dice la línea exacta del error. En microservicios, una sola request puede atravesar 15 servicios diferentes. El error puede originarse en cualquiera de ellos, o en la interacción entre varios. Sin observabilidad, encontrar la causa raíz puede tomar horas o días.

El costo de no tener observabilidad

Los números son contundentes. Según el reporte de Gartner, el costo promedio del downtime para una empresa de tamaño medio es de $5,600 dólares por minuto. Para empresas grandes, puede superar los $300,000 por hora. Más allá del dinero:


Los tres pilares de la observabilidad

La observabilidad moderna se construye sobre tres tipos de telemetría, conocidos como los tres pilares:

flowchart TD
    O[Observabilidad] --> L[Logs\nRegistros de eventos discretos]
    O --> M[Métricas\nAgregaciones numéricas en el tiempo]
    O --> T[Trazas\nFlujo de requests entre servicios]

    L --> LU[Útil para: Debugging detallado,\naudit trails, errores específicos]
    M --> MU[Útil para: Alertas, dashboards,\ntendencias, capacity planning]
    T --> TU[Útil para: Performance de\nend-to-end, dependencias entre servicios]

Cada pilar responde un tipo diferente de pregunta:

Estos tres pilares no son independientes ni intercambiables. Son complementarios. Un sistema verdaderamente observable los tiene todos y, crucialmente, permite correlacionarlos entre sí.


Observabilidad vs. Monitoreo: la distinción clave

Aunque relacionados, observabilidad y monitoreo son conceptos distintos. Esta distinción es fundamental:

AspectoMonitoreoObservabilidad
EnfoqueVerificar métricas conocidasEntender comportamiento desconocido
Preguntas¿Está caído? ¿Superó el umbral?¿Por qué? ¿Cómo? ¿Qué pasó exactamente?
ModoReactivo a alertas predefinidasExploratorio e investigativo
RequiereConocer fallas posibles de antemanoNo asume nada sobre el modo de fallo
HerramientasNagios, PagerDuty, alertasLogs estructurados, trazas, análisis

El monitoreo es necesario pero no suficiente. Puedes tener un excelente sistema de monitoreo y seguir tardando horas en diagnosticar un incidente complejo. La observabilidad es lo que te permite acortar ese tiempo de minutos a horas a segundos.


El concepto de “cardboard boxes” vs. “glass boxes”

Una metáfora útil: los sistemas no observables son “cajas de cartón” — sabes que algo está adentro, pero no puedes ver qué. Los sistemas observables son “cajas de vidrio” — puedes ver todo lo que ocurre adentro en tiempo real.

La mayoría de los sistemas hoy son una mezcla: algunas partes son de vidrio (tienen buena instrumentación), otras son completamente opacas (legacy code, dependencias de terceros sin telemetría, servicios que solo emiten logs de error).

El trabajo de un equipo de ingeniería orientado a observabilidad es reemplazar sistemáticamente las cajas de cartón por cajas de vidrio, priorizando los componentes más críticos y las rutas más frecuentes.


La observabilidad es una inversión, no un costo

Un error común es ver la instrumentación — agregar logs, métricas, trazas — como trabajo “extra” que quita tiempo a las features. Esta perspectiva es corta de miras.

Considera: cuando construyes un feature nuevo, inviertes tiempo en escribir código, tests, documentación. Si no inviertes en observabilidad, estás construyendo algo que no podrás mantener en producción de manera confiable. Es como construir una casa sin instalar electricidad y plomería porque “no son parte del diseño” — funcionará por un tiempo, pero cuando algo falle, no tendrás manera de arreglarlo sin romper las paredes.

La observabilidad reduce:


La madurez de la observabilidad en un equipo

La adopción de observabilidad sigue un camino de madurez:

graph TD
    N0[Nivel 0: Sin telemetría\nSolo sabes que algo falló\ncuando los usuarios se quejan] --> N1
    N1[Nivel 1: Logs básicos\nPuedes buscar errores\nen logs desestructurados] --> N2
    N2[Nivel 2: Métricas y alertas\nSabes cuando los umbrales\nse superan] --> N3
    N3[Nivel 3: Logs estructurados\n+ métricas + trazas\nPuedes investigar incidentes] --> N4
    N4[Nivel 4: Correlación y contexto\nPuedes hacer preguntas\narbitrarias sobre el sistema] --> N5
    N5[Nivel 5: Observabilidad proactiva\nIdentificas problemas\nantes de que afecten usuarios]

La mayoría de equipos operan entre Nivel 1 y Nivel 2. Este tutorial te lleva al Nivel 4 y muestra el camino al Nivel 5.


Herramientas del ecosistema

Antes de profundizar en los conceptos, es útil conocer el panorama de herramientas. No recomendamos herramientas específicas en este tutorial — el mercado cambia rápido y la elección depende de tu contexto — pero el ecosistema se divide en:

Open Source

SaaS / Comercial

La tendencia moderna es usar OpenTelemetry para instrumentación (estándar open source) y conectar a cualquier backend de tu elección. Esto evita el vendor lock-in a nivel de código.


Referencias