La observabilidad consiste en recopilar, visualizar y aplicar inteligencia de manera proactiva a todas tus métricas, eventos, logs y trazas, para poder comprender el comportamiento de tu complejo sistema digital.

Una manera sencilla de describir la observabilidad es cuán bien puedes comprender el sistema a partir del trabajo que realiza. En la teoría del control, la observabilidad se define como la forma en que los ingenieros pueden inferir los estados internos de un sistema a partir del conocimiento de las salidas externas de ese sistema. En los ámbitos de TI, software e informática en la nube, la observabilidad es cómo los ingenieros pueden comprender el estado actual de un sistema a partir de los datos que este genera. Para comprender realmente, tienes que recopilar de manera proactiva los datos correctos y luego visualizarlos y aplicar inteligencia.

En inglés, con frecuencia se utiliza la abreviatura "o11y" en lugar de "observability", que sustituye las 11 letras entre la "o" y la "y" con el número 11. (Dato curioso: por eso también se usa k8s para Kubernetes).

Con la observabilidad los ingenieros tienen un enfoque proactivo para optimizar sus sistemas. La observabilidad proporciona una vista conectada en tiempo real de todos los datos operativos en el sistema de software, así como la flexibilidad de hacer preguntas en cualquier momento acerca de las aplicaciones y la infraestructura para obtener las respuestas que se necesitan.

¿Por qué es importante la observabilidad?

Los sistemas modernos se están transformando en microservicios complejos, de código abierto y nativos de la nube que se ejecutan en clústeres de Kubernetes. Están siendo desarrollados y desplegados más rápido que nunca, por equipos distribuidos. Gracias a DevOps, la entrega continua y el desarrollo ágil, todo el proceso de entrega de software se realiza a una velocidad jamás vista, lo que puede dificultar la detección de problemas cuando surgen.

Cuando algo salía mal en la época de los mainframes y las operaciones estáticas, era bastante fácil averiguar por qué, y los dashboards estáticos preconfigurados alertaban a un operador sobre el problema. Esos sistemas fallaban de manera similar una y otra vez.

A medida que los sistemas se volvían más complejos, las herramientas de monitoreo intentaban irradiar sobre lo que estaba pasando con el rendimiento del software. Era posible hacer seguimiento del rendimiento de la aplicación con los datos de monitoreo y el análisis de series temporales. Era un proceso manejable.

INFORME DE PREDICCIÓN DE OBSERVABILIDAD DE 2022
Metadata image for the 2022 Observability Forecast report
Obtén información valiosa sobre el estado actual de la observabilidad y su futuro.
Leer el informe completo Leer el informe completo

Hoy en día, las posibles causas de falla son abundantes y pueden parecer infinitas si estás mirando una pantalla y estás frustrado. ¿Se ha caído el servidor? ¿Hay una interrupción del servicio en el proveedor de la nube? ¿Alguien ha implementado un nuevo código que está afectando el comportamiento de los usuarios finales?

Cuando se trabaja en uno de estos sistemas distribuidos y complejos, puede ser casi imposible identificar un eslabón roto en la cadena si no se cuenta con una solución de observabilidad. Ahora que las arquitecturas de microservicios son comunes, las responsabilidades se distribuyen entre los equipos. No hay un encargado claramente definido de la aplicación y es necesario involucrar a muchos equipos. Los equipos tienen que comprender, analizar y resolver problemas en áreas de la aplicación que no necesariamente están a su cargo. Es necesario el rastreo distribuido, ya que permite hacer seguimiento de las solicitudes —y los cuellos de botella— en todas las partes del sistema distribuido.

Observabilidad y monitoreo

El monitoreo convencional no te ayudará a tener éxito en el complejo mundo de los microservicios y los sistemas distribuidos. Solo puede hacer seguimiento de las incógnitas conocidas. Hay cosas que sabes que tienes que preguntar de antemano (por ejemplo: “¿Cuál es el rendimiento de mi aplicación?”, “¿Cómo es la capacidad de cómputo?”, “Enviarme una alerta cuando se exceda una cierta cantidad de errores”). La observabilidad te da la capacidad no solo de saber que algo está mal, sino también de comprender por qué. Te da la flexibilidad de comprender patrones en los que ni siquiera habías pensado antes, las incógnitas desconocidas.

Piénsalo de esta manera: la observabilidad (sustantivo) es el enfoque que te permite comprender tu sistema complejo. Monitorear (verbo) es una acción que realizas para ayudar con ese enfoque. La observabilidad no elimina la necesidad de monitoreo, simplemente se convierte en una de las técnicas que se usan para lograr la observabilidad. 

El monitoreo del rendimiento de aplicaciones (APM) es uno de los pasos de una práctica de observabilidad integral que utiliza dashboards y alertas para las fallas conocidas o esperadas. Para averiguar por qué es importante que APM sea parte de tu práctica de observabilidad, consulta APM y observabilidad.

¿Cuáles son los componentes de la observabilidad? 

