22 ene 2024

Ingeniería del Caos, War Games y la Resiliencia

En términos generales, el proceso de la ingeniería del caos se basa en "experimentar con los límites".

La Ingeniería del Caos es la disciplina de experimentar en un Sistema, con la finalidad de generar confianza en la capacidad del Sistema para soportar condiciones turbulentas en producción.

La ingeniería del caos es la ciencia detrás de inyectar fallas intencionalmente en los sistemas para medir la capacidad de recuperación. Como cualquier método científico, Chaos Engineering se enfoca en experimentos / hipótesis y luego compara los resultados con un control. El ejemplo por excelencia de Chaos Engineering en un sistema distribuido es eliminar servicios aleatorios para ver cómo responden los elementos y qué detrimento se manifiesta en el viaje del usuario.

Para llevar simulaciones más dinámicas y "juegos de guerra" a los campos cibernéticos, las simulaciones deben ser más dinámicas y personalizables. No se puede esperar que los humanos enfrenten eficazmente amenazas que cambian cada vez más rápido a menos que la capacitación para detener esas amenazas evolucione tan rápidamente como para capturar los últimos TTP, idealmente casi tan pronto como se identifiquen como indicadores de compromiso (IoC) en la naturaleza.

Proceso del caos

Para ello, primero se define un estado estable, en el que un sistema funciona según lo definido como normal. Un grupo de control asegura que es el escenario caótico el que influye en el sistema; el grupo de control continúa trabajando fuera de este escenario de prueba.

Ahora se introducen problemas en el escenario de prueba (fallas del servidor, discos duros defectuosos, fallas, escenarios de sobrecarga, ataques informáticos). El objetivo principal de la ingeniería del caos es probar cómo lidiar con estos problemas. ¿Cómo se pueden ampliar los límites de un sistema? ¿Qué redundancias son necesarias para mantener en funcionamiento el servicio existente? ¿Y cómo se pueden eliminar las debilidades dadas?

Para ganar más confianza en un sistema, es esencial limitar los errores y mantener los estados del sistema estables tanto como sea posible. Precisamente por eso, es fundamental someter los sistemas a pruebas críticas y provocar errores de forma selectiva.

En realidad, la ingeniería del caos está lejos de ser caótica: es un enfoque disciplinado basado en datos para realizar experimentos que utilizan el comportamiento caótico para estresar los sistemas y descubrir sus debilidades (o demostrar su resiliencia). Los principales beneficios incluyen:

  • Exponer la deuda técnica
  • Generar confianza en los sistemas implementados y entre los equipos que contribuyen a esos sistemas.
  • Identificar y realizar integraciones comprobables y posibles puntos de falla.
  • Habilitar el aprendizaje basado en experimentos
  • Ofrecer confiabilidad y resiliencia mejoradas de los sistemas para reducir el tiempo de inactividad
  • Estos beneficios, a su vez, ayudan a mejorar la experiencia y la satisfacción del cliente.

Ingeniería de la Resiliencia: Construyendo para resistir

La ingeniería de la resiliencia se centra en la creación de sistemas tecnológicos que no solo funcionan de manera eficiente en condiciones ideales, sino que también pueden resistir y recuperarse rápidamente de eventos inesperados o errores.

Aquí hay algunos conceptos clave:

  • Identificación de puntos críticos del error: Los ingenieros de la resiliencia llevan a cabo un análisis exhaustivo para identificar los puntos críticos del error en un sistema. Estos son los componentes que, si generan problemas, pueden tener un impacto significativo en el rendimiento general.
  • Implementación de redundancias: Para aumentar la resistencia, se introducen elementos redundantes en el sistema. Esto implica la duplicación de componentes críticos, de modo que si uno da error, otro pueda tomar su lugar sin interrupciones significativas.
  • Estrategias de recuperación eficientes: Se desarrollan planes de recuperación sólidos para garantizar que, en caso de un error, el sistema pueda volver a un estado operativo normal en el menor tiempo posible.
  • Pruebas rigurosas: La ingeniería de la resiliencia implica pruebas exhaustivas bajo diversas condiciones para simular eventos inesperados y evaluar cómo responde el sistema. Esto garantiza que las estrategias de recuperación sean efectivas y que el sistema pueda adaptarse a situaciones impredecibles.

