Cómo medir confiabilidad en software
Clase 7 de 43 • Curso Profesional de Arquitectura de Software
Contenido del curso
Atributos de calidad
- 2

Qué son los atributos de calidad en software
01:49 min - 3

Cómo medir idoneidad funcional en software
02:52 min - 4

Qué es eficiencia de ejecución en software
04:14 min - 5

Cómo medir interoperabilidad y coexistencia
03:49 min - 6

Qué es la usabilidad y sus 6 dimensiones
08:14 min - 7

Cómo medir confiabilidad en software
Viendo ahora - 8

Los 5 pilares de seguridad en software
04:01 min - 9

Cómo garantizar mantenibilidad con tests
06:27 min - 10

Adaptabilidad vs capacidad de instalación vs reemplazo
02:48 min - 11

Tensiones entre atributos de calidad de software
04:04 min - 12

Atributos de calidad según fase de empresa
07:00 min
Patrones de arquitectura
- 13

Qué es un patrón de arquitectura
02:50 min - 14

Modelo vista controlador: cómo separar responsabilidades
05:37 min - 15

Arquitectura en capas: controller, servicio y repositorio
03:14 min - 16

Event sourcing vs bases relacionales
06:17 min - 17

Qué es la arquitectura microkernel
01:52 min - 18

Arquitectura Comparte Nada con Map Reduce
02:29 min - 19

Patrón de microservicios: cuándo y cómo
03:57 min - 20

Qué es CQRS y cómo separa lectura de escritura
03:24 min - 21

Arquitectura hexagonal: puertos y adaptadores
04:10 min - 22

Qué son los contextos delimitados en DDD
05:34 min - 23

Cómo combinar patrones de arquitectura
09:22 min - 24

Evolución de patrones desde monolito a microservicios
07:58 min
Diseño de una arquitectura
- 25

Cómo traducir requerimientos en decisiones arquitectónicas
02:18 min - 26

Conectores en arquitectura: tipos y cuándo usarlos
06:18 min - 27

Llamadas asíncronas vs síncronas vs cliente-servidor
03:05 min - 28

Conector enrutador vs difusión: Twitter
01:55 min - 29

Conectores cola, repositorio y pub/sub
03:52 min - 30

Framework de diseño orientado a atributos
01:55 min - 31

Cómo detectar fallas y reparar sistemas
05:59 min - 32

Cómo recuperar y prevenir fallas en sistemas
04:09 min - 33

Tácticas para confinar modificaciones
06:15 min - 34

Cómo prevenir efectos dominó en software
12:17 min - 35

Tácticas para controlar eficiencia de ejecución
09:14 min - 36

Cómo detectar, resistir y recuperarse de ataques
09:02 min - 37

Cómo probar que el software funciona correctamente
05:14 min - 38

Cómo controlar la usabilidad con tácticas
08:20 min - 39

Cómo validar arquitectura con ATAM y métricas
06:34 min - 40

Evolución de arquitectura: startup a gran escala
10:30 min
Modelado y documentación de arquitectura
La confiabilidad en software define si un sistema se puede usar con normalidad en el tiempo. Aquí encontrarás cómo evaluar madurez, disponibilidad, tolerancia a fallos o resiliencia y capacidad de recuperación con métricas claras, ejemplos reales y prácticas para garantizar servicio continuo.
¿Qué es la confiabilidad y cuáles son sus subcaracterísticas?
La confiabilidad responde a una pregunta clave: ¿el sistema se mantiene utilizable a lo largo del tiempo?. Para entenderla de forma accionable, se descompone en cuatro atributos medibles.
- Madurez: cuántas veces falla el sistema en uso normal. Menos fallos, mayor madurez.
- Disponibilidad: proporción de tiempo en servicio durante su ciclo normal. Incluye fallos y ventanas de mantenimiento o despliegue.
- Tolerancia a fallos o resiliencia: capacidad de seguir dando servicio pese a errores internos o en sistemas dependientes.
- Capacidad de recuperación: rapidez para volver a operar tras una caída, ya sea por fallo o por una salida planificada.
¿Cómo se miden madurez, disponibilidad, resiliencia y recuperación?
Medir bien es la base para mejorar. Estas métricas permiten comparar y comprometer niveles de servicio.
- Madurez con tiempo medio entre averías: mide cuánto tiempo pasa entre fallos. Cuanto más largo es ese intervalo, más maduro es el sistema.
- Disponibilidad como porcentaje: se calcula el tiempo total disponible sobre el período evaluado. Ejemplo: 95 % en una semana o mes. Algunas organizaciones comprometen “nueves”, como seis nueves (99.9999 %), cuando la continuidad es crítica. Se formaliza en contratos del tipo service level agreement (SLA) o acuerdo de servicio.
- Resiliencia con inyección de fallos: para verificar que el sistema sigue funcionando ante errores, se introducen fallos y se ejecutan pruebas. Netflix popularizó el chaos testing, donde se provocan fallos en distintos puntos para validar el comportamiento esperado bajo estrés.
- Capacidad de recuperación con tiempo medio hasta la recuperación: mide cuánto tarda en volver a dar servicio tras salir de servicio por un fallo o por mantenimiento. Conecta con la mantenibilidad del código: si reparar es difícil, la recuperación se alarga y el servicio sufre.
Habilidades clave que se ejercitan al medir estos atributos:
- Identificar fallos y registrar incidentes con precisión.
- Definir objetivos de MTBF (tiempo medio entre averías) y MTTR (tiempo medio hasta la recuperación).
- Acordar y auditar SLA con porcentajes de disponibilidad exigentes.
- Diseñar pruebas de resiliencia usando técnicas tipo chaos testing.
¿Qué ejemplos aplicados ayudan a fijar estos conceptos?
Los ejemplos aterrizan los criterios y orientan decisiones de arquitectura y operación.
- Madurez en transacciones críticas: banca y pagos con tarjeta. Se espera que el proceso de compra no falle. Un error sin explicación frustra al usuario y daña la confianza.
- Disponibilidad con acuerdos formales: los SLA fijan la disponibilidad en un período (mensual o anual). Los sistemas críticos requieren medición fina para cumplir lo pactado.
- Resiliencia en móviles con conectividad variable: la app debe soportar desconexión, timeouts y errores de comunicación. El objetivo es mantener el servicio pese a fallos intermitentes.
- Capacidad de recuperación en distribuidos: en plataformas como servicio (por ejemplo, la plataforma de Amazon) es común usar escalabilidad automática para crecer ante fallos o picos y mantener el servicio. Con Docker, reiniciar un contenedor descarta el estado temporal defectuoso y permite seguir operando.
Conceptos y keywords que guían la práctica diaria:
- Ciclo de vida y ventanas de mantenimiento o despliegue.
- Errores de comunicación, desconexión y timeout en integraciones.
- Sistemas dependientes y manejo de fallos cruzados.
- Escalabilidad automática y reinicio de containers para recuperar servicio.
¿Tienes métricas objetivo que debas cumplir o un caso desafiante de disponibilidad o resiliencia? Comparte tu experiencia y enfoques en los comentarios.