¿Hay ejemplos de implementación y respuesta efectiva a un "Mono del Caos"?

15

Jeff Atwood escribió recientemente una publicación del blog sobre Netflix Implementación de un "mono caos". Es un artículo de muy alto nivel. Tengo curiosidad si alguien ha implementado esta técnica para probar un sistema.

Supongo que lo que realmente estoy tratando de preguntar es: ¿Qué estrategias implementas para garantizar que tu arquitectura pueda sobrevivir a una parte de la falla del sistema?

    
pregunta Robotsushi 29.06.2011 - 19:03
fuente

1 respuesta

5

Aislamiento y degradación elegante son las estrategias generales. (Otro término que puede 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.)

Se aíslan diferentes partes de un sistema entre sí, de modo que si una está fuera de servicio, las otras aún pueden responder a las solicitudes. Al igual que el el blog de Netflix dijo , si la búsqueda no funcionó , la transmisión todavía 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 la incapacitación de uno no afectara al otro.

Con la degradación elegante, si la mejor implementación de algo no está disponible, tienes algo más que completar. Una vez más de la publicación de Netflix, tienen un sistema para ver las cosas que has visto y que te han gustado y luego trabajar de forma personalizada. Recomendaciones de otras cosas para ver. 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á deshabilitado 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.

    
respondido por el Joel B Fant 29.06.2011 - 20:33
fuente

Lea otras preguntas en las etiquetas