Existe-t-il des exemples de mise en œuvre et de réponse efficace à un «singe du chaos»?

15

Jeff Atwood a récemment écrit un article de blog sur l'implémentation par Netflix d'un "Chaos Monkey". C'est un article de très haut niveau. Je suis curieux de savoir si quelqu'un a réellement mis en œuvre cette technique pour tester un système.

Je suppose que ce que j'essaie vraiment de demander, c'est: quelles stratégies mettez-vous en œuvre pour vous assurer que votre architecture peut survivre à une partie du système en panne?

Robotsushi
la source
1
Et peut-être, quelles stratégies utilisez-vous pour tester une telle architecture?
rlb.usa
... Eh bien, je suppose que nous attendons que quelqu'un de l'équipe netflix vienne répondre à ce lol
Earlz
Je vais probablement lancer une prime à ce sujet. Pourrait avoir des réponses très intéressantes
Robotsushi
1
D'accord ... Mais appartient aux programmeurs, pas SO. A voté pour migrer.

Réponses:

5

L'isolement et la dégradation gracieuse sont les stratégies générales. (Un autre terme que vous pourriez voir qui est similaire à l'isolement est le découplage , bien que j'ai tendance à le voir à une échelle plus petite, comme dans OOD / P. Le concept est le même.)

Vous isolez les différentes parties d'un système les unes des autres afin que si l'une est en panne, les autres puissent toujours répondre aux demandes. Comme le blog Netflix l'a dit , si la recherche ne fonctionnait pas, le streaming serait toujours bien. Cela signifie simplement que la recherche et le streaming étaient suffisamment séparés pour qu'un goulot d'étranglement ou une incapacité de l'un n'affecte pas l'autre.

Avec une dégradation gracieuse, si la meilleure implémentation de quelque chose n'est pas disponible, vous avez quelque chose d'autre à remplir. Encore une fois à partir du post Netflix, ils ont un système pour regarder les choses que vous avez regardées et aimées et ensuite élaborer des recommandations personnalisées d'autres choses à regarder. Si ce système est en panne, ils recommencent à montrer des recommandations de choses qui sont populaires dans l'ensemble. Le point est d'avoir un plan B, un plan C, etc. pour faire ou montrer quelque chose quand le plan A échoue plutôt que de ne rien montrer ou une erreur.

Un exemple courant de dégradation progressive côté client (que l'implémentation soit courante ou non) implique l'utilisation de javascript sur les sites Web. Si le javascript du navigateur est désactivé ou simplement indisponible, les pages du site devraient toujours fonctionner correctement sans lui. Il peut ne pas être aussi rapide ou glissant, mais il devrait quand même fonctionner plutôt que devenir inutilisable.

Ce sont des idées très générales, cependant. Presque chaque projet les implémenterait différemment, en fonction des services et sous-systèmes qu'ils fournissent et des dépendances entre eux.

Joel B Fant
la source