La tecnología está en todas partes. Dependiendo de lo mucho que esté en juego 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.

instagram viewer

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 generar 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" dieron a sus ingenieros una ventaja competitiva suficiente para verse a sí mismos a través del 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 soportar condiciones turbulentas en la producción".

Principios del Manifiesto del Caos

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 aprovecharse 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 rompe cables al azar y destruye dispositivos. El desafío es diseñar el sistema de información del que son responsables para que pueda 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.

Relacionados: ¿Cómo se evalúan las vulnerabilidades de seguridad?

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 manera autónoma.

Antes de arrojar el barril de monos sobre la mesa, la ingeniería del caos requiere un poco de trabajo preliminar.

  1. 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.
  2. 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.
  3. Introduzca al "intruso" y permita que el sistema responda.
  4. 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 en la nube donde los componentes individuales puedan fallar sin afectar la disponibilidad de todo sistema."

La Netflix Blog

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.

Relacionados: ¿Qué es un exploit de día cero?

¿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 de lo que AWS experimentó en 2015. Si un problema pequeño y planificado lo coloca en una posición para evitar que se presente un problema mucho mayor, 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 lidiar con él de manera competente estará más alerta en el futuro y también más equipado intelectualmente para manejar lo que sea que suceda. 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.

Correo electrónico
¿Qué es la metodología de programación ágil?

Ya sea que esté solicitando trabajos de programación o desee una forma de trabajo más eficiente, necesitará conocer Agile.

Leer siguiente

Temas relacionados
  • Programación
  • Programación
Sobre el Autor
Emma Garofalo (25 artículos publicados)

Emma Garofalo es una escritora que vive actualmente en Pittsburgh, Pensilvania. Cuando no está trabajando en su escritorio en busca de un mañana mejor, por lo general se la puede encontrar detrás de la cámara o en la cocina.

Más de Emma Garofalo

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Un paso más…!

Confirme su dirección de correo electrónico en el correo electrónico que le acabamos de enviar.

.