Ingeniería de caosIngeniería de caos

Hola a todos!

El pasado 18 de julio hablamos de Azure Chaos Studio, una herramienta más que útil de Azure para asegurar nuestra infraestructura.

Esto se vió en este artículo:

Pero como es lógico, no podíamos dejarlo ahí, y decidimos hablar un poco de que es eso la ingeniería del caos.

¿Qué es la Ingeniería del Caos?

La ingeniería del caos es una disciplina que consiste en introducir fallos de manera controlada en nuestros sistemas y aplicativos para observar cómo reaccionan, si se caen, si se sobreponen, etc. con el objetivo de identificar las debilidades antes de que se conviertan en problemas reales, problemas de seguridad, etc.​

Supongamos que estamos probando un coche en un circuito de pruebas para ver cómo se comporta ante diferentes situaciones como la lluvia, la nieve, el granizo, el aceite, las frenadas bruscas, las curvas cerradas, los terrenos irregulares, la gravilla, etc.

Todas estas pruebas van a revertir en que el coche sea mejorado, se le pongan distintas medidas de seguridad, etc. La idea de la ingeniería del caos es similar aplicada a los sistemas informáticos, y en el caso que nos ocupa se habla de Azure.

Pero… ¿Por qué es Importante?

¿En serio no lo ves? jejeje. La disponibilidad y la fiabilidad de los servicios son cruciales para la supervivencia de la organización. ​

Muchas empresas, como Netflix, tras su fallo de 2008 han planteado una nueva estrategia de diseño de su infraestructura, implementando distintas prácticas para anticiparse a los distintos problemas que puedan darse y minimizar el impacto de dichos fallos.

¿En que consiste?

Se basa en realizar experimentos de simulación de condiciones adversas, como por ejemplo:​

  • Simular una sobrecarga o una red lenta para ver cómo afecta al rendimiento del sistema.​
  • Provocar errores en los distintos componentes específicos para observar como se comporta el sistema.​
  • Aumentar el tráfico para identificar los cuellos de botella de la infraestructura.​
  • Desplegar cambios a un pequeño grupo de usuarios antes de hacerlo a toda la base, cosa que nos suena de System Center ya que aquí somos muy fans.​

Estas pruebas deben realizarse en entornos controlados y con un alcance limitado para evitar afectar a los usuarios finales.

¿Qué beneficios nos da esto?

Implementar la ingeniería del caos, siempre que lo hagamos bien, nos ofrece ventajas como las siguientes:

  • Mejora de la Resiliencia ya que se identifican y corrigen las debilidades.​
  • Reducción del Tiempo de Inactividad ya que nos anticipamos a los problemas y podremos resolverlos más rápidamente.​
  • Mejoramos la experiencia de usuario ya que nuestros servicios están siempre disponibles y funcionan correctamente.​
  • Cultura de Mejora Continua que fomenta una mentalidad proactiva en los equipos de desarrollo y operaciones.

¿Mejores prácticas?

Para implementar la ingeniería del caos de manera efectiva debemos seguir algunas recomendaciones, o lo que ahora se llama «mejores prácticas»:

  • Conocer bien la arquitectura y las dependencias.​
  • Establecer métricas que indiquen el funcionamiento del sistema.​
  • Realizar pruebas en componentes específicos y en momentos de baja actividad.​
  • Integrar los experimentos en las pipelines de CI/CD.​
  • Recoger datos y aprender de cada experimento.

A alguien le suena esto a…. sentido común?

Seguiremos hablando de Caos y alguna cosa mas jejeje

Espero que os resulte útil.

Un saludo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Related Post