Inicio Topics qué es la ingeniería del caos ¿Qué es la ingeniería del caos?
Explore IBM Instana
Un gráfico que representa una cadena de 1s y 0s

La ingeniería del caos es la provocación intencionada y controlada de fallos en el entorno de producción o preproducción, para comprender su impacto y planificar una mejor postura de defensa y estrategia de mantenimiento ante incidentes.

Cada día se crea una nueva oportunidad para que la aplicación crucial o la infraestructura de una organización falle, amenazando potencialmente su capacidad para prestar servicios a los clientes. Las causas del fallo pueden variar entre varios problemas, como violaciones de seguridad, errores de configuración o interrupciones del servicio. La probabilidad de errores o interrupciones puede aumentar al alojarse más aplicaciones y datos en la nube, lo que puede generar un aumento de los problemas de seguridad.

Una forma de abordar las interrupciones es la ingeniería del caos. No es un proceso aleatorio en el que los ingenieros finalicen instancias o servicios, o en el que provoquen que los sistemas fallen sin ningún propósito. Este proceso identifica posibles problemas futuros, permitiendo a los equipos de ingeniería solucionarlos proactivamente y evitarlos en el entorno real más adelante. 

La ingeniería del caos es importante porque un error o una interrupción pueden ralentizar el impulso de una organización, gastando un tiempo precioso en encontrar una solución sobre la marcha a medida que aumenta el tiempo de inactividad. Netflix aprendió esto de primera mano cuando pasó de alojarse en las instalaciones a la nube(enlace externo a ibm.com); experimentaron un apagón que llevó a una interrupción de tres días en la prestación del servicio en 2008. Esto precede a su transformación en operación de video streaming, pero, de no haber sido así, el apagón habría resultado exponencialmente más caro. Como resultado, Netflix decidió que haría todo lo posible para minimizar las interrupciones y comenzó a introducir la ingeniería del caos en sus flujos de trabajo. Esto les permite identificar problemas antes de que ocurran y minimizar el daño si se produce un fallo inevitable.

Netflix creó Chaos Monkey2(enlace externo a ibm.com), una herramienta de código abierto que crea incidentes aleatorios en servicios de TI y en infraestructura, destinados a identificar debilidades que pueden arreglarse o abordarse a través de procedimientos de recuperación automática, cuando se movió de un centro de datos privado a Amazon Web Services (AWS) en respuesta a la falta de fiabilidad de la nube. Muchas organizaciones usan ahora Chaos Monkey para ejecutar sus experimentos de ingeniería del caos. 

La ingeniería del caos es una defensa importante contra fallos de infraestructura, interrupciones o falta de componentes en el entorno de producción de una organización. Ayuda a los ingenieros de fiabilidad del sitio(los SRE, por sus siglas en inglés) y a otros miembros del equipo de DevOps a proporcionar una distribución de servicios continua, al evitar interrupciones significativas para su servicio, comprendiendo mejor sus vulnerabilidades y sabiendo cómo minimizar el impacto si ocurre una interrupción.

Incluso un problema pequeño en el código puede tener un efecto catastrófico en el entorno de producción general, dadas las diferentes dependencias del programa. Por ejemplo, un error en el sistema de software de transacciones para una empresa de servicios financieros puede provocar la pérdida de millones de dólares(enlace externo a ibm.com). Es posible que las organizaciones no puedan evitar todos los incidentes de TI, pero pueden minimizar los daños utilizando la gestión del caos para comprender los escenarios probables y sus mejores soluciones posibles. 

Descubra más

IBM Instana Observability ofrece a todos los trabajadores de la empresa acceso fácil a los datos que desean con el contexto que necesitan para prevenir y corregir los problemas rápidamente.

Contenido relacionado

Suscríbase al boletín de IBM

Organizaciones que se benefician la ingeniería del caos

Las organizaciones con alta resiliencia, madurez digital y alta observabilidad a través de paneles de control y otras herramientas deberían adoptar la ingeniería del caos, ya que pueden tomar medidas inmediatas sobre los problemas que ocurran a través de experimentos. Las organizaciones que carecen de esta observabilidad4 (enlace externo a ibm.com) pueden tardar demasiado en resolver los experimentos que creen a través de la ingeniería del caos.

La ingeniería de caos también es imprescindible para las organizaciones que utilizan la nube, especialmente la nube pública y las aplicaciones nativas de la nube. La nube pública introduce posibles problemas de apagón que requieren coordinación con el proveedor de servicios en la nube, lo que crea un enfoque diferente al de los problemas en las instalaciones. 

