Queremos calcular o tempo médio de nossos deployments. Para tal, precisamos implementar uma API REST que deve ser chamada no início e fim de cada deploy.
A API deve suportar uma chamada store que receba os seguintes parâmetros: nome do componente que estamos fazendo deploy, se é um início ou fim de deploy e, caso seja um fim, o status (sucesso ou algum código de erro).
Para este teste, como requerimento mínimo, implemente a chamada store. Grave os parâmetros passados na chamada (junto com outros que achar necessário para atingir nossos objetivos) em um arquivo CSV de forma persistente. Use a linguagem e servidor web de sua preferência, mas precisa ser em Linux e usando docker.
Opcionalmente, faça o maior número possível dos itens abaixo:
* Em vez de salvar os dados em um arquivo CSV, use um servidor de banco de dados.
- Descreva possíveis melhorias para a API. Se possível, implemente-as.
- Escreva arquivos
docker-compose.yml
para instanciar os containers. - Escreva arquivos de configuração para fazer o deploy desses servidores (assuma o uso de duas máquinas, uma para web e outro para o banco). A ferramenta de gerenciamento de configuração que sua preferimos é o Ansible, mas se não a conhecer, use uma outra com a qual se sinta confortável (Salt, Chef, Puppet etc)
- Escreva arquivos de configuração para fazer deploy em Kubernetes.
- Faça um script que crie uma instância EC2 (pode ser spot) e que execute um script
xyz.sh
em sua inicialização. Pra simplificação, assuma quexyz.sh
só faça um sleep de 60s. Ao fim do término dexyz.sh
, a instância deve ser encerrada.
Note que a descrição não é complementamente detalhada de forma intencional. Você está livre para fazer suposições (contanto que as descreva claramente) e faça suas próprias melhorias que achar que possam fazer sentido.
- Todo o código fonte, arquivos de configuração etc em um repositório no github
- Queremos que faça seus commits normalmente. Não faça checkin apenas do resultado final, queremos ver o histórico de commits para entender como a solução foi evoluída
- Um README contendo instruções de como rodar sua API, assim como exemplos de comando curl para testar a API. Use o arquivo também para descrever possíveis condições que tenha assumido além de informações que nos ajudem a entender o quê e como feito.
Analisaremos:
- Corretude, robustez
- Qualidade (prefira fazer menos coisas e com qualiade a fazer mais e de forma questionável)
- Se as melhoras práticas foram adotadas
- Simplicidade e legibilidade do código e da solução como um todo
- Possíveis melhorias em cima daquilo que foi proposto