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.
 
 
 
 
Yutsuo 3a867d4b67 Clean Up 7 years ago
mongo Starting Task 5 7 years ago
nginx Phase III Task 6 7 years ago
node Phase III Task 7 Complete 7 years ago
.gitignore Clean Up 7 years ago
.gitlab-ci.yml learning CI/CD for real 7 years ago
From JMeter-1548074478117.json Phase III Taske 9 Complete 7 years ago
JMeter.json Phase III Taske 9 Complete 7 years ago
README.md Phase III Task 9 7 years ago
View Results Tree.jmx Phase III Taske 9 Complete 7 years ago
ambiente_git_labbs.txt learning CI/CD for real 7 years ago
docker-compose-full.yml Phase III Task 2 7 years ago
docker-compose.yml Phase III Task 6 7 years ago
jmeter.log Clean Up 7 years ago
org_cheat_sheet struggling with mongodb image 7 years ago
package-lock.json first commit 7 years ago
prometheus.yml Phase III Taske 9 Complete 7 years ago

README.md

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