Las empresas que utilizan la nube siguen abordando los incidentes de TI sin tener en cuenta cómo afectan la nube y el software como servicio (SaaS) a esos incidentes de forma diferente, según Constellation Research5.(enlace externo a ibm.com) 

Además, el aumento del uso de microservicios, que aumenta el número de hosts o contenedores que se ejecutan en un sistema, crea desafíos únicos (enlace externo a ibm.com) que pueden sacarse a la luz y resolverse a través de experimentos de caos. Cambia las complejidades del diseño de código a las operaciones del sistema, lo que no elimina las complejidades pero permite una mayor automatización.

La ingeniería del caos también puede ayudar a las organizaciones a mejorar la velocidad de sus canales de integración continua y entrega continua (CI/CD). Incorporar la ingeniería del caos en los CI/CD, como hizo Netflix(enlace externo a ibm.com), permite a las organizaciones automatizar experimentos continuos mientras controlan su impacto potencial. 

Por último, el hecho de que las organizaciones se conecten cada vez más con los socios a través de las API significa que un problema en sus sistemas puede tener un efecto colateral en otras organizaciones.

Implementar la ingeniería del caos ayuda a las organizaciones a comprender los puntos débiles de su arquitectura y a corregirlos, creando en última instancia la capacidad de anticipar futuros fallos. La ingeniería del caos exitosa ayuda a las organizaciones a minimizar los fallos técnicos con cualquier impacto significativo en el cliente, y también apoya la construcción de arquitecturas de sistemas complejas más fuertes y resilientes. Una vez que una organización decide dedicarse a la ingeniería del caos, el próximo paso es determinar si ejecutarla en el entorno de preproducción o de producción.

Tipos de experimentos de ingeniería del caos

Los equipos de DevOps tienen varias opciones para ejecutar experimentos de ingeniería del caos para probar varios procesos del sistema.

  • Inyección de latencia: los equipos de DevOps crean de forma intencionada escenarios que emulan una conexión de red lenta o fallida. Esto incluye la introducción de retrasos en la red o tiempos de respuesta más lentos.
  • Inyección de fallos: esto implica introducir deliberadamente errores en el sistema para determinar cómo afecta a otros sistemas dependientes y si interrumpe los servicios. Algunos ejemplos de inyección de fallos son la inducción de fallos de disco, la finalización de procesos, el apagado de un host o la introducción de aumentos de potencia o temperatura. Las inyecciones de fallos pueden ayudar a las organizaciones a identificar cualquier punto único de fallo, lo que puede provocar que todo el sistema falle si algo les sucede.
  • Generación de carga: se refiere a estresar intencionalmente el sistema al enviar niveles de tráfico significativos que superan con creces las operaciones normales. Esto ayuda a los ingenieros de fiabilidad del sitio (SRE) a comprender los cuellos de botella del sistema, lo que a su vez les permite crear sistemas más escalables. 
  • Pruebas de Canary: implica lanzar un nuevo producto o característica a un grupo pequeño de usuarios. De esa manera, cualquier fallo o error sólo afectará a un porcentaje de los visitantes, dejando que el resto del público acceda a la experiencia del sitio web existente.

 

Buenas prácticas de ingeniería del caos 

