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 se trata de un proceso aleatorio en el que los ingenieros dan de baja instancias o servicios o provocan fallos en los sistemas sin ningún propósito. Este proceso identifica posibles problemas futuros, lo que permite a los equipos de ingeniería resolver problemas de forma proactiva 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ó este concepto de primera mano cuando pasó de entornos locales a la nube1 : experimentaron una interrupción que llevó a una interrupción de tres días en la prestación del servicio en 2008.
Esta interrupción es anterior a su transformación como operación de streaming de vídeo, lo que habría hecho que esa interrupción fuera exponencialmente más costosa. 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. Este proceso les permite identificar los problemas antes de que se produzcan y minimizar los daños en caso de que se produzca un fallo inevitable.
Netflix creó Chaos Monkey2, una herramienta de código abierto que crea incidentes aleatorios en los servicios e infraestructuras de TI con el objetivo de identificar los puntos débiles que pueden corregirse o abordarse mediante procedimientos de recuperación automática. Implementaron Chaos Monkey 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 ahora usan Chaos Monkey para ejecutar sus experimentos de ingeniería del caos.
La ingeniería del caos es una defensa importante contra los fallos de infraestructura, las interrupciones o la falta de componentes en el entorno de producción de una organización. Ayuda a los ingenieros de fiabilidad del sitio (SRE) y a otros miembros del equipo DevOps a proporcionar una entrega continua de servicios evitando interrupciones significativas en su servicio. La ingeniería del caos les ayuda a comprender mejor sus vulnerabilidades e informa sobre cómo minimizar el impacto si se produce 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 de una empresa de servicios financieros puede resultar en la pérdida de millones de dólares.3 .
Es posible que las organizaciones no puedan evitar todos los incidentes informáticos, pero pueden minimizar los daños recurriendo a la gestión del caos para comprender los escenarios probables y sus mejores soluciones.
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 pueden tardar demasiado en resolver los experimentos que crean mediante la ingeniería del caos.
La ingeniería del caos también es imprescindible para las organizaciones que utilizan la nube, en particular 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 entornos locales.
Las empresas que utilizan la nube siguen a menudo abordando los incidentes de TI sin tener en cuenta cómo la nube y el software como servicio (SaaS) afectan de manera diferente a esos incidentes, según Constellation Research5.
Además, el auge del uso de microservicios, que aumenta el número de hosts o contenedores que se ejecutan en un sistema, crea retos únicos que pueden descubrirse y resolverse mediante 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 canalizaciones de integración continua y entrega continua (CI/CD). La incorporación de la ingeniería del caos en CI/CD como hizo Netflix6 permite a las organizaciones automatizar experimentos continuos mientras controlan su impacto potencial.
Por último, el hecho de que las organizaciones conecten cada vez más con sus socios a través de las API significa que un problema en sus sistemas puede tener un impacto en cadena 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.
Los equipos de DevOps tienen varias opciones para ejecutar experimentos de ingeniería del caos para probar varios procesos del sistema.
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.
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 configuración exacta que el entorno en vivo, 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 eligen qué entorno utilizar en función de su tolerancia al riesgo. En última instancia, el objetivo de la ingeniería del caos es probar problemas reales a gran escala, por lo que los entornos de producción ofrecen la imagen más precisa de lo que ocurre y de lo que hay que arreglar.
La ingeniería del caos ofrece a las organizaciones varios beneficios clave.
Los clientes tienen grandes expectativas sobre la disponibilidad de los servicios que compran a las empresas. Cualquier tiempo de inactividad o imposibilidad de acceder a aquello por lo que se ha pagado puede afectar gravemente a la satisfacción de los clientes, con la consiguiente pérdida de ingresos y de reputación. Probar los sistemas e identificar soluciones implica que existe menos riesgo de que un sistema esté fuera de servicio durante un largo período de tiempo.
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 explotar, de modo que las organizaciones puedan introducir parches y correcciones de errores para mantener la seguridad de sus servicios.
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 hasta en un 20 %.
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.
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.
Lea lo que piensan los CEO sobre la sostenibilidad en sus propias palabras y cómo la están incorporando a su negocio.
Descubra siete tendencias empresariales que los expertos prevén que darán forma al mundo en los próximos tres años, y siete apuestas que merece la pena hacer para obtener beneficio de ellas.
Descubra cómo Climate Service integró los datos climáticos en las decisiones financieras gracias a la tecnología de IBM.
Vea cómo el uso de la metodología de IBM Garage ayudó a Kraft Heinz Company a mejorar la velocidad de los productos.
Reinvente la forma de hacer el trabajo combinando la transformación empresarial y tecnológica para desbloquear la agilidad de la empresa.
Reimagine y modernice los RR. HH. con la IA en el centro para obtener mejores resultados empresariales y liberar todo el potencial de los empleados.
Desbloquee el rendimiento financiero y el valor empresarial con servicios integrales que incorporan análisis de datos, inteligencia artificial y automatización en todos los procesos centrales.
1 Chaos Engineering: System Resiliency in Practice (enlace externo a ibm.com). Casey Rosenthal, Nora Jones. 2020.
2 What is Chaos Monkey? Chaos engineering explained (enlace externo a ibm.com). InfoWorld. 13 de mayo de 2020.
3 Knight Capital Says Trading Glitch Cost It USD 440 Million (enlace externo a ibm.com). New York Times. 2012.
4 There Is No Resilience without Chaos (enlace externo a ibm.com). The New Stack. 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) Blog de Netflix. 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.