Patterns for Fault Tolerant Software
Arquitectural
Patterns: Units of mitigation
¿Como puedes
prevenir que un sistema completo llegue a estar no disponible cuando
ocurre un error?
Existen sistemas de
software que están compuesto por un solo componente, a estos
sistemas se les conoce como monolíticos. El problema con estos
sistemas es que cuando ocurre un error, el sistema completo puede
mantenerse inaccesible por un momento, mientras se hace la
recuperación de tal error. Otra desventaja es que el manejo de
errores(incluye la identificación, mitigación y tratamiento) puede
ser menos flexible.
Una estrategia para
sistemas grandes es crear unidades de mitigación, esto es: separar
el sistema en componentes, estos componentes deben de tener algunas
propiedades que se comentan mas adelante, lo importante por el
momento es considerar que al separar un sistemas en diferentes
componentes tenemos la posibilidad de aislar los componentes que
presenten alguna falla y no afectar el sistema completo, es decir,
los demás módulos pueden seguir trabajando. Entre mas pequeñas
sean las unidades de mitigación, mas opciones tenemos para recuperar
y mitigar errores por que el sistema puede tratar los errores por
unidad mientras las otras unidades se mantienen trabajando.
Durante el diseño
de la Arquitectura del sistema se decide cuales son las unidades de
mitigación o los componentes que compondrán el sistema completo,
entendiendo que cada una de las unidades debe de ser tolerante a
fallas, para que el sistema completo también lo sea.
Las interfaces entre
las unidades de mitigación deben de ser claras y muy bien definidas.
Es a través de estas interfaces que las acciones de mitigación
actúan para la recuperación de errores o reducir el impacto de los
errores.
Las unidades de
mitigación deben de contener acciones atómicas que no confíen
fuertemente en la comunicación con otras unidades de mitigación
para completar su tarea.
De manera general
podemos identificar 4 fases en la tolerancia a fallas, las cuales
son: Detección del Error, Recuperación del Error, Mitigación del
Error y Tratamiento de la falla.
Se parte de una Falla Latente que tenga el
sistema, cuando la falla se activa, genera un error, el sistema debe
de ser capaz de detectar el error, en este caso se debe de disponer
de la información necesaria para saber el tipo de error que se
genero, una vez que el error ha sido detectado tenemos las fases de
recuperación y de mitigación, ambas fases son indispensables para
que la unidad de mitigación pueda volver a estar disponible, una vez
que el procesamiento del error ha sido terminada se puede tener la
unidad de mitigación disponible y empieza la fase de tratamiento
de la falla, la última fase puede requerir mas tiempo para
completarse, ya que se trata de correcciones de software(bugs),
cambios de hardware, restablecimiento de recursos,......
El patrón de
Unidades de mitigación es una actividad que se lleva a cabo a nivel
de diseño, durante el diseño es donde se toma la decisión de que
unidades de mitigación compondrán el sistema completo.
No existe reglas o
procedimientos que sean aplicados de manera tajante para realizar la
identificación de las unidades de mitigación, a continuación se
describen algunas sugerencias:
- Divide el sistema
en partes que puedan contener ambos, probables errores y recuperación
de errores.
- Selecciona la
división que haga mas sentido al sistema completo.
- Una vez
identificadas las unidades de mitigación, construye el resto del
sistema alrededor de estas unidades.
Referencia:
No hay comentarios:
Publicar un comentario