Como selecionar as habilidades mais importantes do DevOps

Publicado: Última actualização:
Triagem de competências DevOps

Há poucas coisas na programação tão imprecisas como o DevOps. O próprio nome está até em disputa com SysOps e SRE também maneiras populares de descrever o campo. Não só isso, há nenhum pacote padrão das habilidades do DevOps.

O papel situa-se algures entre o de um programador de software e o de um engenheiro de operações, pelo que a triagem é altamente específica para as competências exactas que o empregador procura. Então, como você seleciona as habilidades do DevOps? Para ter uma ideia melhor disto, é importante começar pelo início.

O que é DevOps?

O ciclo de Competências DevOps

Fonte: Irma Kornilova

Criado para apoiar o desenvolvimento ágil de software, um engenheiro DevOps está algures entre um programador de software tradicional e um engenheiro de operações. Como Ernest Mueller define-o,


Ernset Mueller fala sobre as habilidades DevOpsDevOps é a prática dos engenheiros de operações e desenvolvimento que participam juntos em todo o ciclo de vida do serviço, desde a concepção, passando pelo processo de desenvolvimento, até ao apoio à produção.

Fonte: o administrador ágil

Fonte da imagem: o administrador ágil


Antigamente, os desenvolvedores construíam um produto e o davam às operações para implementá-lo. Se algo desse errado, as operações faziam um ticket de suporte e o enviavam de volta para os desenvolvedores que criavam uma correção e depois o enviavam de volta para as operações. Esta era uma abordagem muito siloada, que era tão lenta quanto rígida.

DevOps desafia esta abordagem ao reunir a equipe de desenvolvimento e a equipe de operações para criar, implantar, manter e melhorar continuamente as aplicações. E isso traz grandes recompensas. Marionetes Relatório sobre o estado do DevOps em 2017 descobriu que os grandes executantes (que instituíram o DevOps) têm,

  • 46 implementações de códigos vezes mais frequentes
  • 440 vezes mais rápido tempo de execução do compromisso para a implantação
  • 96 vezes mais rápido tempo médio para recuperar do tempo parado
  • 5 vezes menor taxa de falha de mudança (as mudanças são 1/5 como prováveis de falha)

Tudo isto é comparado com organizações que não usam DevOps.

Para que habilidades DevOps um recrutador deve fazer uma triagem?

Ao contrário de outras posições de engenharia de software que têm um conjunto definido de habilidades e foco, o DevOps é um pouco mais difícil de fixar. Como aponta Mike Dilworth:


Mike Dilworth fala sobre DevOps SkillsDevOps é uma cultura, não um papel! Toda a empresa precisa de estar a fazer DevOps para que funcione.

Fonte: Irma Kornilova

Fonte da imagem: AngelList


Por outras palavras, você precisa de contratar tanto para a especialização técnica específica do domínio, bem como a capacidade de apoiar e prosperar na cultura ágil em que a DevOps opera. Como resultado, um engenheiro DevOps precisa de ter alguma combinação destas competências:

Colaboração/ habilidades suaves

Um engenheiro DevOps é antes de mais nada um membro de uma equipa. Não é um papel que encoraje a destacar-se como um indivíduo. Pelo contrário, apoia o trabalho em conjunto para manter a iteração e melhorar um produto. Como diz Alan Zucker, diretor do Project Management Essentials,


Alan Zucker fala sobre as habilidades DevOpsOs grandes engenheiros DevOps começam por compreender as pessoas, a cultura, e como a organização funciona (...) Em seguida, constroem uma estratégia que se concentra na simplificação do ambiente operacional geral para alcançar o objectivo de entrega contínua.

Fonte: TechRepublic

Fonte da imagem: LinkedIn


Um conhecimento de ferramentas e tecnologias

Existem muitas ferramentas e tecnologias que poderiam ser utilizadas por um engenheiro DevOps. E muitas vezes são essenciais para manter os conceitos centrais do DevOps. É importante ver se o seu candidato conhece as tecnologias que utiliza e é capaz de aprender novas tecnologias conforme necessário.

Gerenciamento da configuração

Isto significa ser capaz de configurar muitos sistemas usando ferramentas de automação.

Um engenheiro DevOps precisa ser capaz de usar ferramentas e scripts para poder implantar e manter o aplicativo enquanto eles resolvem quaisquer problemas que surjam ao longo do caminho. Dependendo das especificidades do cargo, as habilidades de gerenciamento de segurança também podem ser importantes a serem procuradas.

Embora as ferramentas de gerenciamento de configuração sejam apenas uma parte da caixa de ferramentas que um engenheiro DevOps utiliza, esta é uma área que pode ser facilmente testada, revelando muito sobre o candidato ao longo do caminho.