Ingeniería del Caos: Desafiando para fortalecer

La ingeniería del caos adopta un enfoque más desafiante al introducir eventos inesperados y situaciones caóticas controladas en un sistema. Aquí se destacan algunos aspectos clave:

  1. Simulación de eventos disruptivos: Los ingenieros del caos simulan situaciones adversas, como errores en el hardware, interrupciones en la red o cambios en el entorno. Este enfoque permite identificar debilidades ocultas que podrían no ser evidentes en condiciones normales.
  2. Aprendizaje de la adversidad controlada: La idea es aprender de eventos caóticos controlados. Al exponer el sistema a situaciones desafiantes de manera controlada, los equipos de ingeniería pueden identificar y abordar debilidades antes de que se conviertan en problemas reales.
  3. Ciclo de mejora continua: La ingeniería del caos no solo se trata de identificar problemas, sino también de utilizar esa información para mejorar continuamente la resiliencia del sistema. Este enfoque proactivo contribuye a un ciclo constante de mejora.

Colaboración efectiva: Resiliencia y Caos trabajando juntos

La verdadera fortaleza se encuentra en la colaboración efectiva entre la ingeniería de la resiliencia y la ingeniería del caos. Ambas prácticas se complementan mutuamente para ofrecer soluciones tecnológicas sólidas y adaptativas. Mientras que la ingeniería de la resiliencia construye la fortaleza inherente del sistema, la ingeniería del caos desafía ese sistema para revelar y corregir debilidades potenciales.

La ingeniería de la resiliencia y del caos son herramientas poderosas en la gestión de sistemas tecnológicos en constante cambio. En un mundo donde la incertidumbre es la norma, estas disciplinas no solo permiten la supervivencia, sino que también fomentan la innovación y la mejora continua. Al abrazar estos principios, las organizaciones pueden construir y mantener sistemas tecnológicos robustos, capaces de enfrentar los desafíos del panorama digital actual.

La ingeniería del caos es medicina preventiva.

Chaos Engineering es un enfoque disciplinado para identificar fallas antes de que se conviertan en interrupciones. Al probar proactivamente cómo responde un sistema bajo estrés, puede identificar y corregir fallas antes de que terminen en las noticias.

Chaos Engineering te permite comparar lo que crees que sucederá con lo que realmente sucede en tus sistemas. Literalmente, "rompe cosas a propósito" para aprender a construir sistemas más resistentes.

Los principales beneficios de Chaos Engineering son:

  • Cliente: la mayor disponibilidad y durabilidad del servicio significa que ninguna interrupción interrumpe su vida diaria.
  • Negocios: Chaos Engineering puede ayudar a prevenir pérdidas extremadamente grandes en ingresos y costes de mantenimiento, crear ingenieros más felices y comprometidos, mejorar la capacitación de guardia para los equipos de ingeniería y mejorar el Programa de administración de SEV (incidentes) para toda la empresa.
  • Técnico: los conocimientos de los experimentos de caos pueden significar una reducción de incidentes, reducción de la carga de guardia, mayor comprensión de los modos de falla del sistema, diseño mejorado del sistema, tiempo medio más rápido para la detección de SEV y reducción de SEV repetidos.

Muchas empresas de tecnología más grandes practican la Ingeniería del Caos para comprender mejor sus sistemas distribuidos y arquitecturas de microservicios. La lista incluye Netflix, LinkedIn, Facebook, Google, Microsoft, Amazon y muchos otros. La lista siempre está creciendo.

Por ejemplo, para llevar a cabo estas pruebas en la práctica, Netflix se basa en el software Simian Army (ahora Chaos Monkey) Esta suite de errores simula una situación en la que los monos utilizan el software y provocan diversos errores sobre la nube. Varias herramientas de prueba tienen nombres correspondientes.

Se puede hacer una revisión de algunas de las herramientas y frameworks más extendidos para la ingeniería del caos, viendo para cada uno de ellos sus principales cualidades y los casos de uso donde mejor encajan.

Fuentes:

Suscríbete a nuestro Boletín

0 Comments:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!