20 perguntas e respostas frequentes sobre entrevistas sobre DevOps [2022]

O DevOps está se tornando cada vez mais uma maneira popular de criar e implantar aplicativos, o que se traduz em uma demanda crescente por profissionais de DevOps.

Este artigo abordará algumas das perguntas mais frequentes da entrevista de DevOps e suas respostas. Usar essas perguntas como base para o estudo pode aumentar suas chances de ser contratado ou, se você for um recrutador, elas podem ajudá-lo no processo de contratação.

Perguntas e respostas frequentes da entrevista de DevOps

O que é DevOps para você?

DevOps é uma abordagem que visa melhorar o trabalho em todo o ciclo de vida de desenvolvimento de software. O processo de DevOps é descrito como um loop infinito, compreendendo os estágios de planejamento, codificação, construção, teste, liberação, implantação, operação e monitoramento.

O DevOps influencia o ciclo de vida do aplicativo em todas as fases de planejamento, desenvolvimento, entrega e operação. Cada fase depende das outras, e as fases não são específicas para uma função. Em uma verdadeira cultura DevOps, cada função está envolvida em cada fase em algum grau.

Por que o DevOps é importante?

As equipes que adotam uma abordagem DevOps tendem a concluir seus projetos mais rapidamente. Dessa forma, evitam-se erros de comunicação, facilitando a rápida implementação de melhorias e outras mudanças necessárias. A abordagem DevOps incentiva uma maior colaboração entre as equipes de desenvolvimento e operações, onde os objetivos de todas elas estão mais alinhados. Você pode resumir alguns dos benefícios da seguinte forma:

  • Comunicação aprimorada
  • Trabalho em equipe e coesão
  • Colaboração aprimorada
  • Entrega mais rápida de produtos de qualidade
  • Complexidade reduzida e resolução rápida de problemas
  • Maior escalabilidade e flexibilidade para adicionar novo código
  • Ambientes operacionais mais estáveis
  • Maior automação
  • Redução de custos e utilização de recursos
  • Segurança através de ferramentas integradas e automatizadas

Quais são as tarefas diárias do DevOps?

Algumas das tarefas diárias que você poderia mencionar são:

  • Garanta integração e implantação contínuas
  • Atribuir e comunicar tarefas a serem executadas
  • Projete e solicite protocolos de teste
  • Monitoramento e coleta de métricas de infraestrutura e aplicativos
  • Análise dos resultados obtidos em cada fase de desenvolvimento
  • Reduza a taxa de erros e o tempo de recuperação em caso de erros
  • Reduza o tempo de entrega

Como o DevOps ajuda os desenvolvedores?

Quando uma metodologia DevOps é implementada, os desenvolvedores não precisam mais esperar pelo feedback da equipe de operações para corrigir bugs em seu código. Mas agora, eles podem resolver esses problemas mais rapidamente porque têm feedback contínuo sobre seu código.

O que é controle de versão?

O controle de versão é uma prática que nos permite acompanhar as alterações que fazemos em um arquivo ou conjunto de arquivos ao longo do tempo para que versões específicas possam ser recuperadas posteriormente. Uma ferramenta de controle de versão nos permite acompanhar facilmente o andamento do seu trabalho de desenvolvimento e salvar diferentes versões do código-fonte para retornar à anterior conforme e quando necessário. Uma das ferramentas mais utilizadas nesta fase de desenvolvimento de software é o Git.

O que é CI/CD e quais são seus benefícios?

Integração contínua (CI)

A CI combina ferramentas e práticas que facilitam a entrega de software rápido e de alta qualidade. Dessa forma, os gargalos são eliminados e os problemas técnicos são evitados nas fases de lançamento.

Entrega Contínua (CD)

Essa prática automatiza a entrega de alterações de código, garantindo que o código possa ser rapidamente complementado em produção e que os aplicativos funcionem corretamente.

Implantação Contínua (CD)

Diferentemente da entrega contínua, o objetivo dessa prática é que não haja intervenção humana na implantação do software em produção. A publicação de código novo ou alterado para produção é automatizada.

CI/CD implementa DevOps em todo o ciclo de vida do aplicativo. Essas práticas ajudam a melhorar a produtividade nas diferentes fases do processo de desenvolvimento de software, agilizando e automatizando-as.

O que é Monitoramento Contínuo

O monitoramento contínuo é uma prática de DevOps que envolve monitoramento, alerta e ação no código e na infraestrutura. Assim aquele problema que pode surgir na implementação é rapidamente detectado e identificado, reduzindo o tempo na resolução de problemas.

Por que o teste contínuo é importante?