Métodos de rastreio de competências DevOps

Uma vez que as habilidades do DevOps variam tanto, a combinação de alguns métodos de tela diferentes lhe trará os melhores resultados.

Verifique os currículos dos seus candidatos para as competências DevOps

Um currículo ou tela de currículo é provavelmente a primeira coisa que a maioria dos recrutadores fará para reduzir o número de candidatos. Preparamos um pequeno glossário para ajudar os recrutadores a entender o que eles estão procurando.

Glossário de competências DevOps para recrutadores de tecnologia

Metodologias Agile, DevOps, Entrega contínua, Integração contínua, Microserviços, Desenvolvimento orientado a testes (TDD), Infra-estrutura como código
Linguagens de Scripting Bash, Python, Ruby, Perl, PHP
Automação da Infra-estrutura Fantoche, Chef, Possível, Sal, Terraformação, NuvemFormação
Gestão do código fonte Git, Mercurial, Subversion
Serviços em nuvem AWS, Azure, Google Cloud, OpenStack
Orquestração Kubernetes, Mesos, Enxame, Nómada
Contêineres LXD, Docker, rkt
Gestão de Projectos Jira, Trello, Asana, Phabricator, Bugzilla
Integração e Entrega Contínua CruiseControl, Jenkins, Bamboo, Travis CI, GoCD, Team Foundation Server, Team City, CircleCI
Testes TestComplete, TestingWhiz, Serverspec, Testinfra, InSpec, Consumer Driven Contracts
Monitorização Prometheus, Nagios, Icinga, Zabbix, Splunk, ELK Stack, collectd, CloudWatch, Open Zipkin

Uma vez feito o CV, há duas habilidades principais que podem ser testadas usando uma plataforma de testes automatizada.

Se você é um engenheiro que está implantando código ou um operador que o mantém ativo, ser capaz de configurar seu servidor é uma habilidade essencial. Mas esta habilidade pode ser dividida em duas partes. A primeira é o gerenciamento da configuração, enquanto a segunda é colocar isso em uso na configuração de uma máquina. E como você vai ver, ambas as habilidades requerem ferramentas diferentes para testá-las efetivamente.

Gestão da configuração As capacidades de DevOps requerem um teste de codificação

Um dos principais pontos de dor de um engenheiro DevOps é a gestão manual de diferentes configurações de servidor. Isto pode ser um grande problema, pois transforma os engenheiros em algo mais como um bombeiro de operações do que alguém que constrói e implementa aplicações. Portanto, uma habilidade chave de um grande engenheiro DevOps é a habilidade de multiplicar sua eficácia escrevendo código de gerenciamento de configurações.

Dito de outra forma por Adam Kadzban, engenheiro líder da DevOps na kCura,


Adam Kadzban fala sobre as habilidades do DevOpsOs dias de sistemas de infra-estrutura configurados manualmente acabaram (...) A infra-estrutura precisa ser provisionada e configurada com código, ou você vai se afogar em suporte.

Fonte: TechRepublic

Fonte da imagem: LinkedIn


A raiz desta atitude é o fato de que muitas tarefas manuais podem ser automatizadas usando ferramentas dedicadas como Puppet e Chef ou mesmo com linguagens de scripting como Python, Ruby e Bash. Então a questão torna-se qual é a melhor maneira de testar essas habilidades?

Um teste de amostra de trabalho é a melhor maneira de verificar as habilidades de escrita

Um código fantoche não é simplesmente um algoritmo. Em vez disso, é um aplicativo que regula o sistema. Por causa disso, um teste de amostra de trabalho é provavelmente a melhor maneira de testar as habilidades certas. Nós exploramos a eficácia de testes da amostra de trabalho em outro lugar neste blog e como usá-los para problemas comuns de codificação, mas como podem ser aplicados para escrever o código Puppet para gerenciamento da configuração?

Um bom lugar para começar é olhar para o processo pelo qual você precisa passar para escrever um código de automação. É realmente muito simples,

  1. Descrever a configuração em código
  2. Faça testes contra ele

A primeira coisa que o seu candidato precisa de fazer é descrever a configuração em código. Então diga que você quer que eles queiram criar um módulo Puppet para um servidor de arquivos. Esta é uma tarefa DevOps bastante simples que pode ser transformada em um teste de amostra de trabalho bastante simples, como nesta tarefa:

Tarefa de servidor de arquivos de fantoches para testar as habilidades DevOpsNão há problema em ter um esqueleto de módulo pré-fabricado para apontar o seu candidato na direção certa e depois definir como você quer que o servidor de arquivos seja configurado. Quando feito com uma plataforma como o DevSkiller, o código de automação que é produzido pode ter testes unitários executados contra ele para que você possa verificar a robustez do código e encontrar quaisquer falhas.

