Qué es la Ingeniería del Caos y por qué es importante

Para sistemas complejos, la pregunta de las fallas en los componentes no es si sucederán, sino cuándo. Si bien es importante probar los componentes de forma individual y fortalecerlos contra fallas, esto no proporciona una imagen completa de cómo reaccionan los demás componentes cuando un componente único falla.

En la Ingeniería del Caos, la metodología de prueba desarrollada por Netflix, se prueban las interrelaciones entre los componentes de un sistema mediante la simulación de fallas en los componentes y el estudio de los efectos en cascada que ocurren en todo el sistema.

Índice de Contenido
  1. ¿Qué es la Ingeniería del Caos?
  2. ¿Cuándo se desarrolló la Ingeniería del Caos?
  3. ¿Por qué importa la Ingeniería del Caos?
  4. ¿Cómo puedo implementar la Ingeniería del Caos en mi organización?
  5. ¿Qué herramientas puedo usar para comenzar con la Ingeniería del Caos?
  6. ¿Quiénes utilizan la Ingeniería del Caos y por qué algunas personas la consideran arriesgada?

¿Qué es la Ingeniería del Caos?

La Ingeniería del Caos es el principio de encontrar debilidades en los sistemas distribuidos mediante la prueba de escenarios de interrupción del mundo real en los sistemas de producción, o lo más cerca posible de producción. En un sentido más abstracto, la Ingeniería del Caos es una estrategia para aprender cómo se comporta su sistema mediante la realización de experimentos para probar una reacción.

La Ingeniería del Caos va más allá de la inyección de fallos, como la introducción de latencia o errores. Si bien la inyección de fallos es un componente importante al realizar experimentos, se limita a probar una condición. La Ingeniería del Caos se puede utilizar para otras situaciones, como picos de tráfico grandes, fallas bizantinas, condiciones de carrera y otras circunstancias impredecibles, que podrían provocar interrupciones del servicio. El objetivo de la Ingeniería del Caos es generar nueva información sobre cómo los sistemas en su conjunto reaccionan cuando los componentes individuales fallan.

¿Cuándo se desarrolló la Ingeniería del Caos?

Las ideas que dieron forma a la Ingeniería del Caos se desarrollaron en Netflix cuando el servicio de streaming por suscripción comenzó a transicionar de sus propios centros de datos a la nube pública en 2008. A medida que los ingenieros de Netflix se iban acostumbrando a las diferencias presentes en las arquitecturas de la nube, identificaron la necesidad de crear servicios con mayor resiliencia.

En ese esfuerzo, se creó Chaos Monkey, una herramienta automatizada de pruebas de caos que desactiva aleatoriamente las instancias de máquinas virtuales en producción. Chaos Monkey se lanzó como software de código abierto en 2012. Según el ex vicepresidente de Ingeniería de Productos en Netflix, John Ciancutti, la razón detrás de Chaos Monkey es que "si no probamos constantemente nuestra capacidad para tener éxito a pesar de las fallas, es poco probable que funcione cuando más importe, en caso de un corte inesperado".

¿Por qué importa la Ingeniería del Caos?

La Ingeniería del Caos es útil para identificar si la falla de servicios individuales en un sistema puede fallar de forma elegante sin dejar inoperable todo el sistema para el usuario. Dado que las circunstancias que causan la falla del sistema no se pueden eliminar por completo, el plan de acción más útil es garantizar que un sistema dado sea lo más resistente posible. Para hacerlo, es necesario llevar a cabo experimentos de ingeniería que prueben la resiliencia de su sistema.

Los principios de la Ingeniería del Caos también se pueden aplicar en otros aspectos del desarrollo y las operaciones. Considere el concepto de "análisis de canario": cuando se implementa nuevo código, se puede medir el rendimiento en un número limitado de sistemas antes de implementarlo de manera más amplia. En efecto, el análisis de canario es una verificación de cordura aplicada a implementaciones de software, con el beneficio del registro de rendimiento. Si su estado estable predeterminado no fluctúa innecesariamente, se puede implementar de manera amplia. Si la implementación de canario excede su "presupuesto de errores" predeterminado, se retira para su posterior refinamiento con el fin de proteger la integridad del servicio.

¿Cómo puedo implementar la Ingeniería del Caos en mi organización?

A nivel conceptual básico, hay cuatro pasos para implementar la Ingeniería del Caos en su organización.

Identificar una salida mensurable que indique el comportamiento, definir un "estado estable"

En teoría de sistemas, se alcanza un "estado estable" si las variables que definen el comportamiento de un sistema no cambian con el tiempo. De manera más sencilla para este propósito, el "estado estable" se alcanza si el comportamiento observado recientemente continúa en el futuro. La variable necesaria en este caso es un indicador positivo en tiempo real de que el servicio está funcionando según lo diseñado para el propósito previsto. En el caso de Netflix, la compañía utiliza la tasa a la que los clientes presionan el botón de reproducción en un dispositivo de transmisión de video como estado estable. Netflix llama a esto "flujos por segundo".

Es importante tener en cuenta que el estado estable no es necesariamente continuo. En este caso, los usuarios generalmente no utilizan el servicio de forma continua; como ejemplo, es más probable que los suscriptores utilicen el servicio por la noche que por la mañana. El patrón de uso a lo largo del día en este caso es el estado estable, no necesariamente de segundo a segundo.

Para fines de la Ingeniería del Caos, una métrica empresarial es una medida más útil en términos funcionales que una métrica del sistema. Si bien muchos marcos existentes facilitan a los desarrolladores observar los estados del sistema, como la utilización de la CPU, el uso de una métrica empresarial brinda una visión más profunda de la salud del sistema.

