¿Hay ejemplos de implementación y respuesta efectiva a un "mono del caos"?

15

Jeff Atwood escribió recientemente una publicación de blog sobre la implementación de Netflix de un "Chaos Monkey". Es un artículo de muy alto nivel. Tengo curiosidad por saber si alguien ha implementado esta técnica para probar un sistema.

Supongo que lo que realmente estoy tratando de preguntar es: ¿qué estrategias implementan para garantizar que su arquitectura pueda sobrevivir a una parte del bloqueo del sistema?

Robotsushi
fuente
1
Y tal vez, ¿qué estrategias utilizas para probar dicha arquitectura?
rlb.usa
... Bueno, supongo que estamos esperando que alguien en el equipo de Netflix venga y responda a este lol
Earlz
Probablemente arrojaré una recompensa por esto. Podría tener algunas respuestas muy interesantes
Robotsushi
1
De acuerdo ... Pero pertenece a los programadores, no SO. Votado para migrar.

Respuestas:

5

El aislamiento y la degradación elegante son las estrategias generales. (Otro término que podría ver que es similar al aislamiento es desacoplamiento , aunque tiendo a verlo en una escala más pequeña, como en OOD / P. El concepto es el mismo).

Aísla diferentes partes de un sistema entre sí de modo que si una está inactiva, las demás aún pueden responder a las solicitudes. Como dijo el blog de Netflix , si la búsqueda no funcionaba, la transmisión aún estaría bien. Esto solo significa que la búsqueda y la transmisión se separaron lo suficiente como para que un cuello de botella o incapacidad de una no afectara a la otra.

Con una degradación elegante, si la mejor implementación de algo no está disponible, tiene algo más que completar. Nuevamente, desde la publicación de Netflix, tienen un sistema para ver las cosas que ha visto y le han gustado y luego elaborar recomendaciones personalizadas de otros cosas para mirar Si ese sistema no funciona, recurren a mostrar recomendaciones de cosas que son populares en general. El punto es tener un Plan B, Plan C, etc. para hacer o mostrar algo cuando el Plan A falla en lugar de mostrar nada o un error.

Un ejemplo común del lado del cliente de degradación elegante (si la implementación es común o no) implica el uso de JavaScript en los sitios web. Si el JavaScript del navegador está desactivado o simplemente no está disponible, las páginas del sitio aún deberían funcionar correctamente sin él. Puede que no sea tan rápido o resbaladizo, pero aún así debería funcionar en lugar de volverse inutilizable.

Sin embargo, estas son ideas muy generales. Casi todos los proyectos los implementarían de manera diferente, dependiendo de los servicios y subsistemas que brinden, y las dependencias entre ellos.

Joel B Fant
fuente