GithubHelp home page GithubHelp logo

job-devops's Introduction

O Desafio

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.

Opcionais

Opcionalmente, faça o maior número possível dos itens abaixo:

  • Em vez de salvar os dados em um arquivo CSV, salve os dados em um banco de dados sql (Postgresql ou MySQL)
  • 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 que xyz.sh só faça um sleep de 60s. Ao fim do término de xyz.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.

Esperemos que entregue:

  • 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.

O que levaremos em consideração

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

job-devops's People

Contributors

enyamada avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.