The Netflix Simian Army traducido al español.

Publicado originalmente en techblog.netflix.com el 19 de julio de 2011.

En el pasado hemos hablado un poco sobre nuestro movimiento a la nube, y John compartió algunas de nuestras lecciones aprendidas al pasar por esa transición en una publicación anterior. Recientemente, nos hemos centrado en formas de mejorar la disponibilidad y la fiabilidad y queríamos compartir algunos de nuestros progresos y pensamientos.

La nube trata de redundancia y tolerancia a fallos. Dado que ningún componente individual puede garantizar un tiempo de actividad del 100% (e incluso el hardware más costoso finalmente falla), tenemos que diseñar una arquitectura en la nube donde los componentes individuales puedan fallar sin afectar la disponibilidad de todo el sistema. En efecto, tenemos que ser más fuertes que nuestro eslabón más débil. Podemos usar técnicas como la degradación elegante en fallas de dependencia, así como implementaciones de nodo, rack, centro de datos / zona de disponibilidad e incluso redundantes a nivel regional. Pero solo diseñar una arquitectura tolerante a fallos no es suficiente. Tenemos que probar constantemente nuestra capacidad para sobrevivir realmente a estos fallos que suceden «muy rara vez».

Imagina tener una rueda pinchada. Incluso si tienes una llanta de repuesto en tu maletero, ¿Sabes si está inflada? ¿Tienes las herramientas para cambiarla? Y, lo más importante, ¿Recuerdas cómo hacerlo bien? Una forma de asegurarse de que puedes lidiar con una llanta desinflada en la autopista, bajo la lluvia, en medio de la noche es hacer un agujero en la llanta una vez a la semana en tu entrada al garaje un domingo por la tarde y realizar el ejercicio de cambiarla. Esto es costoso y requiere mucho tiempo en el mundo real, pero puede ser (casi) gratuito y automatizado en la nube.

Esta fue nuestra filosofía cuando creamos Chaos Monkey, una herramienta que deshabilita aleatoriamente nuestras instancias de producción para asegurarnos de que podamos sobrevivir a este tipo de fallo común sin ningún impacto en el cliente. El nombre proviene de la idea de liberar a un mono salvaje con un arma en tu centro de datos (o región de la nube) para derribar instancias al azar y masticar cables -todo mientras seguimos sirviendo a nuestros clientes sin interrupción. Al ejecutar Chaos Monkey en medio de un día hábil, en un entorno cuidadosamente monitoreado con ingenieros listos para abordar cualquier problema, aún podemos aprender las lecciones sobre las debilidades de nuestro sistema y construir mecanismos de recuperación automática para afrontarlos. Entonces, la próxima vez que una instancia falle a las 3 am de un domingo, ni siquiera lo notaremos.

Inspirados por el éxito del Chaos Monkey, hemos comenzado a crear nuevos simios que inducen varios tipos de fallos, o detectan condiciones anormales y ponen a prueba nuestra capacidad para sobrevivir; un Ejército Simio virtual para mantener nuestra nube segura, protegida y altamente disponible.

Latency Monkey induce demoras artificiales en nuestra capa RESTful de comunicación cliente-servidor para simular la degradación del servicio y mide si los servicios previos responden adecuadamente. Además, al generar retrasos muy grandes, podemos simular un nodo o incluso un tiempo de inactividad del servicio completo (y probar nuestra capacidad para sobrevivir) sin reducir físicamente estas instancias. Esto puede ser particularmente útil cuando se prueba la tolerancia a fallos de un servicio nuevo simulando la falla de sus dependencias, sin hacer que estas dependencias no estén disponibles para el resto del sistema.

Conformity Monkey encuentra instancias que no se adhieren a las mejores prácticas y las cierra. Por ejemplo, sabemos que si encontramos instancias que no pertenecen a un grupo de escalado automático, es un problema esperar a que suceda. Los cerramos para dar al propietario del servicio la oportunidad de volver a lanzarlos correctamente.

Doctor Monkey aprovecha las comprobaciones de estado que se ejecutan en cada instancia, así como también monitoriza otros signos externos de estado (por ejemplo, carga de CPU) para detectar instancias poco saludables. Una vez que se detectan instancias poco saludables, se eliminan del servicio y después de dar tiempo a los propietarios del servicio para que causen el problema, finalmente se terminan.

Janitor Monkey garantiza que nuestro entorno en la nube se ejecute sin desorden ni desperdicio. Busca recursos no utilizados y los elimina.

Security Monkey es una extensión de Conformity Monkey. Encuentra violaciones de seguridad o vulnerabilidades, como grupos de seguridad de AWS mal configurados, y finaliza las instancias infractoras. También garantiza que todos nuestros certificados SSL y DRM sean válidos y no se renueven.

10–18 Monkey (abreviatura de localización-internacionalización, o l10n-i18n) detecta problemas de configuración y tiempo de ejecución en instancias que atienden a clientes en múltiples regiones geográficas, utilizando diferentes idiomas y conjuntos de caracteres.

Chaos Gorilla es similar a Chaos Monkey, pero simula una interrupción de toda una zona de disponibilidad de Amazon. Queremos verificar que nuestros servicios se re-equilibren automáticamente en las zonas de disponibilidad funcional sin impacto visible para el usuario o intervención manual.

Con el creciente Ejército Simio de Netflix a nuestro lado, constantemente probando nuestra resistencia a todo tipo de fallos, nos sentimos mucho más seguros de nuestra capacidad para afrontar los fallos inevitables que encontraremos en la producción y para minimizar o eliminar su impacto a nuestros suscriptores. El modelo de nube es bastante nuevo para nosotros (y para el resto de la industria); la tolerancia a fallos es un trabajo en curso y tenemos formas de aprovechar plenamente sus beneficios. Ya se han construido partes del Ejército Simio, pero mucho sigue siendo una aspiración -esperando que ingenieros talentosos se unan al esfuerzo y lo hagan realidad.

¡Las ideas para nuevos simios están llegando más rápido de lo que podemos seguir y si tiene ideas, nos encantaría escucharlas! El Ejército Simio es una de las muchas iniciativas que hemos lanzado para poner de relieve el aumento de la fiabilidad de nuestro servicio y la entrega a nuestros clientes de un flujo ininterrumpido de entretenimiento. Si estás interesado en unirte a la diversión, consulta nuestra página de empleos.

  • Yury Izrailevsky, Director de Infraestructura en la Nube y Sistemas.
  • Ariel Tseitlin, Director de Soluciones en la Nube.

Aclaraciones

El artículo no es de mi autoría, se trata de una traducción literal del artículo publicado en el blog de Netflix que podéis encontrar aquí.

Leave a reply:

Your email address will not be published.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.