Interessado em saber quais perguntas serão feitas na sua próxima entrevista para uma vaga em DevOps? Este guia prático é um ótimo ponto de partida.
O termo DevOps surgiu por volta de 2007-2008 e, desde então, se tornou uma das carreiras mais procuradas na área de engenharia de software. DevOps representa uma mudança cultural que impacta todas as fases do desenvolvimento e das operações.
As equipes de desenvolvimento e operações colaboram em conjunto, desde o planejamento inicial e construção, até o monitoramento e aprimoramento contínuo. As questões a seguir são comuns em processos seletivos para engenheiros de DevOps.
O Que É DevOps?
DevOps é uma abreviação para desenvolvimento e operações. É uma prática de engenharia de software que une as equipes de desenvolvimento e operações para automatizar todas as etapas de um projeto. Uma equipe DevOps foca na gestão de recursos, comunicação eficaz e colaboração.
Quais São As Diferentes Fases Da Metodologia DevOps?
- Desenvolvimento Contínuo: É a fase inicial, onde se realiza o planejamento e a codificação.
- Integração Contínua: Nesta etapa, a equipe de desenvolvimento integra os diferentes componentes, assegurando que o código permaneça funcional e sem falhas.
- Testes Contínuos: Esta fase envolve a realização de testes automatizados e pré-programados.
- Implantação Contínua: Garante que o desenvolvimento ocorra sem problemas, sem afetar o desempenho geral da aplicação.
- Monitoramento Contínuo: Nesta fase, avalia-se a eficácia geral da aplicação.
- Feedback Contínuo: Problemas e desempenho relatados pelos usuários finais são analisados para melhorias.
- Operações Contínuas: Permite que os desenvolvedores criem versões aprimoradas do produto e detectem problemas rapidamente.
Quais São Os Benefícios Do DevOps?
- Entrega de produto mais rápida e com maior qualidade.
- Maior capacidade de escalabilidade.
- Solução de problemas de forma ágil.
- Utilização otimizada de recursos.
Mencione Alguns KPIs de DevOps
- Frequência de implantação.
- Volume de alterações.
- Tempo de implantação.
- Taxa de falhas em implantações.
- Tempo de detecção de incidentes.
- Taxa de defeitos que escaparam para produção.
Diferença Entre DevOps e Agile
DevOps é uma cultura que incentiva a colaboração entre todos os membros da equipe envolvidos no desenvolvimento e manutenção de software.
Agile é uma metodologia de desenvolvimento criada para aumentar a produtividade das equipes e impulsionar os lançamentos com base nas necessidades em constante mudança.
Qual O Papel Da AWS No DevOps?
A AWS oferece um conjunto de serviços flexíveis que auxiliam as empresas no desenvolvimento de aplicações de forma rápida e confiável. Os serviços da AWS simplificam a implantação de código, o provisionamento e a simplificação da infraestrutura, a automatização dos processos de lançamento de software e o monitoramento do desempenho da infraestrutura.
Qual É A Utilidade Do SSH?
SSH (Secure Shell) é um protocolo que estabelece uma conexão segura entre diferentes computadores. O SSH é utilizado para: autenticação robusta, criptografia forte, manutenção da integridade da conexão e segurança.
O Que É Integração Contínua?
A integração contínua permite que os desenvolvedores de software combinem seu código em um repositório central. O código é então processado através de compilações e testes automatizados.
O Que É Gerenciamento De Configuração?
É um processo de engenharia de sistemas para estabelecer e manter a consistência do desempenho de um sistema/produto, bem como seus atributos funcionais e físicos, ao longo de seu ciclo de vida.
O Que É Teste Contínuo?
É a realização de testes automatizados e programados de uma aplicação durante o seu processo de desenvolvimento.
O Que É Git?
É uma ferramenta de código aberto e gratuita para gerenciamento de código-fonte. O Git foi projetado para lidar com projetos de qualquer tamanho, pequenos ou grandes.
Mencione Alguns Comandos Básicos Do Git
git clone <https://link-do-repositorio>
git branch <nome-da-branch>
git checkout <nome-da-sua-branch>
git add <arquivo>
git commit -m "mensagem do commit"
git push <remoto> <nome-da-branch>
git pull <remoto>
Explique A Diferença Entre Git Merge e Git Rebase
O comando Git merge permite que desenvolvedores unam diferentes branches do Git, mantendo os registros de commits de cada branch intactos.
O comando Git rebase permite que desenvolvedores integrem mudanças de uma branch para outra, alterando os registros de commits após o processo.
Explique A Diferença Entre Git Fetch e Git Pull
Git fetch instrui o git a obter/verificar os metadados mais recentes do repositório remoto. No entanto, não realiza nenhuma transferência de arquivo, apenas a verificação.
Git pull verifica e traz as alterações do repositório remoto para o projeto local.
O Que É Um Conflito De Mesclagem?
Conflitos de mesclagem ocorrem ao unir duas branches com commits concorrentes. Geralmente, acontecem quando diferentes desenvolvedores modificam a mesma linha de código ou arquivo.
O Que É Controle De Versão e Quais São Os Diferentes Tipos?
Controle de versão (controle de origem) é o processo de rastreamento e gestão das mudanças no código de software.
Os diferentes tipos de controle de versão são:
- Centralizado: Tem uma única cópia “central” do código-fonte em um servidor, e todas as alterações são confirmadas nessa cópia central. Subversion (SVN) e Perforce são exemplos de controles de versão centralizados.
- Distribuído (DVCS): Não possui um servidor central para armazenar todos os arquivos do projeto. Git e Mercurial são exemplos de DVCS.
Quais São Os Benefícios De Usar O Controle De Versão?
- Auxilia os desenvolvedores a manter a eficiência e a agilidade.
- Fornece um registro completo de todas as alterações em um projeto/arquivo.
- Melhora a rastreabilidade.
- Auxilia no gerenciamento de mesclagens e ramificações.
- Facilita a colaboração.
O Que É Ramificação?
Ramificação se refere à criação de uma nova versão, separada, do repositório principal. Permite que você trabalhe em várias partes do projeto sem impactar a branch principal.
O Que São Estratégias De Ramificação?
Estratégias de mesclagem são as metodologias adotadas pelas equipes de desenvolvimento de software ao escrever, mesclar e implementar código. Essa abordagem garante que bugs e erros sejam corrigidos em uma fase de ramificação, antes de serem incorporados ao projeto principal.
O Que É Teste De Automação e Como Automatizar Testes Em DevOps?
O teste de automação é uma técnica de revisão e validação automática do código. O objetivo é verificar se os padrões de qualidade para funcionalidade, estilo de código e experiência do usuário foram atendidos.
O teste de automação é realizado utilizando ferramentas como Selenium e Katalon.
O Que É Jenkinsfile?
Jenkinsfile é um arquivo de texto que contém a definição de um pipeline Jenkins. É armazenado no repositório de controle de origem. Seus usos incluem: fornecimento de trilha de auditoria para o pipeline, permitindo revisão de código e iteração no pipeline, e oferecendo uma única fonte de verdade para o pipeline.
Explique A Arquitetura Em Jenkins
Jenkins utiliza uma arquitetura mestre-escravo. Isso significa que diversos ‘escravos’ trabalham para um ‘mestre’. O Jenkins Distributed Build permite, assim, executar testes idênticos em diferentes ambientes, com os resultados coletados e combinados no nó mestre para monitoramento.
Quais São Os Principais Plugins Do Jenkins?
- Plugin Blue Ocean para Jenkins
- Plugin Mailer para Jenkins
- Plugin Git para Jenkins
- Plugin Jira para Jenkins
- Plugin Docker para Jenkins
- Plugin de Integração Maven para Jenkins
- Plugin do Kubernetes para Jenkins
- Plugin SonarQube para Jenkins
- Plugin Amazon EC2 para Jenkins
O Que É Selenium IDE?
O Selenium IDE é uma ferramenta que registra as interações do navegador para casos de teste. Ele permite definir pontos de interrupção e analisar variáveis quando ocorrem erros.
Quais São Os Diferentes Componentes Do Selenium?
Selenium WebDriver, Selenium IDE e Selenium Grid.
Quais São Os Diferentes Tipos De Teste No Selenium?
- Teste de ponta a ponta
- Teste de regressão
- Teste de sistema
- Teste de desempenho
- Teste de compatibilidade
Quais São As Diferentes Exceções No Selenium?
- ElementNotSelectableException
- NoAlertPresentException
- InvalidSelectorException
- NoSuchSessionException
- StaleElementReferenceException
- NoSuchWindowException
- NoSuchFrameException
- NoSuchElementException
- TimeoutException
- ElementNotVisibleException
O Que São driver.close() e driver.quit() No WebDriver?
O comando driver.close() encerra a janela do navegador em foco. Se apenas um navegador estiver aberto, ele encerra toda a sessão do navegador.
O comando driver.quit() encerra toda a sessão do navegador, incluindo pop-ups, abas e janelas.
O Que É Um Dockerfile?
Dockerfile é um documento de texto que contém todos os comandos que um usuário pode utilizar em uma linha de comando para construir uma imagem.
Diferenças Entre Imagens Docker e Contêiner Docker
Imagens Docker são modelos somente leitura criados com códigos-fonte, ferramentas, bibliotecas, dependências externas e outros arquivos necessários para que qualquer aplicação seja executada com sucesso em qualquer sistema operacional ou plataforma.
Um contêiner Docker é uma instância que executa modelos de imagem Docker.
Explique A Arquitetura Do Docker
O Docker segue uma arquitetura cliente-servidor e compreende Docker Client, Docker Host e Docker Registry.
O Docker Client utiliza APIs e comandos REST para se comunicar com o servidor (Docker Daemon). O Docker Client usa CLI para executar estes comandos:
docker build
docker pull
docker run
- O Docker Host fornece um ambiente para executar aplicações, composto por daemon docker, armazenamento, imagens, contêineres e redes.
- O Docker Registry gerencia e armazena imagens do Docker.
Plataformas De Nuvem Que Suportam Docker
As plataformas que suportam hospedagem Docker são: Amazon ECS, Google Kubernetes Engine, Microsoft Azure Container Service, Docker Hub, Docker Cloud.
O Que É Nagios?
Nagios é uma ferramenta que monitora toda a infraestrutura de TI para garantir o funcionamento correto de processos de negócios, sistemas, serviços e aplicativos.
Como O Nagios Funciona?
- Monitoramento: A equipe de TI configura o Nagios para monitorar protocolos de rede, métricas de sistema, aplicações, infraestrutura de rede, serviços e servidores.
- Alertas: O Nagios envia alertas quando componentes críticos falham. Os alertas podem ser por SMS, código personalizado ou e-mails.
- Resposta: A equipe de TI reconhece alertas e toma as ações necessárias.
- Relatórios: São gerados relatórios que fornecem um histórico de notificações, interrupções, respostas a alertas e eventos para análise posterior.
- Manutenção: O tempo de inatividade programado impede que alertas sejam enviados durante a manutenção.
Mencione Alguns Plugins No Nagios
- Plugins oficiais do Nagios, desenvolvidos e mantidos pela equipe oficial.
- Plugins personalizados, escritos por pessoas/empresas para atender necessidades específicas.
- Plugins da comunidade, desenvolvidos por membros da comunidade Nagios.
Explique A Virtualização Com O Nagios
O Nagios oferece a capacidade de monitorar diversas métricas em várias plataformas de virtualização. O Nagios pode ser executado em diferentes plataformas de virtualização, como Xen, Amazon EC2, VMware e Microsoft Virtual PC.
Como O Nagios Auxilia No Monitoramento?
O Nagios utiliza agentes como NRPE, check_mk ou SNMP para coletar estatísticas em seu servidor e enviar um alerta se as métricas excederem o limite predefinido.
Quais Números De Porta O Nagios Utiliza Para Fins De Monitoramento?
SNMP, portas 161 e 162
O Que É Um Analisador De Rede Nagios?
O analisador de rede Nagios é um software de análise de dados sflow que permite aos usuários resolver proativamente comportamentos anormais, interrupções e ameaças à segurança antes que elas interrompam as operações de negócios. Essa ferramenta oferece uma visão expandida do tráfego de rede e da infraestrutura de TI.
Variáveis Que Afetam Herança e Recursão No Nagios
- Name (nome): Um modelo ‘nome’ que pode herdar as variáveis/propriedades do objeto.
- Use (usar): Especifique o nome do objeto do modelo do qual você deseja herdar variáveis/propriedades.
- Register (registrar): Indica se o nome do objeto de modelo deve ser ‘registrado’ no Nagios.
O Que É Puppet?
Puppet é uma ferramenta de código aberto para gerenciamento e implementação de configuração de software.
O Que É Um Manifesto Do Puppet?
O manifesto do Puppet é um arquivo que contém a linguagem de configuração do Puppet e descreve como os recursos devem ser configurados.
Qual É O Código Do Puppet?
O código Puppet é declarativo, o que significa que você o descreve usando o estado desejado do seu sistema, e não os passos necessários para chegar lá.
O Que É Chef?
Chef é uma ferramenta de gerenciamento de configuração que transforma infraestrutura em código. Essa ferramenta se concentra em escrever código em vez de realizar processos manualmente.
Como Funciona O Chef?
O trabalho do Chef começa quando os administradores ou desenvolvedores de sistemas definem as tarefas a serem automatizadas. Os cookbooks e recipes (pequenos programas escritos em uma linguagem específica de domínio) são então capturados e testados utilizando ferramentas como Test Kitchen, ChefSpec e Foodcritic.
Se os cookbooks e recipes funcionam como esperado, eles são implementados no servidor Chef utilizando ferramentas de linha de comando knife e chef. Um processo de implantação do Chef envolve um servidor Chef, estações de trabalho e nós. Você pode escolher entre mais de 3.000 modelos de cookbooks e personalizá-los de acordo com suas necessidades. O Chef se encarregará do resto do trabalho.
Resumo
De acordo com o Glassdoor, o salário médio de um engenheiro de DevOps é de US$104.281 por ano nos EUA. Embora DevOps seja uma carreira relativamente nova, é cada vez maior o número de empresas contratando para essa função, e vários cursos estão sendo oferecidos para capacitar profissionais com as habilidades necessárias. As perguntas apresentadas neste artigo são comuns em entrevistas para vagas em DevOps.
Você também pode explorar alguns cursos online de qualidade para aprender DevOps.