O teste contínuo está automatizando os testes de forma precoce, gradual e apropriada no pipeline de desenvolvimento. É essencial porque permite garantir a qualidade do código. Os erros são detectados antecipadamente e o feedback do código é feito mais rapidamente.

Explique alguns tipos de testes usados ​​no DevOps?

Testes de unidade

Eles testam uma parte específica do código isoladamente. Os testes de unidade não devem estar conectados ao banco de dados, usar o sistema de arquivos, conversar com sistemas externos ou interagir com componentes do sistema. Ele permite que eles sejam executados rapidamente e você obtenha feedback rápido se as alterações interromperem a funcionalidade existente.

Testes de componentes

Eles testam grandes grupos de recursos para que possam identificar problemas como esses. Eles geralmente são mais lentos, exigindo configuração mais complexa e mais E/S conectando a um banco de dados, sistema de arquivos ou outros sistemas.

Testes de implantação

Esses testes verificam se a implantação funcionou, ou seja, se seu aplicativo está instalado, configurado corretamente, pode acessar os serviços que precisar e está respondendo.

Além destes, há também testes de exploração e usabilidade. Para saber mais sobre testes, consulte o artigo sobre tipos de testes de aplicativos.

O que é arquitetura de microsserviços e como ela é diferente da arquitetura tradicional?

O método tradicional de escrever software é monolítico. Isso significa que todas as funções de uma aplicação estão reunidas em um único bloco. Em caso de erros ou necessidade de atualização, é analisado o código que rege todo o produto.

Gera paradas ou até travamentos e representa um grande perigo para a conservação do código. Para os clientes, significa perdas e dores de cabeça.

Em uma arquitetura de microsserviços, as funções de um aplicativo representam um serviço desenvolvido e integrado de forma independente. Os componentes são separados, mas trabalham juntos para executar as tarefas correlacionadas.

Dessa forma, cada serviço independente é executado sem interferir nos demais, o que também se aplica em casos de falha. Se uma função falhar, é possível ajustá-la sem comprometer o funcionamento de todo o aplicativo.

Os microsserviços chegam para tornar o DevOps ainda mais ágil e eficiente, acelerando o desenvolvimento de ponta a ponta e tornando os aplicativos ainda mais escaláveis.

O que é Infraestrutura como código?

Infraestrutura como código é a abordagem para definir a infraestrutura de computação e rede, que usa técnicas de gerenciamento de código-fonte e é tratada como qualquer sistema de software.

Este código pode ser mantido no controle de origem para permitir a audibilidade e a construção reproduzível, sujeito a práticas de teste e a total disciplina de Entrega Contínua.

A infraestrutura como código é baseada em algumas práticas:

  • Usar arquivos de definição
  • Sistemas e processos autodocumentados
  • Versão de todos os elementos
  • Testar continuamente sistemas e processos
  • Pequenas alterações em vez de lotes
  • Mantenha os serviços disponíveis continuamente

As ferramentas de automação de compilação especificam como o software deve ser construído (quais etapas precisam ser executadas e em que ordem) e quais dependências são necessárias (que outro software precisa estar presente para que a compilação seja bem-sucedida).

Algumas ferramentas são mais adequadas para projetos em linguagens de programação específicas, como Maven e Apache’s Ant, que, embora a tecnologia possa ser utilizada com outras linguagens, são mais utilizadas em projetos Java. Outros, como Hudson ou Jenkins, podem ser usados ​​mais amplamente em vários projetos.

O que é um pipeline de DevOps?

O pipeline de DevOps é um processo que engloba várias etapas antes do lançamento de um novo software. Ele pode ser aplicado em todas as fases do projeto, desde a integração e testes até a entrega e implantação. Em geral, passa pelas seguintes etapas e equipes:

  • Visão do Produto: define as características do produto;
  • Dev Team: desenvolve de forma iterativa e incremental;
  • Área de atuação: implementa e mantém ambientes estáveis;
  • Monitoramento e feedback: buscam gerar valor e uso pelo cliente.

Quais são os diferentes estágios de um pipeline de CI/CD?

As etapas que compõem um pipeline de CI/CD são algumas tarefas agrupadas chamadas de estágio de pipeline. Resumidamente, são eles:

  • Compilação: etapa em que o aplicativo é compilado;
  • Teste: o estágio em que o código é testado. Aqui, a automação economiza tempo e esforço;
  • Launch: quando o aplicativo é enviado para o repositório;
  • Implantação: O código é implantado no ambiente de produção;
  • Validação e conformidade: você pode usar ferramentas de verificação de segurança de imagem como Clair para garantir a qualidade de suas imagens comparando-as com vulnerabilidades conhecidas (CVEs).

