Richard Cook: ¿cómo fallan los sistemas complejos?
DESARROLLO WEB, INFRAESTRUCTURA.En esta nueva entrada de nuestro blog les traemos una serie de consideraciones acerca del funcionamiento de los sistemas complejos, una lectura de 10 minutos -especialmente útil para Directores de TIC’s u Oficiales de Seguridad de la Información (CISO's)- acerca de los factores involucrados en sus fallas, errores, detenciones e incluso catástrofes, así como algunas recomendaciones para minimizar los peligros.
Estas observaciones parten de una serie de conclusiones hechas por el Dr. Richard I. Cook del Laboratorio de Tecnologías Cognitivas de la Universidad de Chicago en su texto How Complex Systems Fail.
Estos principios son especialmente importantes en el diseño de sistemas distribuidos que toleran fallos. Nos ayudarán a diseñar estrategias de microservicios o simplemente hacer más resilientes nuestros sistemas y nuestras prácticas de administración cloud.
Autores como John Allspaw o Martin Fowler hacen referencia al trabajo de Richard Cook, quien sorprendentemente para muchos no centró su trabajo en sistemas de cómputo sino en sistemas complejos en general.
Videos Recomendados:
Velocity NY 2013: Richard Cook, "Resilience In Complex Adaptive Systems"
Velocity 2012: Richard Cook, "How Complex Systems Fail"
Sistemas complejos a prueba de todo
De entrada se debe asumir que todo sistema complejo implica de manera intrínseca una serie de riesgos, y por tanto se vuelve esencial identificar de la forma más amplia posible cada uno de los posibles peligros, para abordarlos de forma integral.
Un buen sistema complejo, cuenta con un eficiente sistema de protecciones por capas, de modo que una falla no afecte el funcionamiento general -en la mayor medida de lo posible-. Esto se vuelve importante, pues errores en múltiples componentes claves pueden convertirse fácilmente en catástrofe, que es una posibilidad que se debe reducir a su mínima expresión, ante el colapso económico y organizacional que pueden representar.
No se debe negar que la catástrofe es una amenaza siempre latente, pero que se debe tratar de alejar, considerando las fortalezas tanto técnicas, como humanas, por ejemplo las organizaciones, regulatorias o corporativas.
Errores típicos sobre los accidentes
Para una constante optimización del rendimiento, es importante aprender de los errores, siendo los accidentes un factor esencial; no obstante que es fácil perder la mira, y realizar diagnósticos poco acertados, lo cual poco o nada contribuirá a evitar que se repitan.
Es fundamental asumir que los accidentes, casi siempre se van a presentar debido a la combinación de errores en múltiples ámbitos. Para un buen diagnóstico, resulta esencial tratar de eliminar la idea de un culpable y ser lo más objetivo y analista posible; pues es común que, buscando simplemente buscar culpables o responsabilidades, o solo por llenar una hoja protocolaria, se asuma una causa de origen única como el problema.
Hacer un estudio lo suficientemente amplio, para encontrar cada una de los factores que causaron un accidente, es primordial para poder aprovechar esta experiencia y revertir los peligros potenciales.
De igual forma casi siempre que se analiza a fondo un accidente en un sistema de este tipo, se descubre que previamente se tenían una serie de proto-accidentes que propiciaron las causas, es decir mini eventos que no fueron registrados o alertados, y que por tanto pudieron haber sido también elementos que detonaran la catástrofe.
Considerar no complicar de más
Aunque un error común, es también considerar que ante un accidente, se debe instalar todo una serie de protocolos o medidas de seguridad para reducir los riesgos de esa concreta posibilidad.
No obstante, muchos accidentes, en realidad fueron por cuestiones excepcionales, por lo que es importante valorar el tipo de respuesta, ya que muchas veces se han adoptado medidas exageradas, que amplían los protocolos, las medidas o instrucciones, lo cual puede hacer más complicado el proceso, propiciando distracciones, más complejidad u otra serie de factores que podrían en realidad enredar más el problema e incrementar el riesgo de fallos o accidentes, en vez de reducirlo.
En modo degradado
Para un óptimo funcionamiento, un sistema complejo en realidad debe tener bien calculado su modo degradado de operación; es decir, nunca -o casi- se opera a un máximo de las capacidades, pues ante la complejidad del sistema sería complicado mantener la perfección como objetivo.
Es así, como a pesar de tener diversos puntos con fallas, conflictos o tareas de mantenimiento, el sistema -con ayuda humana, claro- debe tener las vías y mecanismos suficientes para subsanar y enfocar la dinámica a través de las vías disponibles.
Tomar en cuenta los diversos factores
También es importante diferenciar los principales factores que participan del proceso: los elementos organizaciones, los técnicos y los humanos.
Cada una de estas vertientes puede fallar y se encuentra también en constante movimiento y transformación; determinar las capacidades y respuestas para cada área, es importante para un óptimo funcionamiento del sistema.
El factor humano es clave
También es importante considerar que el elemento humano, va a ser en última instancia el que permite adaptar el funcionamiento de los sistemas para una optimización constante.
En este sentido, resulta menester considerar factores como la experiencia, para lo cual se debe tener un departamento de recursos humanos muy bien conectado con el área técnica, de manera que se pueda llevar un control puntual, para asegurar que se tenga siempre una plantilla suficiente, no solo en cuanto a posiciones y horarios, sino respecto a conocimientos y capacidades específicas.
Se recomienda aprovechar el capital humano, para favorecer una capacitación constante que permita también fortalecer el sistema.
La gente crea la seguridad
La seguridad no es un componente, no es algo que se pueda comprar o instalar, es una característica del sistema y de sus partes; y en gran medida, los recursos humanos son encargados de verificar y coordinar su existencia de la forma más amplia posible.
Resulta esencial proveer a los operadores, de definiciones, métricas, herramientas y protocolos, muy claramente calibrados, a modo que se puedan percibir y medir los posibles riesgos. Contar con un buen sustento para verificar y evaluar de forma constante las diversas amenazas, resulta esencial para el óptimo desarrollo de un sistema complejo.
Se requiere experiencia
De los errores se debe de aprender, y en este sentido, un buen sistema complejo debe tener la capacidad de documentar a fondo los pormenores, para así poder trazar estrategias a futuro más completas y seguras.
Es así, como se vuelve clave también la habilidad y capacidad del personal para saber descifrar cuándo se está por llegar al límite; el hecho de poder determinar qué tan cerca o qué tan lejos se está de ese punto de quiebre, resulta de gran valor para poder enfrentar las amenazas de la forma más oportuna posible, y así asegurar un desarrollo más fluido, estable y efectivo de un sistema complejo.