Descripción de la ingeniería y la resistencia del caos

Antes de empezar a usar Azure Chaos Studio, resulta útil comprender los conceptos básicos de ingeniería de confiabilidad de sitios que se aplican.

¿Qué es la resistencia?

Nunca ha sido más fácil crear aplicaciones distribuidas a gran escala. La infraestructura se hospeda en la nube y la compatibilidad con lenguajes de programación es diversa. También hay muchos componentes y servicios hospedados y de código abierto para compilar.

Desafortunadamente, no hay ninguna garantía de confiabilidad para estos componentes y dependencias subyacentes, o para los sistemas basados en ellos. La infraestructura puede dejarse sin conexión y las interrupciones o interrupciones del servicio pueden producirse en cualquier momento. Las interrupciones menores de un área se pueden ampliar y tienen efectos secundarios de larga duración en otra.

Las aplicaciones y los servicios deben planear y dar cabida a problemas como:

  • Interrupciones del servicio.
  • Interrupciones en dependencias conocidas y desconocidas.
  • Carga inesperada repentina.
  • Latencias en todo el sistema.

Las aplicaciones y los servicios deben diseñarse para controlar los errores y protegerse frente a interrupciones.

Las aplicaciones y servicios que gestionan correctamente los problemas son resistentes. La confiabilidad de componentes individuales es buena, pero la resistencia es una propiedad de todo el sistema. La resistencia del sistema de un extremo a otro debe validarse en un entorno integrado similar a producción con las condiciones y la carga que se enfrenta en producción.

¿Qué son la ingeniería del caos y la inyección de errores?

  • Ingeniería de caos: la práctica de someter aplicaciones y servicios al estrés y los errores reales. El objetivo es crear y validar la resistencia a condiciones no confiables y dependencias que faltan.
  • Inyección de errores: el acto de introducir un error en un sistema. Puede usar errores diferentes, como la latencia de red o la pérdida de acceso al almacenamiento, para dirigir los componentes del sistema. Puede crear escenarios de los que una aplicación o un servicio deben poder controlar o recuperar.

Un experimento de caos es la aplicación de errores individualmente, en paralelo o secuencialmente en uno o varios recursos o dependencias de suscripción. El objetivo es supervisar el comportamiento y el estado del sistema para que pueda actuar en los problemas que surjan.

Un experimento puede representar un escenario real, como una interrupción de energía del centro de datos o una latencia de red en un servidor DNS. También se puede usar para simular condiciones perimetrales que se producen. Algunos ejemplos son las compras de Black Friday o cuando las entradas de conciertos salen a la venta para una banda popular.