La tolerancia a fallos se refiere a la capacidad de un sistema para mantener un funcionamiento normal incluso cuando ciertos componentes fallan o funcionan mal. Esta capacidad es esencial para sistemas de alta disponibilidad, de misión crítica e incluso críticos para la vida. La tolerancia a fallas se refiere específicamente a que el sistema no experimente ninguna degradación o tiempo de inactividad cuando ocurre un error. Cuando se produce un error, el usuario final no es consciente de ningún problema. Por el contrario, un sistema que experimenta errores pero aún tiene servicios en ejecución se denomina "sistema resistente". Dicho sistema puede adaptarse a la aparición de errores y mantener los servicios, pero presenta ciertos impactos en el rendimiento.
La tolerancia a fallos se utiliza específicamente para describir sistemas informáticos que garantizan que el sistema en general siga funcionando incluso si se producen problemas de hardware o software.
En la historia del desarrollo informático, el primer ordenador tolerante a fallos fue el SAPO construido por Antonín Svoboda en Checoslovaquia en 1951. El diseño básico de la computadora se implementó como un tambor magnético enrollado con alambre y empleó un método de votación para la detección de errores de memoria, una técnica conocida como redundancia triple modular. Conforme fueron avanzando los tiempos, se desarrollaron muchos otros dispositivos similares, principalmente con fines militares. Posteriormente, poco a poco surgieron tres tipos de opciones: aquellas computadoras que pueden funcionar durante mucho tiempo sin requerir ningún mantenimiento, como las computadoras de exploración espacial y los satélites de la NAASA; que son muy fiables pero requieren un seguimiento constante, como los que se utilizan para vigilar y controlar las centrales nucleares o los experimentos con superconductores y los ordenadores que funcionan bajo cargas pesadas, como los numerosos superordenadores utilizados para el seguimiento probabilístico por las compañías de seguros;
Muchas investigaciones sobre las llamadas computadoras LLNM (de larga duración, sin mantenimiento) realizadas por la NASA en la década de 1960 allanaron el camino para futuras misiones espaciales. Estas computadoras admiten métodos de recuperación de memoria mediante el uso de matrices de memoria de respaldo, como la computadora JSTAR, que puede autodetectar y reparar errores o habilitar módulos redundantes. Estas computadoras continúan funcionando hoy.
Los diseños anteriores tendían a centrarse en el diagnóstico interno, donde los profesionales podían descubrir y reemplazar las fallas.
Sin embargo, diseños posteriores demostraron la necesidad de que los sistemas fueran autocurativos y de diagnóstico, capaces de aislar fallas y realizar copias de seguridad redundantes cuando ocurrían fallas. Esto es fundamental para implementar sistemas informáticos de alta disponibilidad.
Por ejemplo, algunos sistemas de hardware tolerantes a fallas requieren que los componentes dañados se retiren y reemplacen mientras el sistema está en ejecución, lo que se denomina "intercambio en caliente". Estos sistemas suelen tener una única copia de seguridad, denominada punto único de tolerancia, y la mayoría de los sistemas tolerantes a fallos entran en esta categoría. Las técnicas tolerantes a fallos han logrado un éxito notable en aplicaciones informáticas.
Tandem Computer se basó en esto y estableció el sistema NonStop para el cálculo del tiempo de funcionamiento anual.
Además del hardware, la tolerancia a fallos también se puede reflejar en el software informático, como el diseño perfecto de la replicación de procesos y los formatos de datos, para que puedan degradarse sin problemas. HTML es un ejemplo típico, que permite a los navegadores web ignorar entidades HTML nuevas y no compatibles sin afectar la usabilidad del documento en general. También aparecen diseños similares en muchos sitios web populares, que proporcionan interfaces livianas en Deepin para mantener una amplia accesibilidad.
Implementar un diseño tolerante a fallas no siempre es una opción práctica porque la redundancia asociada introduce problemas como aumento de peso, costo y tiempo de diseño. Por lo tanto, los diseñadores deben considerar cuidadosamente qué componentes requieren capacidades de tolerancia a fallas.
Cada componente debe evaluarse cuidadosamente en cuanto a su probabilidad de falla, criticidad y costo.
Por ejemplo, la radio de un automóvil, aunque no es un componente crítico, tiene una importancia relativamente baja, mientras que un sistema de sujeción para los ocupantes (como un cinturón de seguridad) se considera necesario debido a su función crítica de brindar seguridad en un accidente. diseño.
Las características básicas de un sistema tolerante a fallas incluyen: ningún punto único de falla; la capacidad de aislar los componentes defectuosos; y la necesidad de recuperación de fallas, lo que generalmente requiere la clasificación y definición de las fallas del sistema.
Frente a un mundo tecnológico cada vez más complejo, ¿puede el diseño tolerante a fallos proteger realmente los diversos sistemas de nuestra vida diaria y permitirnos evitar peligros innecesarios en nuestras vidas futuras de alta tecnología?