Existem exemplos de implementação e resposta efetiva a um “Macaco do Caos”?

15

Jeff Atwood escreveu recentemente uma postagem no blog sobre o site da Netflix implementação de um "Macaco do Caos". É um artigo de alto nível. Estou curioso para saber se alguém implementou esta técnica para testar um sistema.

Acho que o que estou realmente tentando fazer é: quais estratégias você implementa para garantir que sua arquitetura possa sobreviver a uma pane do sistema?

    
por Robotsushi 29.06.2011 / 19:03
fonte

1 resposta

5

Isolamento e degradação graciosa são as estratégias gerais. (Outro termo que você pode ver que é semelhante ao isolamento é desacoplamento , embora eu tenha a tendência de ver isso em uma escala menor, como em OOD / P. O conceito é o mesmo.)

Você isola partes diferentes de um sistema entre si de modo que, se uma estiver inativa, as outras ainda possam responder a solicitações. Tal como o blogue da Netflix disse , se a pesquisa não estivesse a funcionar , streaming ainda estaria bem. Isso significa apenas que a busca e a transmissão são separadas o suficiente para que um gargalo ou incapacitação de um não afete o outro.

Com uma degradação graciosa, se a melhor implementação de algo não estiver disponível, você terá outra coisa a preencher. Novamente na postagem da Netflix, eles têm um sistema para observar as coisas que você assistiu e gostou e depois trabalhar com personalização recomendações de outras coisas para assistir. Se esse sistema estiver inativo, eles retornarão para mostrar recomendações de coisas que são populares em geral. O ponto é ter um Plano B, Plano C, etc. para fazer ou mostrar alguma coisa quando o Plano A falhar em vez de mostrar nada ou um erro.

Um exemplo comum de degradação elegante do lado do cliente (seja a implementação comum ou não) envolve o uso de javascript em sites. Se o javascript do navegador estiver desativado ou simplesmente indisponível, as páginas do site ainda deverão funcionar com êxito sem ele. Pode não ser tão rápido ou escorregadio, mas ainda deve funcionar em vez de ficar inutilizável.

Estas são ideias muito gerais, no entanto. Quase todos os projetos os implementariam de maneira diferente, dependendo dos serviços e subsistemas que eles fornecem e das dependências entre eles.

    
por 29.06.2011 / 20:33
fonte