Estrategias comunes de mitigación - Recomendaciones de AWS

Estrategias comunes de mitigación

Para empezar, valore la posibilidad de utilizar mitigaciones preventivas para evitar que el modo de error afecte a la historia del usuario. A continuación, debería pensar en las mitigaciones correctivas. Las mitigaciones correctivas ayudan al sistema a recuperarse automáticamente o a adaptarse a los cambios en las condiciones. Esta es una lista de las mitigaciones más comunes para cada categoría de error que se ajustan a las propiedades de resiliencia.

Categoría de error

Propiedades de resiliencia deseadas

Mitigaciones

Únicos puntos de error (SPOF)

Redundancia y tolerancia a errores

  • Implemente la redundancia; por ejemplo, mediante el uso de varias instancias de EC2 detrás de Elastic Load Balancing (ELB).

  • Elimine las dependencias del plano de control del servicio global de AWS y únicamente asuma las dependencias en los planos de datos del servicio global.

  • Utilice una degradación estable cuando un recurso no esté disponible, de modo que el sistema se mantenga estable estáticamente ante un único punto de error.

Carga excesiva

Capacidad suficiente

Latencia excesiva

Salida puntual

Configuraciones incorrectas y errores

Salida correcta

Destino compartido

Aislamiento de errores

  • Implemente la tolerancia a errores en el sistema y use límites de aislamiento de errores lógicos y físicos, como varios clústeres de computación o de contenedores, varias cuentas de AWS, varias entidades principales de AWS Identity and Access Management (IAM), varias zonas de disponibilidad y, tal vez, varias Regiones de AWS.

  • Las técnicas como las arquitecturas basadas en celdas y las particiones aleatorias también pueden mejorar el aislamiento de errores.

  • Tenga en cuenta patrones como el acoplamiento débil y la degradación gradual para evitar errores en cascada. Al priorizar las historias de usuario, también puede aprovechar esa priorización para distinguir entre las historias de usuario que son esenciales para la principal función empresarial y las historias de usuario que pueden degradarse de manera estable. Por ejemplo, en un sitio de comercio electrónico, no le interesa que el deterioro del widget de promociones del sitio web afecte a la capacidad de procesar nuevos pedidos.

Si bien algunas de estas medidas de mitigación necesitan un esfuerzo mínimo para implementarlas, otras (como la adopción de una arquitectura basada en celdas para aislar los errores de forma predecible y reducir al mínimo los errores de destino compartido) podrían necesitar un nuevo diseño de toda la carga de trabajo y no solo de los componentes de una historia de usuario concreta. Como se mencionó anteriormente, es importante sopesar las probabilidades y el impacto del modo de error en relación con las concesiones que se deben hacer para mitigarlo.

Además de las técnicas de mitigación que se aplican a cada categoría de modo de error, debe pensar en las mitigaciones necesarias para recuperar la historia del usuario o todo el sistema. Por ejemplo, un error podría detener un flujo de trabajo e impedir que los datos se escribieran en los destinos previstos. En este caso, es posible que deba usar herramientas operativas para volver a impulsar el flujo de trabajo o corregir los datos manualmente. Es posible que también tenga que incorporar un mecanismo de puntos de control a la carga de trabajo para evitar la pérdida de datos en caso de que se produzcan errores. O puede que tenga que crear un cable andon para pausar el flujo de trabajo y dejar de aceptar nuevos trabajos para evitar más daños. En estos casos, debe pensar en las herramientas operativas y las barreras de protección que necesita.

Por último, debe asumir siempre que las personas van a cometer errores a medida que desarrolle una estrategia de mitigación. Si bien las prácticas modernas de DevOps intentan automatizar las operaciones, las personas aún tienen que interactuar con las cargas de trabajo por distintos motivos. Una acción humana incorrecta podría provocar un error en cualquiera de las categorías de SEEMS, como eliminar demasiados nodos durante el mantenimiento y provocar una sobrecarga o configurar incorrectamente una marca de característica. En realidad, estas situaciones son un fracaso de las barreras de protección preventivas. Un análisis de la causa raíz nunca debe terminar con la conclusión de que “un humano ha cometido un error”. En cambio, debe abordar las razones por las que ha sido posible cometer errores en primer lugar. Por lo tanto, la estrategia de mitigación debe considerar cómo los operadores humanos pueden interactuar con los componentes de la carga de trabajo y cómo prevenir o minimizar el impacto de los errores de los operadores humanos mediante barreras de protección.