La observabilidad en sistemas digitales tiene cuatro elementos fundamentales:

  1. Instrumentación abierta. Instrumentación quiere decir usar código (agentes) para rastrear y medir los datos que fluyen a través de tu aplicación de software. Instrumentación abierta significa recopilar datos de telemetría de las entidades de código abierto o específicas de un proveedor que producen esos datos. Ejemplos de datos de telemetría incluyen métricas, eventos, logs y trazas, que se conocen también como MELT. Ejemplos de entidades incluyen servicios, hosts, aplicaciones y contenedores.
  2. Correlación y contexto.  Es imprescindible comprender el panorama completo, especialmente para las grandes aplicaciones empresariales con enormes cantidades de datos de telemetría sin procesar. Los datos de telemetría recopilados deben analizarse en busca de correlaciones y contexto, para que los seres humanos puedan comprender los patrones y las anomalías que pueden surgir.
  3. Programabilidad. Las organizaciones necesitan flexibilidad para crear su propio contexto y su propia selección con aplicaciones personalizadas en función de sus objetivos comerciales únicos.
  4. Herramientas de AIOps. Para asegurarte de que tu infraestructura moderna esté siempre disponible, necesitas acelerar la respuesta a incidentes. Las soluciones de AIOps utilizan modelos de aprendizaje automático para automatizar los procesos de las operaciones de TI, como la correlación, agregación y priorización de datos de incidentes. Estas herramientas te ayudan a eliminar alarmas falsas, detectar problemas de manera proactiva y acelerar el tiempo medio de resolución (MTTR).

¿Cuáles son las ventajas de la observabilidad?

Las herramientas de observabilidad proporcionan a los ingenieros y desarrolladores la capacidad de crear mejores experiencias para los clientes a pesar de la creciente complejidad de la empresa digital. Con la observabilidad puedes recopilar, explorar, alertar y correlacionar todos los tipos de datos de telemetría.

La observabilidad hace que sea más fácil mejorar la eficiencia operativa e impulsar la innovación y el crecimiento. Por ejemplo, un equipo puede usar una plataforma de observabilidad para comprender los incidentes críticos que han ocurrido y evitar de manera proactiva que se repitan. Esto reduce el tiempo de inactividad y mejora el MTTR.

Cuando se introduce una nueva compilación, el equipo puede observar el rendimiento de la aplicación y luego hacer un análisis más profundo de las razones de los picos de la tasa de errores o los aumentos de la latencia de la aplicación. Pueden ver qué nodo en particular tiene el problema. Para ver más ejemplos, organizados en 10 principios de observabilidad, consulta Observability: A 21st Century Manifesto (Observabilidad: Un manifiesto del siglo XXI).

Otras ventajas de la observabilidad incluyen lo siguiente:

  • Una única fuente de confianza para los datos operativos.
  • Tiempo de actividad y rendimiento verificados. 
  • Un entendimiento de las fluctuaciones en tiempo real del rendimiento del negocio digital.
  • Una mejor colaboración entre los equipos para resolver los problemas más rápido.
  • Una cultura de innovación.
  • Una mayor eficiencia operativa para producir software de alta calidad a gran escala, lo que acelera el tiempo de comercialización.
  • Detalles específicos para tomar mejores decisiones comerciales basadas en los datos y optimizar las inversiones.

Según el informe 2022 Observability Forecast (Predicción de observabilidad de 2022) casi la mitad de los más de 1,600 encuestados mencionó la creciente atención en las áreas de seguridad, gobernanza, riesgo y cumplimiento como la principal tendencia que explica el aumento de las necesidades de observabilidad de su organización. Otros factores incluyen el desarrollo de arquitecturas de aplicaciones nativas de la nube (front-end), una mayor atención en la administración de la experiencia del cliente, y la migración a un entorno de varias nubes (back-end). 

El informe también reveló que solo el 2% de los encuestados indicó que sus organizaciones habían empleado las 15 características de una práctica de observabilidad madura, que incluyen instrumentación automatizada, elementos automatizados de la respuesta a incidentes, infraestructura aprovisionada y organizada usando herramientas de automatización, telemetría capturada en todo el stack, y telemetría (métricas, eventos, logs y trazas) unificada en un solo panel para su consumo por todos los equipos.

La observabilidad es esencial, pero la mayoría de las empresas aún tienen un gran margen de mejora.

¿Quién utiliza la observabilidad?

Los equipos de SRE y de operaciones de TI están encargados de mantener los sistemas complejos —las aplicaciones de las que las personas dependen todos los días— en buen funcionamiento. Pero la observabilidad es responsabilidad de todos durante todo el ciclo de vida de desarrollo de software. 

Los equipos de ingeniería de software utilizan la observabilidad para comprender el bienestar, el rendimiento y el estado general de los sistemas de software, lo que incluye cuándo y por qué ocurren errores. Mediante el análisis de los resultados de un sistema, como eventos, métricas, logs y trazas, los ingenieros pueden determinar cuán bien está funcionando el sistema.

Observabilidad y DevOps

La frecuencia de los despliegues ha aumentado significativamente con los microservicios. Demasiadas cosas están cambiando para que sea realista pensar que los equipos van a poder predefinir todos los modos de falla posibles en sus entornos. No solo se trata del código de la aplicación, sino de la infraestructura que lo respalda, y el comportamiento y la demanda de los consumidores. 

La observabilidad proporciona a los equipos de DevOps la flexibilidad que necesitan para probar sus sistemas en producción, hacer preguntas e investigar los problemas que no era posible predecir al principio.

La observabilidad ayuda a los equipos de DevOps a:

  • Establecer objetivos de nivel de servicio (SLO) claros e implementar la instrumentación para prepararse y aunar esfuerzos para lograr un éxito medible.
  • Aprovechar los dashboards, coordinar las respuestas y medir los efectos de cada cambio para fortalecer las prácticas de DevOps.
  • Evaluar el progreso, analizar las dependencias de las aplicaciones y los recursos de infraestructura, y encontrar maneras de mejorar continuamente la experiencia de los usuarios de su software.

Para ver las mejores prácticas de DevOps, échale un vistazo al ebook DevOps Done Right (DevOps bien hecho).