La ingeniería del caos (en inglés: chaos engineering) es la disciplina de experimentar con un sistema con el fin de generar confianza en la capacidad del sistema para soportar condiciones turbulentas en la producción.[1]
Concepto
En el desarrollo de software, la capacidad de un sistema de software de tolerar fallos a la vez que asegura una calidad de servicio adecuada (lo que se generaliza habitualmente como «resiliencia») suele estar especificado como un requisito. Sin embargo, es habitual que los equipos de desarrollo no cumplan con este requisito debido a factores como plazos de entrega demasiado cortos o la falta de experiencia en el campo. La ingeniería del caos es una técnica para cumplir con el requisito de resiliencia.
La ingeniería del caos se puede usar para obtener resiliencia contra fallos en la infraestructura, fallos de red y fallos en la aplicación.
Preparación operativa mediante la ingeniería del caos
Calcular la confianza que se puede tener en los complejos sistemas interconectados que se ponen en el entorno de producción requiere de métricas de preparación operativa. La preparación operativa se puede evaluar mediante simulaciones de ingeniería del caos respaldadas por la infraestructura de big data de Kubernetes. Las soluciones para la preparación operativa de una plataforma implican fortelecer las copias de seguridad, la restauración, la transferencia de ficheros por la red, la capacidad de conmutación por error y la seguridad en general. Gautam Siwach et al. evaluaron la inducción de caos en un entorno Kubernetes que cerraba pods aleatorios con datos de dispositivos de borde en centros de datos mientras se evaluaba la analítica de la red de big data e infirieron el tiempo de recuperación de los pods para calcular un tiempo de respuesta estimado.[2][3]
Historia
Apple (1983)
Durante el desarrollo de MacWrite y MacPaint para la primera computadora Macintosh de Apple, Steve Capps creó Monkey («Mono»), un accesorio de escritorio que generaba aleatoriamente eventos de interfaz de usuario a alta velocidad, simulando el comportamiento de un mono frenético que se dedica a golpear el teclado y a mover y hacer clic con el ratón. Se empleó rápidamente para la depuración al generar errores que los programadores debían corregir, ya que no era posible la automatización de pruebas debido a que el primer Macintosh no disponía de suficiente memoria para nada más sofisticado.[4]
Amazon (2003)
Cuando Jesse Robbins trabajaba en Amazon para mejorar la fiabilidad del sitio web, creó GameDay, una iniciativa que genera errores importantes de manera regular. Robbins ha dicho que GameDay estuvo inspirado por el entrenamiento de los bomberos, al seguir principios similares de incidente-respuesta.[5]
Google (2006)
Mientras Kripa Krishnan trabajaba en Google, creó un programa similar a GameDay denominado DiRT (de dirt, «suciedad»).[5]
Netflix (2011)
Mientras supervisaban la migración de Netflix a la nube en 2011, Nora Jones, Casey Rosenthal y Greg Orzell[6][7][8] ampliaron la disciplina al crear una herramienta que generara fallos en su entorno de producción, el entorno que usarían los clientes de Netflix. La intención era pasar de un modelo de desarrollo que presuponía que no habría fallos a uno en que los fallos eran asumidos como inevitables, lo que impulsó a los desarrolladores a considerar la resiliencia como una obligación más que como una opción.[9]
Al «matar» regularmente instancias aleatorias de un servicio de software, se pudo someter a prueba una arquitectura redundante para verificar que un fallo de servidor no afectaba notablemente a los clientes.
El concepto de ingeniería de caos es cercano al de «servidores fénix» (phoenix servers), introducido por Martin Fowler en 2012.[10]
Herramientas de ingeniería del caos
Chaos Monkey
Chaos Monkey («Mono del Caos») es una herramienta inventada en 2011 por Netflix para poner a prueba la resiliencia de su infraestructura TI.[7] Su funcionamiento consiste en deshabilitar intencionadamente las computadoras en la red de producción de Netflix para comprobar cómo responden los sistemas restantes a la interrupción. Chaos Monkey en la actualidad forma parte de un conjunto mayor de herramientas denominado Simian Army («Ejército de Simios»), diseñado para simular y probar respuestas a diversos fallos del sistema y casos extremos.
El código de Chaos Monkey fue liberado por Netflix en 2012 bajo una licencia Apache 2.0.[11][12]
Antonio García Martínez explica el nombre en su libro Chaos Monkeys:[13]
Imagínese un mono que entra en un centro de datos, estas 'granjas' de servidores que albergan todas las funciones críticas de nuestras actividades en línea. El mono arranca cables al azar, destruye dispositivos y devuelve todo lo que pasa por su mano [por ejemplo, excrementos]. El desafío para los responsables informáticos es el de diseñar el sistema de información del que son responsables para que pueda funcionar a pesar de estos monos que nadie sabe cuándo van a llegar y qué van a destruir.
Simian Army
Simian Army[12] es un conjunto de herramientas desarrollado por Netflix para poner a prueba la fiabilidad, la seguridad y la resiliencia de su infraestructura Amazon Web Services (AWS).[14]
En lo más alto de la jerarquía del «Ejército de Simios», Chaos Kong provoca la caída de una región entera de la infraestructura de AWS.[15] Aunque no sea habitual la pérdida de una región entera, puede ocurrir, y Chaos Kong simula la respuesta y recuperación del sistema a este tipo de evento.
Por su parte, Chaos Gorilla interrumpe el servicio de una zona de disponibilidad (uno o más centros de datos que dan servicio a una región geográfica).[16]
Proofdock
Proofdock («Muelle de prueba») es una plataforma de ingeniería del caos que se centra en la plataforma Microsoft Azure y los Azure DevOps Services. Los usuarios pueden inyectar fallos en a nivel de infraestructura, plataforma y aplicación.[17]
Gremlin
Gremlin una plataforma de «fallo como servicio» (failure as a service).[18]
Facebook Storm
Para anticiparse a la pérdida de un centro de datos, Facebook pone a prueba regularmente sus infraestructuras ante eventos extremos. Conocido como Storm Project («Proyecto Tormenta»), el programa simula diversos fallos masivos en centros de datos.[19]
Days of Chaos
Voyages-sncf.com creó en 2017 un Day of Chaos («Día del Caos»)[20] en el que ludificó la simulación de fallos preproducción,[21] y presentó sus resultados en la conferencia DevOps REX de 2017.[22]
Véase también
- Alta disponibilidad
- Detección y corrección de errores
- Diseño de tolerancia a fallos
- Redundancia de sistemas
- Solidez (informática)
Referencias
- ↑ «Principios de la ingeniería del caos». principlesofchaos.org. Consultado el 27 de septiembre de 2023.
- ↑ Siwach, Gautam (29 de noviembre de 2022). Evaluating operational readiness using chaos engineering simulations on Kubernetes architecture in Big Data (pdf). 2022 International Conference on Smart Applications, Communications and Networking (SmartNets). Botswana. pp. 1-7. Consultado el 3 de enero de 2023.
- ↑ «Machine Learning Podcast Host and Technology Influencer: Gautam Siwach». LA Weekly. 7 de octubre de 2022.
- ↑ Hertzfeld, Andy. «Monkey Lives». Folklore. Consultado el 11 de septiembre de 2023.
- ↑ a b Limoncelli, Tom (13 de septiembre de 2012). «Resilience Engineering: Learning to Embrace Failure». ACM Queue 10 (9) – via ACM.
- ↑ Jones, Nora; Rosenthal, Casey (2020). Chaos Engineering (1st edición). O'Reilly Media. ISBN 9781492043867. OCLC 1143015464.
- ↑ a b «The Netflix Simian Army». Netflix Tech Blog. Medium. 19 de julio de 2011. Consultado el 21 de octubre de 2017.
- ↑ Orzell, Gregory S.; Izrailevsky, Yury (22 de marzo de 2012). «VALIDATING THE RESILIENCY OF NETWORKED APPLICATIONS». worldwide.espacenet.com.
- ↑ «Netflix Chaos Monkey Upgraded». Netflix Tech Blog. Medium. 19 de octubre de 2016. Consultado el 21 de octubre de 2017.
- ↑ «PhoenixServer». martinFowler.com. Martin Fowler. 10 de julio de 2012. Consultado el 14 de enero de 2021.
- ↑ «Netflix libère Chaos Monkey dans la jungle Open Source» [Netflix libera Chaos Monkey en la jungla Open Source]. Le Monde Informatique (en francés). Consultado el 7 de noviembre de 2017.
- ↑ a b «SimianArmy: Tools for your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures». Netflix, Inc. 20 de octubre de 2017. Consultado el 21 de octubre de 2017.
- ↑ «Mais qui sont ces singes du chaos ?» [¿Pero quiénes son estos monos del caos?]. 15marches (en fr-FR). 25 de julio de 2017. Consultado el 21 de octubre de 2017.
- ↑ SemiColonWeb (8 de diciembre de 2015). «Infrastructure : quelles méthodes pour s'adapter aux nouvelles architectures Cloud ? - D2SI Blog». D2SI Blog (en fr-FR). Archivado desde el original el 21 de octubre de 2017. Consultado el 7 de noviembre de 2017.
- ↑ «Chaos Engineering Upgraded», medium.com (en inglés), 19 de abril de 2017, consultado el 10 de abril de 2020.
- ↑ «The Netflix Simian Army», medium.com (en inglés), consultado el 12 de diciembre de 2017.
- ↑ «A chaos engineering platform for Microsoft Azure». medium.com. 25 de junio de 2020. Consultado el 28 de junio de 2020.
- ↑ «Gremlin raises $18 million to expand 'failure-as-a-service' testing platform». VentureBeat. 28 de septiembre de 2018. Consultado el 24 de octubre de 2018.
- ↑ Hof, Robert (11 de septiembre de 2016), «Interview: How Facebook's Storm Heads Off Project Data Center Disasters», Forbes (en inglés), consultado el 21 de octubre de 2017.
- ↑ «Days of Chaos». Days of Chaos (en fr-FR). Consultado el 18 de febrero de 2022.
- ↑ «DevOps: feedback from Voyages-sncf.com». Moderator's Blog (en fr-FR). 17 de marzo de 2017. Consultado el 21 de octubre de 2017.
- ↑ devops REX (3 de octubre de 2017). «[devops REX 2017] Days of Chaos : le développement de la culture devops chez Voyages-Sncf.com à l'aide de la gamification». Consultado el 18 de febrero de 2022.
Enlaces externos
- Principios de la ingeniería del caos – Manifiesto de la ingeniería del caos
- Chaos Engineering – Adrian Hornsby
- How Chaos Engineering Practices Will Help You Design Better Software – Mariano Calandra
- Esta obra contiene una traducción derivada de «Chaos engineering» de Wikipedia en inglés, publicada por sus editores bajo la Licencia de documentación libre de GNU y la Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.