¿Qué es la ingeniería del caos?
La tecnología está en todas partes. Dependiendo de cuán alto sea el riesgo de su industria, la falla de un producto o sistema tecnológico puede caer en cualquier lugar entre completamente insignificante hasta el final de la vida útil tal como la conoce.
¿Mainframes hospitalarios? Algo importante. ¿La resistencia de la aplicación Candy Crush en tu teléfono celular? Probablemente un poco más abajo en la lista general de prioridades.
En un sistema distribuido de redes, las fallas son inevitables. La prevención de catástrofes comienza con un diseño de seguridad sólido y hermético. Sin embargo, más allá de eso, ¿qué más se puede hacer?
¿Qué es la ingeniería del caos de Netflix?
20 de septiembre de 2015.
Todo en silencio en el frente occidental, cuando, de repente, varios importantes servidores corporativos de Amazon Web Services se caen sin decir una palabra.
Muchas grandes empresas no pudieron atender a sus clientes durante varias horas. Netflix, sin embargo, se recuperó en cuestión de minutos. ¿Cómo? La cultura interna de la empresa de Netflix había evolucionado para incluir muchas prácticas "inductoras de fallas" implementadas en tiempo real para preparar tanto a los sistemas como a los ingenieros para cuando ocurra un desastre.
El liderazgo de la compañía llevó a cabo a propósito cortes de servidor simulados en partes contenidas del sistema para estudiar y prepararse para eventos como estos. Esto les ayudó a identificar agujeros en el sistema y crear redundancias que permitieron que el servicio continuara sin interrupciones, incluso en el caso de un mal funcionamiento importante como el mencionado anteriormente.
Estos ejercicios deliberados de "ingeniería del caos" les dieron a sus ingenieros una ventaja competitiva suficiente para superar el fiasco, gracias en parte a la infraestructura preventiva que habían construido con este tipo de evento apocalíptico en mente.
Nadie más estaba listo cuando golpeó la gran ola. El sistema de Netflix era lo suficientemente fuerte como para valerse por sí mismo. ¿Conclusión? Estas mentes maestras caóticas podrían tener algo aquí.
Aniquilar intencionalmente a quienes te aman
"La ingeniería del caos es la disciplina de experimentar en un sistema con el fin de generar confianza en la capacidad del sistema para resistir condiciones turbulentas en la producción".
Este es el corazón de la ingeniería del caos, en esencia, un "simulacro de incendio" impuesto al sistema durante las horas de trabajo cuando hay ojos y manos disponibles para abordar el desafío presentado. La capacidad de un sistema dado para tolerar fallas se pone a prueba a medida que se exponen las vulnerabilidades.
En su contexto original de 2011, la ingeniería del caos se refería al departamento de TI de Netflix. Su liderazgo quería probar qué tan resistentes eran los esfuerzos del equipo cuando una o más de sus computadoras estaban deshabilitadas intencionalmente. Estos contratiempos permitieron al equipo de TI identificar las debilidades clave antes de que se convirtieran en problemas de todo el sistema y pudieran explotarse desde el exterior.
¿Verdadero fracaso? Puede ser muy costoso y eso va más allá de las implicaciones monetarias . Incluso los períodos de inactividad, sin un lapso real en la seguridad, probablemente darán como resultado muchas oportunidades perdidas para obtener ingresos. ¿Por qué esperar a que una emergencia lo tome por sorpresa?
Los monos detrás de la locura
Algunas empresas adoptarán un modelo de "equipo rojo" que enfrenta a los equipos de desarrolladores con sus hermanos a través de las líneas departamentales. El ejemplo clásico que instaló Netflix, sin embargo, hace uso de un "Ejército Simio". Estos bots hacen el trabajo sucio por ellos de manera justa y totalmente aleatoria.
¿Loco? Para el profano, tal vez. En palabras del autor de "Chaos Monkeys" Antonio García Martínez:
"Imagínese un mono entrando en un 'centro de datos', estas 'granjas' de servidores que albergan todas las funciones críticas de nuestras actividades en línea. El mono al azar rompe cables y destruye dispositivos. El desafío es diseñar el sistema de información del que son responsables que puede funcionar a pesar de estos monos, que nadie sabe nunca cuándo llegan y qué van a destruir ".
Una colorida analogía. Sin embargo, no todos los Simios son crueles: el Doctor Monkey supervisa el rendimiento del sistema, por ejemplo. Cuando Chaos Kong pasa de visita, sin embargo, todas las apuestas están canceladas; este personaje eliminará una zona de disponibilidad de AWS completa.
La ingeniería del caos y el método científico
La ingeniería del caos sirve como una fuente valiosa de conocimiento sistémico para quienes realizan los experimentos. No son solo los desarrolladores los que están siendo puestos a prueba aquí; también es el sistema tal como existe de forma autónoma.
Antes de arrojar el barril de monos sobre la mesa, la ingeniería del caos requiere un poco de trabajo preliminar.
- Primero debe identificar lo que considera que es un estado funcional "estable" y saludable para su sistema. Este será el "control" con el que se miden los resultados tangibles.
- Empiece a pensar en cómo este estado se desequilibrará por la intrusión de una falla orquestada. Planifique su malware de sondeo para que solo afecte a un área controlada y contenida de su sistema.
- Introduzca al "intruso" y permita que el sistema responda.
- Observe e interprete cualquier diferencia entre el sistema tal como existe ahora y cómo se comportaba antes, mientras estaba en homeostasis. Aumente su "radio de explosión" de impacto hasta que detecte una vulnerabilidad o alcance la escala completa, lo que ocurra primero.
La idea es que cuanto más difícil sea interrumpir un sistema funcional, más confianza se puede tener en su resistencia al cambio y al bombardeo. Este enfoque muestra cómo los diferentes aspectos del sistema compensarán las fallas de los demás en caso de una interrupción.
"Dado que ningún componente puede garantizar el 100% de tiempo de actividad (e incluso el hardware más caro eventualmente falla), tenemos que diseñar una arquitectura de nube en la que los componentes individuales puedan fallar sin afectar la disponibilidad de todo el sistema".
El Blog de Netflix
A veces, jugar con el sistema de esta manera ni siquiera se acerca a afectar la experiencia del cliente. Otras veces, se sacarán a la luz graves fallas de seguridad. Ahora, especialmente en Netflix, la contingencia destinada a enmascarar la falla del sistema a nivel de usuario está integrada en la base del sistema.
¿Vale la pena la ingeniería del caos?
Si desea comprender un sistema complejo, modifíquelo
– Farhan Thawar (@fnthawar) 26 de mayo de 2021
Los críticos dirán que ningún juego de back-end vale la pena afectar la experiencia de un cliente, aunque sea brevemente y por incidente. Aquellos a favor de la ingeniería del caos, sin embargo, refutarán el hecho de que estas "interrupciones planificadas" están destinadas a ser mucho más pequeñas que las que experimentó AWS en 2015. Si un pequeño problema planificado lo coloca en una posición para prevenir un problema mucho mayor de presentarse nunca, planificar el incidente inicial puede ser la mejor manera de prepararse. En total, menos usuarios se verán afectados. Las matemáticas funcionan.
Desde el punto de vista humano del asunto, la mentalidad es que, ahora, estos ingenieros que han tenido un colapso del servidor frente a ellos y lo han tratado de manera competente estarán más alerta en el futuro y también más equipados intelectualmente para manejar lo que sea que se les presente. camino. El sistema más fuerte resultante, en muchos casos, habla por sí mismo.
Silicon Valley: donde los sueños van a morir
Dicen que si quieres triunfar, tienes que estar dispuesto a matar a tus seres queridos o, en este caso, estar dispuesto a dejar que otros los maten por ti. Cuando la seguridad está a la vanguardia desde el comienzo del desarrollo, es mucho más probable que su equipo termine con algo impenetrable y seguro para que los clientes lo usen libremente.
El juego de la experiencia en el lugar de trabajo hace que la perspectiva de éxito en este campo sea emocionante; cuando el resultado final es de calidad, todos pueden subir de nivel. Mi Netflix funciona bien, y solo tenemos que agradecerle a los locos detrás del caos.
Ahora que tiene un conocimiento firme de la ingeniería del caos, ¿por qué no ampliar sus conocimientos con otra metodología de desarrollo de software? Agile es un excelente sistema que puede incorporar para unificar una fuerza laboral y producir un código limpio y eficiente.