Como testar um cluster de microsserviços?

7

Dei uma olhada no Server Spec e ele diz claramente:

Observação: os conjuntos de testes serverspec devem ser executados em uma única máquina (ou contêiner de docker). Em outras palavras, você não deve tentar emitir um único comando rspec que colete e execute testes em várias máquinas ou contêineres. Você precisa emitir um comando rspec para cada um deles.

Para que eu possa fazer o teste por servidor, o que é bom para alguns casos. Mas o problema é o seguinte: minha arquitetura de microsserviço possui um serviço de descoberta automática; portanto, alguns serviços são conhecidos após a consulta. Existe algum projeto para expressar isso? Eu sei que posso trabalhar com ruby ​​(ou python, se eu escolher testinfra ou outro)

Algo que se integra ao Consul com serverpec ou similar será ótimo, em 2014 as pessoas estavam procurando por isso , alguém sabe de algum projeto que abordou esse problema?

nicocesar
fonte
11
Eu acho que você está entendendo mal a execução em uma única instância (sejam quais forem as necessidades externas) com o teste de várias instâncias na mesma execução.
Tensibai 30/03
2
Como seus microsserviços são hospedados? Docker Containers?
Richard Slater
Meus microservices estão sendo executados em VMs e alguns deles em máquinas físicas (o que fazemos genética, por isso há alguns clusters on-prem ao lado de seqüenciadores)
nicocesar
Eu achei este artigo útil se alguém tiver tempo para fazer uso dele. toptal.com/nodejs/nodejs-guide-integration-tests
avi
2
Esclareça o tipo de teste que você está procurando, existem diferentes abordagens para abordar o teste de sistema / integração da configuração do servidor usando, por exemplo, ServerSpec ou KitchenCI, ou testando se o microsserviço está funcionando com a solicitação HTTP simples que cada microsserviço deve implementar, e testes de aplicativos de ponta a ponta de natureza diferente podem ser whitebox / blackbox usando, por exemplo, estruturas de teste de automação BDD ou Selenium.
rombob

Respostas:

2

Se nada existe para zombar facilmente do Consul, você já pensou em criar um serviço Consul juntamente com seus outros microsserviços? O Consul pode ser executado no Docker, portanto, isso deve ser bastante simples se você usar o docker-composite e seus aplicativos puderem ser configurados para apontar para um ponto de extremidade do Consul diferente.

Depois que o docker-compose estiver configurado para ativar toda a infraestrutura / microsserviços necessários para o seu teste, você poderá usar as ferramentas que conhece para testar seus microsserviços, por exemplo, Selenium.

user2640621
fonte
1

Eu gosto do SaltStack porque o gerenciamento de configuração fornece teste de nó, se você desejar nos estados, por nó, e os resultados são reunidos no status do trabalho e totalmente contabilizados nos retornadores.

Os estados do SaltStack também permitem gerar eventos em sucessos ou falhas, e permite que os nós anunciam (minas) dados de terminal arbitrários (por exemplo, em qual porta ip: está ouvindo), disponíveis para os estados de configuração de outros nós.

A combinação dos dois dá o que você provavelmente quer do Consul.

Jeremy
fonte
Como ele se compara ao cônsul em termos de disponibilidade de serviço? Se um nó de um serviço dependente cair no OOM 3 horas após o retorno do seu trabalho salt, como você removeria esse nó do cluster de serviços e evitaria que seu trabalho de implantação o chamasse? Eu acho que a última linha está absolutamente fora de escopo.
Tensibai 26/10