Docker containers running sample nodejs app among others tools for learning purposes.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

2.3 KiB

Fase III

Primera tarefa:

Implemente um serviço REST em NodeJS que exponha o endpoint "/token" que receba o JSON "{user:'user1', password:'pass1'}" e retorne um token JWT caso sucesso, ou status 500 caso contrário.

Segunda tarefa:

Crie uma página HTML que solicite usuário/senha, invoque o serviço da primeira tarefa e mostre a mensagem "Autenticado com sucesso" ou "Falha na autenticação".

Essa página deve estar em um segundo container e servida por NGINX. Mande o print da sua tela!

Terceira tarefa:

Faça com que a geração de token (/token) para o usuário 'power', com senha 'weak', inclua no token JWT o scope "admin".

Quarta tarefa:

Crie um endpoint REST '/restricted' que receba o token JWT e retorne o JSON "{message:'You have access to restricted contents!'} caso o token tenha scope "admin". Crie uma página HTML também que mostre essa mensagem retornada pelo serviço. Mande prints de telas mostrando acesso ao conteúdo com sucesso e sem sucesso.

Quinta tarefa:

Altere o serviço '/restricted' e adicione ao cabeçalho HTTP de retorno 'HOSTNAME=[container-hostname]' para identificarmos a instância do container que atendeu à requisição. Mande o print da chamada cURL mostrando esse cabeçalho HTTP na resposta.

Sexta tarefa:

Levante a página e o serviço REST em Swarm Mode. Escale o container do NodeJS para 6 instâncias e do NGINX para 3 instâncias. Altere a página HTML para mostrar o nome do hostname retornado no cabeçalho de /restricted pra vc saber qual instância te respondeu. Mande o print da página HTML funcionando, demonstrando que a cada requisição uma instância diferente de NodeJS responde à requisição.

Sétima tarefa:

Faça um teste de escala de 6 threads em paralelo no serviço /restricted usando JMeter, validando se o retorno do servidor está conforme esperado. Mande um print de 'docker stats' enquanto o teste roda para demonstrar a distribuição de gasto de CPU entre as instâncias do container de NodeJS e um print dos resultados do JMeter.

Nona tarefa:

Rode o mesmo teste anterior, mas agora monitore o andamento do teste do JMeter pelo Grafana por meio do Prometheus. Monte um painel Grafana com a qtde de requisições cujo assert JMeter foi OK, qtos foi com erro e a qtde de requisições por segundo que o JMeter está lançando.

Dica: https://github.com/johrstrom/jmeter-prometheus-plugin