O que é um engenheiro DevOps e como treiná-lo?

Profissional deve entender as ferramentas, e também a filosofia e os processos que fazem o DevOps funcionar

Author Photo
8:00 am - 26 de março de 2019

Devops é uma cultura e uma filosofia que, em poucas palavras, tem como objetivo unificar os silos anteriormente separados de desenvolvimento (as pessoas que criam aplicativos) e de operações (as pessoas que garantem que esses aplicativos estão funcionando da maneira que deveriam) em uma única equipe. Essa equipe usa integração contínua, entrega contínua e testes contínuos para liberar melhorias incrementais frequentes na base de código existente.

Logicamente, então, um engenheiro DevOps é alguém com as habilidades necessárias para servir em tal equipe. Um papel difícil de definir. Algumas pessoas chegam a afirmar que o termo “engenheiro DevOps” não é uma descrição de trabalho significativa. No entanto, mais e mais empresas estão dizendo que querem contratar engenheiros DevOps. Vamos ver o que elas estão procurando.

Descrição de cargo

Implementar uma filosofia DevOps não significa que você esteja substituindo todas as suas equipes de desenvolvimento e operações por uma massa indiferenciada de funcionários DevOps. Funcionários diferentes terão habilidades diferentes. Haverá programadores, administradores de sistemas, DBAs e assim por diante, todos trabalhando juntos.

Quando as empresas usam o termo engenheiro DevOps, elas querem alguém que possa ajudar a unir todas essas funções.

O blog da empresa de engenharia de software Altexsoft descreve o papel desta forma :

Alguns consideram essa pessoa um administrador do sistema que sabe codificar ou um desenvolvedor com as habilidades do administrador do sistema. De certa forma, ambas as definições são justas. A principal função de um engenheiro de DevOps é introduzir o fluxo de trabalho de entrega contínua e integração contínua, o que requer a compreensão das ferramentas [DevOps] e o conhecimento de várias linguagens de programação.

Ou, como o desenvolvedor Igor Kantor colocou em um post do Medium, um engenheiro do DevOps é  “alguém que entende o ciclo de vida de desenvolvimento de software e traz ferramentas e processos de engenharia de software para resolver desafios clássicos de operações”. A chave é ter conhecimento e experiência suficientes de Dev e de ops para entender como eles podem trabalhar juntos – mais as soft skills para ajudar os membros da equipe mais especializados se conectar uns com os outros e entender o mundo além de seu silo.

Se você quiser ter uma noção do que os empregadores esperam dos engenheiro de DevOps, talvez queira verificar os modelos de descrição de trabalho do engenheiro DevOps disponíveis em sites como Dice , Workable e ZipRecruiter .

Treinamento

Há uma piada que aparece em lugares como o Reddit, onde os profissionais de TI se encontram: não existe um engenheiro DevOps júnior. Isso porque a amplitude das habilidades técnicas que as empresas que contratam os engenheiros da DevOps está procurando vai além do que alguém recém-saído da escola ou de um campo de treinamento poderia ter adquirido.

A maneira de treinar um engenheiro DevOps é através da experiência no trabalho . Experiência que possa fornecer aos desenvolvedores a exposição ao lado das operações, ou vice-versa. Como Jeffrey Lee colocou no Hacker Noon :

Não há treinamento ou caminho educacional para se tornar um engenheiro de DevOps. Em outras palavras, normalmente são pessoas que confiam em seu conjunto de habilidades atuais e se ramificaram em outras funções. Eles são contratados porque têm profundo conhecimento e muita experiência prática. Você não encontrará um anúncio de emprego no LinkedIn que não esteja pedindo pelo menos cinco anos de experiência.

Habilidades

Só porque não há uma trilha educacional formal do engenheiro DevOps, não significa que o profissional não possa escolher orientar sua carreira para conseguir um emprego como engenheiro de DevOps. Mas deve tomar uma decisão consciente para obter um conjunto diversificado de habilidades, seja através da experiência no trabalho ou através de treinamento formal ou auto-dirigido externo.

Igor Kantor apresenta uma série completa sobre as principais tecnologias e plataformas para entender se o profissional quiser se tornar um engenheiro de DevOps . Ele divide-os nas seguintes categorias:

Fundamental: administração Linux , Python e AWS ou alguma outra plataforma de nuvem

Configuração: Terraform e Ansible

Versionamento: Git e GitHub

Embalagem: Docker

Implantação: Jenkins

Executando: Amazon ECS e Kubernetes

Monitoramento: pilha ELK

Obviamente, isso é uma tarefa difícil! Ser um mestre de todas essas plataformas é irrealista, mas o profissional deve ao menos ter uma noção de como todos elas funcionam. Mais importante, deve saber como aprender mais quando precisar.

Ser um engenheiro da DevOps vai além de conhecer produtos ou tecnologias específicas – e, afinal de contas, isso muda o tempo todo conforme a indústria evolui. Tão importante quanto é a familiaridade com a filosofia DevOps e o ciclo de vida subjacente. Isso significa que o profissional precisa entender o processo de implementação contínua e integração contínua (CI/CD) que está no centro da prática DevOps, junto com o tipo de teste de software que a acompanha.

E não se esqueça das habilidades sociais: elas são cruciais para um papel que está no epicentro de uma mudança cultural em direção a um ciclo de desenvolvimento e lançamento de software mais rápido e iterativo, e que preenche a lacuna entre desenvolvedores e operadores. O fundador da Cybric e ex-CIO da Yahoo, Mike D. Kail, resume isso em um post da TechBeacon: “Cada vez mais, as organizações querem engenheiros de software que dominem soft skills como empatia, integridade e resiliência para ajudar a inaugurar uma nova onda DevOps.”

Se você está procurando um pouco de orientação institucional quanto ao pacote de habilidades que o engenheiro DevOps deve adquirir, talvez queira investigar o exame AWS Certified DevOps Engineer da Amazon. Esta certificação é obviamente focada na plataforma AWS, mas estudar para o teste mostrará ao profissional as lacunas de conhecimento. Já o guia de estudo da Udemy diz que ele ajudará o profissional a “aprender como desenvolver um Pipeline de CI/CD totalmente funcional na AWS usando o AWS Developer Tools”.

Funções e responsabilidades

Então, o que um engenheiro DevOps faz no dia-a-dia? A Altexsoft diz que uma lista típica de responsabilidades do engenheiro do DevOps inclui:

1 – Escrever especificações e documentação para recursos do lado do servidor

2 – Gerenciar CI/CD

3 – Escrever script de CI/CD

4 – Fazer avaliações de desempenho e monitoramento

5 – E manutenção e gerenciamento de infraestrutura de TI (englobando hardware, software, rede, armazenamento, ativos virtuais e remotos e armazenamento de dados em nuvem)

Naturalmente, não há dois empregos iguais e o papel do engenheiro de DevOps varia de empresa para empresa. O tamanho da organização pode ter um impacto particular. Em uma pequena empresa, suas tarefas podem abranger todo o ciclo DevOps, enquanto que, em uma equipe maior, ele pode se concentrar em uma parte apenas.

Newsletter de tecnologia para você

Os melhores conteúdos do IT Forum na sua caixa de entrada.