> For the complete documentation index, see [llms.txt](https://weekly-essay.mikey.wang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://weekly-essay.mikey.wang/es/2022/w23-a-stability-metric-that-accurately-describes-customer-impact.md).

# W23-Una métrica de estabilidad que describa con precisión el impacto en los clientes

### **Contexto**

¿Por qué he empezado a pensar en las métricas de estabilidad\*\*?\*\* Se han juntado varios acontecimientos recientes. Primero, estoy preparando la recuperación ante desastres de Yugong. Segundo, mejorar la disponibilidad es el O2 del equipo este año y necesito ayudar a Zhongze con la planificación. Tercero, un curso sobre pensamiento basado en datos que Jerry recomendó hace un tiempo me ha dado bastantes ideas.

### **Algunos conceptos básicos**

A menudo decimos que un servicio debe tener alta disponibilidad, alta fiabilidad y alta estabilidad. En un sentido amplio, podríamos pensar que basta con medirlo mediante un indicador parecido a la tasa de éxito. Pero, en sentido estricto, disponibilidad, fiabilidad y estabilidad no son equivalentes.

**Availability, disponibilidad.** Es la proporción de tiempo en que el sistema funciona normalmente dentro de un periodo de observación. **Describe si se puede usar.**

**Reliability, fiabilidad.** Es la probabilidad de que un sistema funcione de forma continua y sin fallos durante un intervalo dado y bajo unas condiciones determinadas. **Describe si funciona correctamente.**

**Stability, estabilidad.** Se refiere, entre otras cosas, a la probabilidad de errores y a la tendencia de degradación del rendimiento durante la operación continuada de un ciclo de funcionamiento, bajo unas condiciones de carga determinadas. En el frontend, el entorno de ejecución está descentralizado y distribuido entre los terminales. Por ello, **la estabilidad describe si el software funciona bien en distintos dispositivos y condiciones de red.**

Podemos entender su relación de esta forma: una fiabilidad baja puede afectar a la disponibilidad en cierta medida, pero lo contrario no es necesariamente cierto. La disponibilidad es un requisito previo de la fiabilidad, y la estabilidad supone una mejora adicional de esta última.

A continuación, presentaré brevemente el concepto de esperanza matemática. Esta parte procede del curso de pensamiento basado en datos que mencioné antes. Allí se utiliza la esperanza para explicar la ley de Murphy, un buen ejemplo de su aplicación.

La esperanza se define como la media ponderada de los resultados posibles, utilizando sus probabilidades como pesos. Su valor queda determinado por completo por la distribución de probabilidades. Según la ley de los grandes números, cuando el número de repeticiones es suficientemente alto, se alcanza el valor esperado previsto. Por tanto, la esperanza es una predicción previa. Conviene señalar que el promedio del que solemos hablar es una estadística calculada a posteriori. En inglés también tienen términos distintos: el valor esperado es Mean y el promedio es Average.

### **Cómo se calculan las métricas de disponibilidad actuales**

El SLA de las especificaciones de entrega de software es un conjunto de valores esperados.

En el sector existe una definición habitual de disponibilidad: Availability = MTTF / (MTTF + MTTR).

MTTF significa Mean Time To Failure, tiempo medio hasta el fallo. Indica cuánto tiempo puede funcionar normalmente el sistema, de media, antes de que se produzca un fallo. Cuanto mayor es el MTTF, más fiable es el sistema.

MTTR significa Mean Time To Repair, tiempo medio de reparación. Se refiere al tiempo medio necesario para reparar un sistema reparable, desde la aparición del fallo hasta la finalización de la reparación. Cuanto menor es el MTTR, mejor es la mantenibilidad del sistema.

En la empresa utilizamos una definición más concreta de disponibilidad. El tiempo de reparación se define en detalle y se calcula convirtiendo los datos de pérdidas causadas por los fallos en una duración.

La fórmula es: Availability = ( 525600 - sum( min {1440 \* loss, ( t2 - t1 ) })) / 525600.

525600 representa los 525600 minutos de un año. 1440 representa los 1440 minutos de un día. loss es la proporción de pedidos diarios perdidos. Para negocios no transaccionales también se puede utilizar la pérdida de visitas o el incremento de reclamaciones de clientes. t2-t1 representa la duración del fallo.

### **Cómo calcular la métrica X**

Estoy intentando encontrar una métrica que describa con más precisión el impacto en los clientes. Como aún no se me ha ocurrido un buen nombre, la llamaré por ahora métrica X.

Si definimos el valor esperado del impacto en los clientes como M (Mean), la probabilidad de que ese impacto ocurra como P (Probability) y su magnitud como D (Degree), entonces M = P \* D. Para facilitar la lectura, utilizaré un negocio transaccional como ejemplo. En ese caso, P = duración del fallo / tiempo total del año, y D = pedidos perdidos / pedidos totales del año.

La métrica X podría calcularse así:

( 1 - sqrt ( (pedidos perdidos / pedidos totales del año) \* (duración del fallo / tiempo total del año) ) \* 100%

Todavía necesito madurar más la idea de cómo aplicar esta métrica en producción.
