Conclusión - Disponibilidad y más allá: Descripción y mejora de la resiliencia de los sistemas distribuidos en AWS

Conclusión

Hemos definido 12 reglas para la alta disponibilidad a lo largo de este documento.

  • Regla 1: Los tres factores que se utilizan para mejorar la disponibilidad en los sistemas distribuidos son una menor frecuencia de errores (MTBF más largo), tiempos de detección de errores más cortos (MTTD más corto) y tiempos de reparación más cortos (MTTR más corto).

  • Regla 2: La disponibilidad del software en su carga de trabajo es un factor importante de la disponibilidad general de la carga de trabajo y debe recibir la misma atención que otros componentes.

  • Regla 3: Reducir las dependencias puede tener un impacto positivo en la disponibilidad.

  • Regla 4: En general, seleccione las dependencias cuyos objetivos de disponibilidad sean iguales o superiores a los objetivos de su carga de trabajo.

  • Regla 5: Utilice repuestos para incrementar la disponibilidad de las dependencias en una carga de trabajo.

  • Regla 6: La rentabilidad del uso de repuestos tiene un límite superior. Utilice el menor número de repuestos necesario para lograr la disponibilidad requerida.

  • Regla 7: No tenga dependencias en los planos de control en el plano de datos, especialmente durante una recuperación.

  • Regla 8: Cuando sea posible, acople las dependencias de manera flexible para que la carga de trabajo pueda funcionar correctamente a pesar del deterioro de la dependencia.

  • Regla 9: La observabilidad y la instrumentación son fundamentales para reducir los tiempos medios de detección y de recuperación (MTTD y MTTR, respectivamente).

  • Regla 10: Concéntrese en la mitigación del impacto, no en la solución del problema. Recupere el funcionamiento normal por la vía más rápida.

  • Regla 11: El aislamiento de errores reduce el alcance del impacto e incrementa el MTBF de la carga de trabajo mediante la reducción del índice general de errores.

  • Regla 12: Facilite que los operadores hagan lo correcto.

La disponibilidad de la carga de trabajo se mejora mediante la reducción del MTTD y el MTTR, y con el aumento del MTBF. En resumen, hemos analizado las siguientes formas de mejorar la disponibilidad, que abarcan la tecnología, las personas y los procesos.

  • MTTD

    • Reduzca el MTTD mediante la supervisión proactiva de las métricas de la experiencia del cliente.

    • Aproveche las comprobaciones de estado detalladas para una rápida conmutación por error.

  • MTTR

    • Supervise las métricas del alcance del impacto y del estado operativo.

    • Reduzca el MTTR siguiendo los pasos 1/Reiniciar un componente, 2/Reiniciar el sistema completo, 3/Reinstalar imagen/Reimplementar y 4/Reemplazar.

    • Sortee los errores conociendo el alcance del impacto.

    • Utilice servicios que tengan tiempos de reinicio más rápidos, como contenedores y funciones sin servidor, en lugar de máquinas virtuales o hosts físicos.

    • Restaure automáticamente las implementaciones con errores siempre que sea posible.

    • Establezca manuales de procedimientos y herramientas operativas para las operaciones de diagnóstico y los procedimientos de reinicio.

  • MTBF

    • Elimine los errores y defectos del software mediante rigurosas pruebas antes de su lanzamiento al entorno de producción.

    • Implemente la ingeniería del caos y la inyección de errores.

    • Utilice el volumen adecuado de capacidad de reserva en las dependencias para tolerar los errores.

    • Minimice el alcance del impacto durante los errores con contenedores de errores.

    • Implemente estándares para las implementaciones y los cambios.

    • Diseñe interfaces de operador sencillas, intuitivas, coherentes y bien documentadas.

    • Establezca objetivos en torno a la excelencia operativa.

    • Favorezca la estabilidad frente al lanzamiento de nuevas características cuando la disponibilidad sea una dimensión fundamental de la carga de trabajo.

    • Implemente cuotas con limitaciones o desborde la carga, o bien haga ambas cosas, para evitar sobrecargas.

Recuerde que nunca lograremos evitar por completo los errores. Céntrese en los diseños de software con el mejor aislamiento posible de errores, que limite el alcance y la magnitud del impacto, idealmente manteniendo ese impacto por debajo de los umbrales de tiempo de inactividad. Invierta también en herramientas muy rápidas y muy fiables de detección y mitigación. Los sistemas distribuidos modernos aún deben considerar los errores como algo inevitable y diseñarse a todos los niveles para ofrecer una alta disponibilidad.