Esses são os estágios mais comuns do pipeline de DevOps. No entanto, cada empresa tem suas necessidades e pipeline específicos.

O que significa virtualização de plataforma e quais são seus benefícios?

A virtualização de plataforma significa simular um sistema de computador inteiro para executar várias instâncias de sistemas operacionais simultaneamente em uma única máquina física.

Nessa configuração, um monitor de máquina virtual (VMM), ou hypervisor, tem controle total dos recursos de hardware da máquina física. Os sistemas operacionais convidados são executados em máquinas virtuais, que o VMM gerencia. A virtualização de ambiente envolve a simulação de uma ou mais máquinas virtuais e as conexões de rede entre elas.

A virtualização pode ajudar a reduzir o tempo gasto na implantação e os riscos associados a ela de várias maneiras. O uso de máquinas virtuais na implantação é uma grande ajuda para obter um gerenciamento de configuração eficaz vertical e horizontalmente em seus sistemas.

Em particular, o uso da virtualização traz os seguintes benefícios:

  • Resposta rápida às mudanças de requisitos
  • Consolidação
  • estandardização
  • Facilidade de manutenção de linhas de base

Qual é a diferença entre contêineres e máquinas virtuais?

Tanto o Container quanto a VM trabalham com virtualização e isolamento de ambientes para promover o processamento independente das aplicações. Ainda assim, os Containers criam ambientes isolados onde diferentes aplicações podem rodar simultaneamente porque a divisão é feita ao nível dos recursos disponíveis, como memória e processamento. Por outro lado, a Máquina Virtual permite que uma máquina física abrigue outras com diferentes sistemas operacionais, discos rígidos e hardwares independentes dos originais.

Qual é a principal diferença entre o Docker e o Kubernetes?

O Docker é uma das ferramentas de contêiner de DevOps mais usadas. Centra-se na portabilidade das aplicações, colocando-as em contentores tecnológicos e sistemas de embalagem e movendo-as entre diferentes plataformas.

Ao mesmo tempo, o Kubernetes é uma ferramenta de orquestração de contêineres que pode agrupar contêineres por categorização lógica. Ele pode ser implantado em vários computadores por meio de distribuição automatizada.

Leia mais sobre Kubernetes vs. Janela de encaixe.

Quais são algumas métricas de telemetria no DevOps?

  • Nível de negócios: os exemplos incluem o número de transações de vendas, receita de transações de vendas, inscrições de usuários, taxa de cancelamento e resultados de testes A/B.
  • No nível do aplicativo: os exemplos incluem tempos de transação, tempos de resposta do usuário e falhas do aplicativo.
  • Nível de infraestrutura: os exemplos incluem tráfego do servidor web, carga da CPU e uso do disco.
  • Nível de software cliente: Exemplos incluem erros de aplicativos, travamentos e tempos de transação medidos pelo usuário.
  • Nível do pipeline de implantação: os exemplos incluem status do pipeline de compilação (vermelho ou verde para vários conjuntos de testes automatizados), alteração dos prazos de implantação, frequências de implantação, promoções do ambiente de teste e status do ambiente.

Quais tecnologias você usa para fazer DevOps?

Esta questão tem como objetivo saber quais tecnologias você pode utilizar para implementar a cultura DevOps dentro da organização. Algumas das tecnologias mais comuns que um DevOps pode usar são:

  • Desenvolvimento contínuo: Git, SVN, Mercurial, CVS, Jira
  • Integração contínua: Jenkins, Bamboo, Hudson
  • Desenvolvimento contínuo: Nexus, Archive, Tomcat
  • Implantação contínua: Puppet, Chef, Docker
  • Monitoramento contínuo: Splunk, ELK Stack, Continuous Nagios
  • Testes: Selenium, Katalon Studio

Conte-nos sobre sua experiência gerenciando projetos de DevOps

As habilidades de DevOps não são apenas sobre conhecimento técnico e exigem habilidades humanas e gerenciais geralmente encontradas entre gerentes, diretores de programas e gerentes de projeto.

É essencial saber gerenciar e suportar mudanças, fornecer um gateway para facilitar a transferência de novas versões de código para o lado das operações, avaliar e monitorar as diversas plataformas e ferramentas para medir o desempenho e analisar e compartilhar resultados para melhorar as entregas futuras , etc

Aborde essa questão com metodologia e explique sua jornada na resolução de problemas complexos. Como tenciona fazer para melhorar o funcionamento das infra-estruturas? Como você planeja colaborar com desenvolvedores de front, middle e back-office? Quais ferramentas de monitoramento você domina? Além disso, considere compartilhar suas experiências de resolução de conflitos com sua equipe.

Para saber mais, considere se inscrever em um desses cursos de DevOps.