Crear el proceso de ingeniería del caos ideal requiere varios principios para garantizar que una organización pueda tener un sistema distribuido a escala. 

  • Comprender el sistema: esto implica un conocimiento exhaustivo del sistema holístico, sus propiedades y funciones emergentes y su topología, arquitectura, dependencias, comportamiento en estado estacionario, respuesta de salida y características como la disponibilidad, la latencia y el rendimiento.
  • Aceptar el fracaso: al principio parece paradójico que los ingenieros de software permitan que se produzca un incidente cuando están conectados para evitar que ocurra. Sin embargo, las interrupciones siempre se van a producir en los servicios de TI y es mejor experimentarlas en un entorno controlado para identificar la solución de forma preventiva en lugar de hacerlo fuera del horario laboral, cuando el equipo de una organización no trabaja o no ha encontrado ese problema específico antes.
  • Establecer un comportamiento en estado estacionario: en primer lugar, el equipo de ingeniería debe definir cómo debe comportarse el sistema cuando se ejecuta correctamente, de modo que pueda comparar cómo afectan los experimentos a ese estado estacionario.
  • Identificar incidentes del mundo real: los experimentos de ingeniería del caos deben acercarse lo más posible a lo que podría suceder en un día normal en lugar de crear situaciones improbables. Los fallos de red e infraestructura, el código incorrecto, los problemas de alimentación y la sobrecarga de tráfico son incidentes potenciales.
  • Crear un game day: la ingeniería del caos puede estudiar el entorno en un game day, día en el que se produzcan múltiples pruebas durante un día específico, para maximizar sus recursos para identificar y resolver tantos problemas como sea posible. 
  • Utilizar la automatización: las organizaciones de todos los tamaños pueden utilizar la ingeniería del caos automatizando los experimentos, que requerirían demasiada mano de obra si las empresas los realizaran manualmente. Esto reduce parte de la carga de los equipos de TI durante el proceso de ingeniería del caos. El diseño de experimentos, la inyección de errores y el aprovisionamiento de infraestructura son aspectos de la experimentación que las organizaciones pueden automatizar
  • Tener en cuenta el alcance de la explosión: un ingeniero del caos debe esforzarse mucho en minimizar el alcance de la explosión para que el daño real a los clientes sea el menor posible. Algunas formas de minimizar el alcance de la explosión son:
    • Dirigir un subconjunto de servicios: La ingeniería del caos, especialmente en un entorno de producción, no debería interrumpir fundamentalmente el servicio de una organización. Centrarse en un subconjunto específico de servicios puede minimizar el impacto de un incidente en caso de que se produzca, garantizando que no derribe todo el sistema.
    • Ejecutar el experimento durante un tiempo finito: el experimento debe tener un principio y un final. El objetivo del experimento es crear un incidente y resolverlo en lugar de dejarlo ejecutarse sin control durante mucho tiempo.
    • Ejecutar el experimento lejos de los máximos de tráfico: las organizaciones deben intentar evitar ejecutar experimentos durante las horas punta, a menos que estén intentando evaluar específicamente cómo afecta la alta capacidad al sistema durante un incidente. 
    • Ejecutar el experimento en el entorno de desarrollo: la forma más fácil de garantizar que no haya ninguna interrupción de la experiencia del cliente en el servicio es ejecutarlo en el entorno de preproducción. Sin embargo, eso significa que las condiciones diferirán de las del entorno de producción, lo que podría dar una imagen falsa de lo que está ocurriendo. Para minimizar esto, asegúrese de que sus entornos de preproducción y producción se reflejen entre sí en la medida de lo posible. 
    • Experimentar en cada componente: la experimentación del caos nunca termina, ya que el sistema de una organización cambia continuamente. Un objetivo también debe ser probar "todo"; examinar todos los componentes, capas, servicios, y sus dependencias durante todo el proceso.
Entornos de producción frente a entornos de preproducción

Las organizaciones que utilizan la ingeniería del caos deben decidir si utilizar las pruebas del caos en sus entornos de producción o de preproducción. Hay varias razones por las que la ingeniería del caos es más beneficiosa en entornos de producción. Los entornos en vivo proporcionan el entorno más preciso para comprender cómo afecta un incidente a la experiencia del cliente. Otra razón es que el entorno de preproducción puede no tener la misma configuración que el entorno real, lo que introduce cierta variabilidad en los experimentos.

Por ejemplo, un incidente en un entorno de preproducción podría no crear una respuesta realista porque carece de los mismos niveles de tráfico que el entorno en vivo. También es posible que no tenga las mismas configuraciones de seguridad que ese entorno. 

Algunas organizaciones temen causar problemas intencionalmente con su sitio activo, por lo que ejecutan sus experimentos en su sitio de preproducción o de desarrollo. Esto garantiza que cualquier problema que se produzca no afecte a la experiencia del cliente en vivo. Para mitigar esto, algunas organizaciones comienzan en entornos de preproducción para controlar el proceso antes de pasar al entorno de producción en vivo.

Las organizaciones elegirán qué entorno utilizar en función de su tolerancia al riesgo. En última instancia, la ingeniería del caos tiene como objetivo probar los problemas reales a gran escala, por lo que los entornos de producción proporcionarán la imagen más precisa de lo que sucede y lo que requiere solución. 

Beneficios de la ingeniería del caos

La ingeniería del caos ofrece a las organizaciones varios beneficios clave.

Mejor servicio de atención al cliente

Los clientes tienen grandes expectativas sobre la disponibilidad de los servicios que compran a las empresas. Cualquier tiempo de inactividad o incapacidad para acceder a lo que han pagado puede tener un efecto grave en la satisfacción del cliente, lo que genera pérdidas de ingresos y daños a la reputación. Probar los sistemas e identificar soluciones significa que hay menos riesgo de que un sistema deje de funcionar durante un periodo de tiempo significativo.

 

