Skip to content

dmaax/picpay-jr-devops-challenge

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 

Repository files navigation

Solucionando problemas

Aqui estão as minhas anotações pessoais de raciocínio para resolver esse desafio.

Primeiros passos com docker-compose

Primeiramente notei que o docker-compose continha a rede backend declarada no final do arquivo e que os containers declarados utilizavam a mesma, percebi que alguns containers usavam a rede frontend mas ela não havia sido declarada como a anterior, portanto declarei ela.

Mais um erro no docker-compose

Notei um typo no docker-compose, dessa vez tem a ver com o banco de dados em memória Redis. A imagem docker está correta entretando o nome do serviço está como reids. Lendo o arquivo main.go é possível indentificar que ele tenta conectar com o host redis, logo esse deve ser o nome do service no arquivo docker-compose.

Portas trocadas no docker-compose

Ao ler os arquivos main.py e main.go, pude perceber que o reader deve escutar na porta 8080 e o writer deve escutar na porta 8081, o que não acontece no docker-compose, já que as portas estão trocadas, para corrigir foi necessário inverter as portas.

Baixando dependências no Dockerfile (main.go)

Este Dockerfile não continha os comandos para baixar as dependências usadas pelo main.go, para solucionar foi preciso inicializar o go mod com RUN ["go","mod","init"] e adicionar as dependências com RUN ["go","get","github.com/go-redis/redis"] e ["go","get","github.com/rs/cors""].

Rodando os serviços e bugfix (main.go)

Ao rodar o docker-compose com docker-compose down; docker-compose up --build notei que a aplicação reader retornava o seguinte erro: ./main.go:27:26: too many arguments in call to client.cmdable.Get, para arrumar isso foi preciso apenas remover o primeiro argumento já que segundo o erro, esperamos apenas um argumento e não dois.

Outra descoberta rodando o docker-compose

Outra coisa que acontece ao rodar o docker-compose é que o serviço web (frontend) reporta estar escutando na porta 3000 mas a porta declarada é a 5000. Solucionar esse problema é bem simples, será preciso mudar a propriedade ports do serviço web de 5000:5000 para 3000:3000.

Corrigindo o erro ao tentar rodar o writer

Rodando o docker-compose é possível perceber que o serviço writer não sobe, para corrigir isso foi necessaŕio adicionar o comando para baixar as dependências (redis) e alterar o comando para rodar a aplicação em si.

Correção final do docker-compose

Acabei criando no docker-compose uma rede chamada cache que diz respeito ao serviço do Redis e conectei os serviços a ela, isso fez com que o teste realizado ao visitar localhost:3000/#writer e tentar cadastrar um valor para ler em http://localhost:3000/#reader fosse um sucesso. Antes disso a aplicação em python não conseguia identificar o host redis e portanto o teste falhava, não é mais o caso.

La fin 🙌

Cheguei ao final desse challenge e todas as aplicações estão funcionando devidamente

  • Corrigir docker-compose.yaml e Dockerfiles
  • Criar as redes necessárias
  • Corrigir bugs no código
  • Fazer tudo funcionar

About

Desafio para vagas de DevOps jr

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 53.1%
  • Python 16.5%
  • HTML 13.8%
  • Go 9.8%
  • Dockerfile 6.8%