Giter Site home page Giter Site logo

devsecops-challenge's Introduction

DevSecOps Hiring Test

Datarisk DevSecOps Challenge

Apresentação

Olá candidato/a ao time DevSecOps da Datarisk!

Para melhor entender o seu nível técnico, nós preparamos este desafio como parte do nosso processo de contratação. Por isso, tenha em mente que não é necessário cumprir com todos os pontos mencionados, nem cumpri-los em uma ordem específica.

O importante é entregar o que você conseguir fazer, com a devida documentação.

Naturalmente, espera-se que candidatos para posições sênior consigam atender mais pontos que prospectos para posições júnior, todavia isso pode ser revisto com base na profundidade e qualidade das soluções apresentadas em itens específicos.

O Desafio

Segue abaixo uma lista de desafios abrangendo várias áreas de responsabilidade do time DevSecOps. Nossa sugestão é tentar seguir cada item na ordem apresentada, porém você está livre para atuar nos pontos que quiser e tiver mais familiaridade.

  • Instanciar uma VM numa cloud provider. Recomendação: Microsoft Azure.
    • Apresentar o custo estimado dessa VM, desconsiderando valores relacionados a rede e armazenamento. Recomendação: Azure Calculator.
  • Criar a configuração dessa VM usando uma ferramenta de IaC (Infrastructure as Code). Recomendação: Terraform.
    • Criar um job de CI (Continuous Integration) para aplicar a configuração da ferramenta de provisionamento. Recomendação: GitHub Actions.
    • Criar um job de CI que utiliza alguma ferramenta automatizada de estimativa de custos. Recomendação: Infracost.
  • Fazer a configuração do Wordpress nessa VM, usando containers apenas. Recomendação: Docker e docker-compose.
    • Dica: você pode usar um software de virtualização local no lugar da VM na cloud para testar essa configuração, o que zera os custos com serviços da nuvem. Exemplo: Vagrant + VirtualBox.
  • Fazer a instalação de uma ferramenta de monitoramento na VM, expondo informações a respeito dos ”4 Golden Signals”. Recomendação: Prometheus + Grafana.
  • Automatizar o setup do projeto na VM após esta ter sido provisionada. Recomendação: Ansible.
    • Criar um job de CI para automatizar esse processo. Recomendação: GitHub Actions.
  • Adicionar uma ferramenta de proxy-reverso e associar um sub-domínio ao Wordpress instanciado na VM. Recomendação: NGINX + Azure DNS.
    • Configurar o certificado SSL/TLS para expor a aplicação usando HTTPS. Recomendação: Certbot.
  • Criar um job de CI para fazer o scan de vulnerabilidades (não é necessária a resolução das vulnerabilidades) nesse repositório. Recomendação: Trivy, tfsec.
  • Criar outros jobs de CI conforme achar conveniente. Eles serão considerados posteriormente.
  • Adicionar um Dockerfile à aplicação disponibilizada na pasta projeto-fsharp/ para containerizar o mesmo. Note que foi utilizada a linguagem F# (.NET) para escrever a aplicação.
    • Para facilitar o entendimento do projeto, adicionamos um README.md com instruções de teste e uso do mesmo localmente. Você deverá ser capaz de traduzir essas instruções para a criação do Dockerfile.
    • Usar um manifesto com múltiplos estágios (multi-stage builds), onde no primeiro estágio fazemos a compilação do projeto e no estágio seguinte copiamos o resultado para ser executado, tendo uma imagem mais enxuta ao final.
    • Criar um job de CI para enviar a imagem gerada para um Docker Registry. Recomendação: GitHub Container Registry.
    • Criar os manifestos YAML para hospedar a aplicação usando Kubernetes. Nesse ponto os testes podem ser realizados apenas localmente, porém devem ser apresentados os arquivos YAML criados. Recomendação: Minikube.
  • Adicionar um README ao projeto detalhando o processo e justificando as decisões tomadas. Recomendação: Markdown.
  • Todos os refinamentos adicionados nos tópicos mencionados anteriormente, e demais ideias que possam melhorar o projeto serão considerados na avaliação da solução.

Requisitos

Segue abaixo uma lista não-exaustiva de requisitos para completar o desafio:

  • Um computador com internet.
  • Uma conta (gratuita) na Azure, ou AWS.

A entrega deste desafio é o código com as soluções, que deve ser disponibilizado num repositório do GitHub. Você deve nos enviar a URL para esse repositório para que possamos verificar a solução.

Não se esqueça de adicionar instruções de como testar a sua solução. Estas devem estar descritas no README do projeto.

Solução

Para resolver esse desafio você deve fazer um fork desse repositório para sua conta pessoal e armazenar o código da solução neste repositório.

Em seguida, você deve compartilhar o link da resolução com nosso time através do e-mail [email protected].

Perguntas?

Caso tenha alguma dúvida, entre em contato conosco através do e-mail: [email protected].

devsecops-challenge's People

Contributors

denisonc avatar 64j0 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.