En el desarrollo de software moderno, especialmente en arquitecturas distribuidas como microservicios, entender qué está ocurriendo dentro de nuestros sistemas es tan importante como que funcionen correctamente. Aquí es donde entra el concepto de observabilidad.
Pero ¿qué es realmente? ¿Cómo se relaciona con los estándares internacionales de calidad? ¿Y cómo podemos aplicarla en un stack como .NET? Aquí te lo explicaré crack 😉
¿Qué es observabilidad?
En términos simples, observabilidad es la capacidad de un sistema para proporcionar información útil sobre su estado interno a partir de sus salidas externas, sin necesidad de modificarlo.
Esto incluye:
- Logs (registros)
- Métricas (indicadores numéricos)
- Trazas (flujo de las peticiones)
Su objetivo es entender el comportamiento del sistema, diagnosticar fallos y detectar problemas antes de que afecten a los usuarios.
¿Por qué es importante?
La observabilidad reduce el tiempo medio de resolución de incidentes (MTTR) y permite:
- Detectar cuellos de botella
- Entender errores en producción
- Ver qué pasa entre servicios en entornos distribuidos
- Tomar decisiones informadas en base a datos reales
Y es mucho más importante hoy en día, con el auge de los sistemas distribuídos como microservicios.
Entendiendo el contexto y dónde encaja la observabilidad
Como bien sabrás, me gusta ir un poco más allá para entender el cuadro completo, pues entonces ahora te explicaré de donde vino esta palabrita tan usada hoy en día.
En este artículo te expliqué sobre el ISO 25010 el cual es un estándar internacional que define un modelo de calidad del software. Si bien nom menciona directamente el término "observabilidad" sí aborda varias características relacionadas como:
- Mantenibilidad: Se relaciona con la observabilidad por el diagnóstico y análisis de fallos.
- Fiabilidad: Se relaciona por la madurez y tolerancia a fallos.
- Rendimiento: La observabilidad mide tiempos de respuesta y uso de recursos para precisamente mejorar el rendimiento.
- Seguridad: La observabilidad monitorea accesos en búsqueda de vulnerabilidades, así que guarda relación también con la seguridad definida en el estándar.
En otras palabras, una buena observabilidad fortalece varias métricas de calidad definidas en el estándar.
Entonces no queda duda que la observabilidad es un requisito no funcional, porque no agrega una funcionalidad al usuario final, sino que afecta directamente la calidad operativa del sistema.
Te doy un ejemplo de RNF de Observabilidad:
"El sistema debe proporcionar trazas distribuidas y logs estructurados para cada solicitud entrante con tiempo de ejecución superior a 300 ms."
Ese es un requisito no funcional real, que me ha tocado ver, así que allí tienes un ejemplo palpable de lo que se quiere transmitir mediante observabilidad en un escenario realista.
Conclusión
En conclusión estimado dev, la observabilidad ya no es opcional. En sistemas modernos, es clave para mantener la calidad, la disponibilidad y la fiabilidad del software. Apoyarse en estándares como ISO/IEC 25010 ayuda a formalizar estos objetivos y convertirlos en requisitos medibles, y además te da a ti, una base sólida para poder aplicarla cuando hagas una exposición ante tu equipo de ingeniería, o ante el público.
En un próximo artículo hablaré sobre qué herramientas y cómo se aplica la observabilidad a un proyecto dentro del ecosistema .NET, por lo pronto déjame decirque que con Serilog, ELK Stack, OpenTelemetry o Jaeger, Prometheus, y Grafana, tienes todo lo necesario para construir sistemas realmente observables y romperla.
Si esta entrada te ha gustado crack, qué esperas? compártela 🥳🐿️
Créditos de imagen de portada: Basado en foto de Donald Giannatti en Unsplash

2 comentarios en «Observabilidad en Ingeniería de Software: Qué es y por qué importa?»