E não é só o Puppet que pode ser testado desta forma. Com o construtor de testes DevSkiller, seu líder técnico pode construir tarefas de script em múltiplas tecnologias, incluindo Chef, Bash, Python, Ruby, e Go. Este teste irá dar-lhe uma forte indicação de como um Engenheiro de DevOps pode maximizar a sua eficiência.

Se um engenheiro DevOps puder automatizar tarefas de forma eficaz, poderá então passar para tarefas de nível superior, tais como a implementação de novas funcionalidades. Não só isso, mas quando você começar a testar as habilidades de codificação, você pode passar para outras funções DevOps, como testar controles de git e escrever código como infra-estrutura.

Mas escrever código de automação é apenas parte do puzzle. Mais cedo ou mais tarde, um engenheiro DevOps vai ter que realmente configurar uma máquina. Isto é um problema, pois a maioria das empresas não se sente confortável com um candidato obtendo o controle de um dos seus servidores. Afinal de contas, pense no caos que eles podem causar ao seu sistema. Mas o que seria ainda pior se você contratasse alguém sem saber se ele pode realmente configurar um servidor sem que o pior aconteça.

Testar as habilidades de configuração do sistema DevOps com uma máquina virtual

Um desafio de codificação pode testar como um script funciona, mas você precisa de uma máquina real para ver se um Engenheiro DevOps pode configurar um sistema. Isto é porque os servidores não são como um programa.

Então como você pode testar se um engenheiro DevOps pode configurar um servidor sem usar um de seus próprios servidores? Use uma máquina virtual. Estes são sistemas autónomos, completamente separados de qualquer um dos seus sistemas críticos, que lhe permitem fazer praticamente tudo o que quiser. E são ambientes perfeitos para ver se o seu engenheiro DevOps pode gerir todas as diferentes entradas, alterações e problemas que enfrentam ao configurar um sistema.

Rootskiller dá-lhe uma janela para a habilidade DevOps do seu candidatos

O Rootskiller pode ser usado para testar as habilidades DevOpsNo seu coração, o Rootskiller é uma máquina virtual. Como qualquer computador, você pode dar-lhe comandos, configurar programas nele, e até mesmo executá-lo no chão se você quiser. Ao mesmo tempo, ele responde como qualquer outro sistema, processando suas configurações enquanto reage a comandos mal executados e dados externos. Então, como é que isto o ajuda a testar o DevOps?

Aceita uma tarefa como esta:

Tarefa do Docker para testar as habilidades DevOpsTodas as tecnologias envolvidas são tecnologias comuns que um engenheiro DevOps utilizará para uma implantação contínua. GNU/Linux é um dos sistemas operacionais mais utilizados no lado do servidor e Docker é uma ferramenta comum utilizada para a contenção. Estes são uma parte essencial de uma implantação contínua, um dos principais pilares do DevOps.

Assim, após iniciar a máquina virtual, o candidato irá configurar o servidor de acordo com as instruções apresentadas, mas isso não é tudo. Após a tarefa ser resolvida, os testes são executados na configuração que o candidato criou, verificando se funciona, quais bugs estão presentes, se resolve os casos de borda relevantes, e quão estável ele é.

Além de analisar a solução real, a sessão inteira é gravada para um vídeo de captura de tela. Desta forma, um entrevistador técnico pode ver as escolhas que o candidato faz e ver como ele reage aos novos desafios.

Enquanto a questão aqui é sobre a configuração do Docker em uma máquina GNU/Linux, a ferramenta de construção de testes significa que você pode configurar isso para muitas tecnologias do lado do servidor e técnicas de implantação como pilha LAMP.

O que fazer a seguir

Depois de ter feito uma tela de currículo, testado as habilidades de roteiro do seu candidato e visto como ele pode configurar um sistema, traga os melhores candidatos para uma entrevista. Isto pode envolver uma combinação de emparelhamento de códigos e questões comportamentais.

Mas antes de o fazer, confira. DevSkiller para ver o quão fácil é fazer uma triagem automática das habilidades do DevOps.

Partilhar correio

Saiba mais sobre a contratação de tecnologia

Subscreva o nosso Centro de Aprendizagem para obter informações úteis directamente na sua caixa de entrada.

Verificar e desenvolver as habilidades de codificação sem problemas.

Veja os produtos DevSkiller em ação.

Certificações de segurança e conformidade. Certificamo-nos de que os seus dados estão seguros e protegidos.

Logotipo DevSkiller Logotipo TalentBoost Logotipo TalentScore