Mayor seguridad de datos

Las interrupciones pueden provenir de código incorrecto, problemas de servidor o amenazas externas. Esto último puede ocurrir incluso con excelentes prácticas de seguridad. La ingeniería del caos ayuda a identificar los problemas que se pueden aprovechar, para que las organizaciones puedan introducir parches y correcciones de errores (enlace externo a ibm.com) para mantener sus servicios seguros. 

Tiempo de inactividad minimizado

La ingeniería del caos permite a las organizaciones crear un plan más informado sobre cómo abordar los problemas que se plantearán en el futuro. Las organizaciones que adopten la ingeniería del caos tendrán estrategias específicas para muchos incidentes, lo que permitirá una reparación más rápida y menos tiempo de inactividad. La ingeniería del caos puede reducir el tiempo de inactividad7 (enlace externo a ibm.com) hasta en un 20 %. 

 

Escalabilidad aumentada

Los experimentos de ingeniería del caos identifican cómo asigna un sistema los recursos. La introducción de experimentos demostrará cómo el sistema gestiona las cargas, mostrando dónde se producen o es probable que se produzcan cuellos de botella.

 

Informar el desarrollo futuro de software

La ingeniería del caos ayuda a los equipos a desarrollar una mayor resiliencia y flexibilidad del sistema en su software. Por lo tanto, las organizaciones pueden abordar la codificación de nuevos software y soluciones de forma más inteligente porque saben cómo gestiona el sistema actual los problemas.

Explorar los productos de ingeniería del caos
Observabilidad IBM Instana APM

Obtenga el contexto que necesita para resolver incidentes más rápido con la solución de observabilidad de IBM.

Explore IBM Instana

Observabilidad Flexera One with IBM Observability

Optimice el uso y el coste del software

 

Explorar Flexera One with IBM Observability

Recursos de ingeniería de caos ¿Qué es la AIOps?

Descubra cómo la inteligencia artificial para operaciones de TI (AIOps) utiliza los datos y el aprendizaje automático para mejorar y automatizar la gestión de los servicios de TI

¿Qué es la gestión del rendimiento de las aplicaciones?

Prediga y evite problemas de rendimiento antes de que afecten a su negocio con la gestión del rendimiento de las aplicaciones

¿Qué son las operaciones de TI?

Las operaciones de TI y AIOps supervisan y automatizan la gestión, la entrega y el soporte de los servicios de TI en toda la organización

¿Qué es la gestión de servicios de TI?

La gestión de servicios de TI (ITSM) es la forma en que una organización garantiza que sus servicios de TI funcionen como los usuarios y la empresa necesitan que funcionen

¿Qué es la ingeniería de fiabilidad del sitio?

Automatice las tareas de operaciones de TI, acelere la entrega de software y minimice el riesgo de TI con la ingeniería de fiabilidad del sitio

¿Qué es la automatización inteligente?

La automatización inteligente combina tecnologías de IA y de automatización, lo que permite la automatización de tareas de bajo nivel dentro de su negocio

Dé el siguiente paso

IBM Instana proporciona observabilidad en tiempo real que todos pueden utilizar. Proporciona un tiempo de obtención de valor rápido a la vez que verifica que su estrategia de observabilidad pueda seguir el ritmo de la complejidad dinámica de los entornos actuales y futuros. Desde dispositivos móviles hasta mainframe, Instana es compatible con más de 250 tecnologías y sigue creciendo. 

Explore IBM Instana Reserve una demostración en directo
Notas a pie de página

1 Ingeniería del caos: resiliencia del sistema en la práctica, (enlace externo a ibm.com) Casey Rosenthal, Nora Jones, 2020
What is Chaos Monkey? Chaos engineering explained, (enlace externo a ibm.com) InfoWorld, 13 de mayo de 2020
Knight Capital Says Trading Glitch Cost It $440 Million, (enlace externo a ibm.com) New York Times, 2012
4 There Is No Resilience without Chaos, The New Stack, (enlace externo a ibm.com) 13 de abril de 2023 
5 Incident Management in the Cloud Era, (enlace externo a ibm.com) Constellation Research, 2023
6 ChAP: Chaos Automation Platform, (enlace externo a ibm.com) Netflix Blog, 26 de julio de 2017
7 The I&O Leader’s Guide to Chaos Engineering, (enlace externo a ibm.com) Gartner, 28 de octubre de 2021