Formular una hipótesis

Para cualquier experimento, se requiere una hipótesis verificable para determinar si el experimento fue exitoso o no. Esto ayuda a realizar conclusiones al realizar experimentos de caos. Dado que el propósito de la Ingeniería del Caos es garantizar la confiabilidad o la degradación elegante de los sistemas, la hipótesis para sus pruebas debe parecerse a la afirmación "los eventos que inyectaremos en el sistema no cambiarán el estado estable".

Si hay alguna razón para creer que un experimento cambiará el estado estable o de lo contrario romperá las cosas en el entorno de producción, no realice el experimento. Primero debe trabajar para fortalecer la confiabilidad de su sistema antes de intentar romperlo.

Simular eventos del mundo real

Probar eventos que pueden provocar una pérdida de disponibilidad, desde lo más probable hasta lo imposible, es importante para desarrollar una comprensión de la resistencia de su sistema. Probar la falla de hardware, errores de transmisión de estado, sobrecarga de recursos, latencia y fallas de la red, errores funcionales, fluctuaciones significativas en la entrada, tormentas de reintentos, condiciones de carrera, fallas de dependencia, fallas bizantinas y combinaciones inusuales o impredecibles de comunicación entre servicios puede aumentar la confianza en la confiabilidad de su sistema.

Refutar su hipótesis

¿Durante el tiempo en que se ejecutó su experimento, hubo alguna diferencia en el estado estable entre el grupo experimental y el grupo de control? Utilizar el registro y las métricas para ver si ocurrieron efectos adversos como resultado de la prueba es clave para identificar problemas estructurales en su sistema.

Además, cuanto más difícil sea desviarse del estado estable, mayor confianza se puede depositar en el diseño de su sistema.

¿Qué herramientas puedo usar para comenzar con la Ingeniería del Caos?

Existen una variedad de herramientas de código abierto para ayudar en la práctica de la Ingeniería del Caos en su organización. El más destacado de ellos es Simian Army, que fue desarrollado por Netflix para probar la confiabilidad y seguridad de AWS. Simian Army incluye Chaos Monkey, que se puede utilizar para encontrar servicios en producción y deshabilitarlos aleatoriamente, así como Chaos Gorilla, que deshabilita toda una zona de disponibilidad. Finalmente, Chaos Kong deshabilita una región completa de AWS.

Otras herramientas incluyen Pumba, Blockade y Tugbot, tres opciones para la prueba de caos en Docker, Chaos Dingo para Microsoft Azure, Monkey-Ops para OpenShift, Chaos Lemur para entornos gestionados por BOSH, así como Chaos HTTP Proxy para introducir fallas en las solicitudes HTTP a través de un servidor proxy y Chaos Lambda, que termina aleatoriamente los grupos de escalado automático en AWS.

Para implementaciones efectivas de Ingeniería del Caos, es necesario automatizar las pruebas. Dado que los escenarios del mundo real que resultan en tiempo de inactividad a menudo son el resultado de circunstancias inesperadas, simular el tiempo de inactividad en circunstancias inesperadas similares es necesario para medir una respuesta genuina de su entorno operativo. Para facilitar la automatización, Netflix desarrolló ChAP, la Plataforma de Automatización del Caos, con este propósito. Al igual que el análisis de canarios, ChAP está diseñado para finalizar los experimentos si los resultados superan un "presupuesto de errores" predefinido en un esfuerzo por prevenir daños catastróficos durante un experimento.

La Comunidad del Caos proporciona recursos adicionales, incluidos grupos de discusión en Google Groups y LinkedIn, así como grupos de reuniones para el área de la Bahía de San Francisco, Raleigh, NC, Hamburgo, Alemania, y París, Francia.

¿Quiénes utilizan la Ingeniería del Caos y por qué algunas personas la consideran arriesgada?

La Ingeniería del Caos se utiliza en una variedad de industrias. Algunos ejemplos son:

  • Gigantes tecnológicos como Google, Amazon, Microsoft, Dropbox y Yahoo;
  • Instituciones educativas e investigativas como la Universidad Estatal de Carolina del Norte, la Universidad de California y Sandia National Labs;
  • Empresas de finanzas como Fidelity Investments y Visa; y
  • Recursos y empresas consultoras orientadas a programadores como GitHub, O'Reilly Media, Pivotal, DevJam, Thoughtworks, Cognitect, Cake Solutions, SendGrid, Wallaroo Labs, New Relic y Gremlin.

Algunos gerentes pueden dudar en implementar la Ingeniería del Caos en su organización debido a que los riesgos de fracaso son mayores que los de Netflix. En caso de que algo salga mal en la red de Netflix, el cliente se verá afectado al no poder reproducir un video. Los autores del libro de Ingeniería del Caos citan los ensayos médicos como la base sobre la cual se construye la disciplina de la Ingeniería del Caos.

Recordamos a estos ingenieros que muchos de los principios de la ciencia occidental que inspiraron nuestra formalización de la Ingeniería del Caos se originaron en medicina. Los ensayos clínicos son el estándar más alto para la investigación médica. Sin trivializar las posibles ramificaciones de introducir el caos en un sistema relacionado con la atención médica, les recordamos que existe un precedente respetado para la experimentación donde literalmente hay vidas en juego.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Tecnología y trabajo, allí encontraras muchos artículos similares a Qué es la Ingeniería del Caos y por qué es importante , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.