Tolerancia a fallos


La tolerancia a fallas es la propiedad que permite que un sistema continúe funcionando correctamente en caso de falla de una o más fallas dentro de algunos de sus componentes. Si su calidad operativa disminuye en absoluto, la disminución es proporcional a la gravedad de la falla, en comparación con un sistema diseñado ingenuamente, en el que incluso una falla pequeña puede causar una falla total. La tolerancia a fallas es particularmente buscada en sistemas de alta disponibilidad , de misión crítica o incluso críticos para la vida . La capacidad de mantener la funcionalidad cuando se descomponen partes de un sistema se conoce como degradación elegante . [1]

Un diseño tolerante a fallas permite que un sistema continúe con su operación prevista, posiblemente a un nivel reducido, en lugar de fallar por completo, cuando falla alguna parte del sistema . [2] El término se usa más comúnmente para describir los sistemas informáticos diseñados para continuar más o menos completamente operativos con, quizás, una reducción en el rendimiento o un aumento en el tiempo de respuesta en caso de alguna falla parcial. Es decir, el sistema en su conjunto no se detiene por problemas ni en el hardware ni en el software.. Un ejemplo en otro campo es un vehículo de motor diseñado para que siga siendo manejable si se pincha una de las llantas, o una estructura que es capaz de mantener su integridad en presencia de daños debido a causas tales como fatiga , corrosión , fabricación. fallas o impacto.

Dentro del alcance de un sistema individual , la tolerancia a fallas se puede lograr anticipando condiciones excepcionales y construyendo el sistema para enfrentarlas y, en general, apuntando a la autoestabilización para que el sistema converja hacia un estado libre de errores. Sin embargo, si las consecuencias de una falla del sistema son catastróficas, o si el costo de hacerlo lo suficientemente confiable es muy alto, una mejor solución puede ser usar alguna forma de duplicación. En cualquier caso, si la consecuencia de un fallo del sistema es tan catastrófica, el sistema debe poder utilizar la reversión para volver a un modo seguro. Esto es similar a la recuperación de reversión, pero puede ser una acción humana si hay personas presentes en el bucle.

La primera computadora tolerante a fallas conocida fue SAPO , construida en 1951 en Checoslovaquia por Antonín Svoboda . [3] : 155  Su diseño básico consistía en tambores magnéticos conectados a través de relés, con un método de votación de detección de errores de memoria ( redundancia modular triple ). Se desarrollaron varias otras máquinas a lo largo de esta línea, principalmente para uso militar. Eventualmente, se separaron en tres categorías distintas: máquinas que durarían mucho tiempo sin mantenimiento, como las que se usan en las sondas espaciales y los satélites de la NASA.; computadoras que eran muy confiables pero requerían un monitoreo constante, como las que se usan para monitorear y controlar plantas de energía nuclear o experimentos con supercolisionadores ; y finalmente, computadoras con una gran cantidad de tiempo de ejecución que estarían bajo un uso intensivo, como muchas de las supercomputadoras utilizadas por las compañías de seguros para su monitoreo de probabilidad .

La NASA realizó la mayor parte del desarrollo de la denominada computación LLNM (larga vida útil, sin mantenimiento) durante la década de 1960, [4] en preparación para el Proyecto Apolo y otros aspectos de la investigación. La primera máquina de la NASA entró en un observatorio espacial y su segundo intento, la computadora JSTAR, se utilizó en la Voyager . Esta computadora tenía una copia de seguridad de las matrices de memoria para usar métodos de recuperación de memoria y, por lo tanto, se la llamó la computadora JPL Self-Testing-And-Repairing. Podría detectar sus propios errores y corregirlos o abrir módulos redundantes según sea necesario. La computadora todavía funciona, a principios de 2022 [5] .


"M2 Mobile Web", la interfaz web móvil original de Twitter, sirvió más tarde como versión heredada alternativa para clientes sin compatibilidad con JavaScript y/o navegadores incompatibles hasta diciembre de 2020.
Un ejemplo de elegante degradación por diseño en una imagen con transparencia. Cada una de las dos imágenes superiores es el resultado de ver la imagen compuesta en un visor que reconoce la transparencia. Las dos imágenes inferiores son el resultado de un visor sin soporte para la transparencia. Debido a que la máscara de transparencia (parte inferior central) se descarta, solo queda la superposición (parte superior central); la imagen de la izquierda ha sido diseñada para degradarse con gracia, por lo que sigue siendo significativa sin su información de transparencia.