Close

Quem é o engenheiro de DevOps?

O engenheiro de DevOps deve ter habilidades que abranjam o desenvolvimento e as operações, bem como habilidades interpessoais para ajudar a conectar equipes em silos.

Foto do rosto de Tom Hall
Tom Hall

Representante e Profissional de DevOps


Quando uma organização está enraizada em uma estrutura de silos em que o desenvolvimento e as operações funcionam de maneira separada, a implementação do DevOps, em geral, envolve uma revisão organizacional. É preciso as pessoas, a cultura e as ferramentas certas para a implementação bem-sucedida do DevOps. No entanto, um dos obstáculos mais comuns na implementação do DevOps é a falta de habilidades dos funcionários, de acordo com a Pesquisa de Tendências de DevOps de 2020 da Atlassian.

Uma das principais funções para implementar uma reestruturação de DevOps é a de engenheiro de DevOps. Essa pessoa deve ter um amplo conjunto de habilidades que abranjam o desenvolvimento e as operações, bem como habilidades interpessoais para ajudar a conectar equipes em silos.

Quem é o engenheiro de DevOps?


O engenheiro de DevOps é um generalista de TI que deve ter um amplo conhecimento de desenvolvimento e operações, incluindo codificação, gerenciamento de infraestrutura, administração de sistemas e cadeias de ferramentas de DevOps. Os engenheiros de DevOps também devem ter habilidades interpessoais, pois trabalham nos silos da empresa para criar um ambiente mais colaborativo.

Eles precisam entender bem a arquitetura, o provisionamento e o gerenciamento comuns do sistema, mas também devem ter experiência com o conjunto de ferramentas e práticas tradicionais de desenvolvimento, como utilização do controle de fonte, fornecimento e recebimento de revisões de código, criação de testes de unidade e familiaridade com princípios ágeis.

Funções e responsabilidades


A função do engenheiro de DevOps varia de uma organização para outra, mas, no geral, envolve a combinação de engenharia de lançamento, provisionamento e gerenciamento de infraestrutura, administração de sistemas, segurança e aplicação do DevOps.

Logotipo da empresa da equipe
ver solução

Ferramentas de DevOps para toda a equipe

Logotipo de livro
Cursos de treinamento

Conheça os fundamentos do Atlassian DevOps

A engenharia de lançamento inclui o trabalho necessário para criar e implementar o código do aplicativo. As ferramentas e processos exatos variam muito, dependendo de muitas variáveis, como em qual idioma o código está escrito, quanto do pipeline foi automatizado e se a infraestrutura de produção está no local ou na nuvem. A engenharia de lançamento pode implicar a seleção, o provisionamento e a manutenção de ferramentas de CI/CD ou a criação e manutenção de scripts de compilação/implementação personalizados.

O provisionamento de infraestrutura e a administração do sistema incluem a implementação e a manutenção dos servidores, do armazenamento e dos recursos de rede necessários para hospedar aplicativos. Para organizações com recursos locais, essa tarefa pode incluir o gerenciamento de servidores físicos, dispositivos de armazenamento, switches e software de virtualização em um Data Center. Para uma organização híbrida ou baseada em nuvem em sua totalidade, em geral, vai incluir o provisionamento e o gerenciamento de instâncias virtuais dos mesmos componentes.

A aplicação do DevOps costuma ser subvalorizada ou negligenciada por completo, mas é sem dúvida a função mais importante do engenheiro de DevOps. A mudança para uma cultura de DevOps pode ser disruptiva e confusa para os membros da equipe de engenharia. Como parceiro de DevOps, cabe ao engenheiro de DevOps ajudar a difundi-lo e mostrar sua aplicação em toda a organização.

Habilidades do engenheiro de DevOps


As habilidades técnicas exigidas do engenheiro de DevOps variam dependendo da estrutura da equipe, das tecnologias e dos conjuntos de ferramentas em uso. No entanto, habilidades de comunicação e colaboração sólidas são essenciais. Também é importante que o engenheiro de DevOps tenha uma sólida compreensão de todos os componentes de um pipeline de entrega e conheça os prós e os contras das ferramentas e serviços disponíveis.

Comunicação e colaboração

É importante que o engenheiro de DevOps saiba se comunicar e colaborar de maneira eficaz com equipes, gerentes e clientes. Chamadas de “habilidades interpessoais” são muitas vezes negligenciadas e subvalorizadas, mas o êxito do DevOps depende muito da qualidade e da quantidade de feedback em todo o fluxo de valor.

Administração do sistema

O engenheiro de DevOps tem experiência com administração de sistemas, como provisionamento e gerenciamento de servidores, implementação de bancos de dados, monitoramento de segurança, aplicação de patches do sistema e gerenciamento de conectividade de rede interna e externa.

Experiência com ferramentas de DevOps

Como utilizar as ferramentas certas é essencial para as práticas de DevOps, o engenheiro de DevOps deve entender e ser capaz de usar uma variedade de ferramentas. Elas abrangem o ciclo de vida do DevOps, desde a infraestrutura e desenvolvimento até o monitoramento e a operação de um produto ou serviço.

Gerenciamento de configurações

Muitas vezes, é esperado que os engenheiros de DevOps tenham experiência com uma ou mais ferramentas de gerenciamento de configurações, como Chef, Puppet ou Ansible. Muitas empresas adotaram essas ferramentas ou semelhantes para automatizar tarefas de administração do sistema, como implementação de novos sistemas ou aplicação de patches de segurança em sistemas já em funcionamento.

Contêineres e orquestração de contêineres

Com a conteinerização, uma tecnologia popularizada pelo Docker, o código do aplicativo e seu ambiente de tempo de execução são agrupados na mesma imagem. Ela faz com que as ferramentas tradicionais de gerenciamento de configuração sejam menos necessárias. Ao mesmo tempo, o gerenciamento de contêineres traz seus próprios desafios, e a experiência com a classe de ferramentas conhecida como “orquestradores de contêineres” (por exemplo, Docker Swarm ou Kubernetes) se torna uma habilidade necessária para o engenheiro de DevOps.

Integração e implementação contínuas

Integração e entrega contínuas (CI/CD) são práticas essenciais de uma abordagem DevOps para desenvolvimento de software e viabilizadas por uma série de ferramentas disponíveis. A função mais importante de qualquer ferramenta de CI/CD ou conjunto de ferramentas é automatizar o processo de criação, teste e implementação de software.

Os engenheiros de DevOps precisam, no geral, de experiência com a configuração e implantação de uma ou mais ferramentas de CI/CD, e muitas vezes precisam trabalhar em estreita colaboração com o resto da organização de desenvolvimento para garantir que essas ferramentas sejam utilizadas com eficácia.

Arquitetura e provisionamento do sistema

O engenheiro de DevOps deve ser capaz de projetar, provisionar e gerenciar ecossistemas de computadores, seja no local ou na nuvem. É importante entender a Infraestrutura como Código (IaC), um processo de gerenciamento de TI que aplica as práticas recomendadas do desenvolvimento de software DevOps ao gerenciamento de recursos de infraestrutura em nuvem. O engenheiro de DevOps deve entender como modelar a infraestrutura do sistema na nuvem com o Amazon Web Services (AWS), o AWS CloudFormation ou o Terraform.

Familiaridade com codificação e scripts

Muitos administradores do sistema tradicionais têm experiência na criação de scripts de shell para automatizar tarefas repetitivas. O engenheiro de DevOps deve ir além da criação de scripts de automação e entender práticas avançadas de desenvolvimento de software e como implementar práticas de desenvolvimento ágeis, como revisões de código e utilização de controle de fonte.

Habilidades de gestão colaborativa

A colaboração entre equipes é um componente fundamental de uma estratégia de DevOps eficaz, não importa a estrutura organizacional específica. Seja a equipe de engenharia um grupo dividido apenas por funções ou haja equipes separadas para desenvolvimento de recursos, garantia de qualidade, DevOps etc., o engenheiro de DevOps deve trabalhar em toda a organização como instrutor e colega de trabalho, com muitas pessoas diferentes.

Por exemplo, um dos retornos mais valiosos de um investimento em DevOps é a possibilidade de oferecer feedback mais rápido aos desenvolvedores. O engenheiro de DevOps muitas vezes vai ter que trabalhar com controle de qualidade (quer sejam testadores manuais ou desenvolvedores que criam automação de testes) para melhorar a velocidade, a eficácia e a saída das metodologias de teste.

Ao mesmo tempo, os desenvolvedores podem precisar do suporte dos engenheiros de DevOps ao trabalhar para melhorar o processo de criação e implementação do código do aplicativo.

A equipe DevOps: outras funções e responsabilidades


Divulgador do DevOps

Este é um parceiro de DevOps que promove e desenvolve práticas de DevOps em toda a organização. Em geral, tem formação técnica consolidada, mas o foco da função está na comunicação interpessoal e na melhoria de processos.

Gerente de versões/conselho consultivo de alterações

As organizações que não fizeram a transição para o DevOps ou ainda estão nos estágios iniciais do processo podem ter um grupo separado chamado de conselho consultivo de alterações (CAB) ou uma função de gerente de versões individual.

O objetivo de tais funções é garantir que qualquer novo software aplicativo lançado em produção atenda aos padrões de qualidade e segurança e tenha as aprovações de gerenciamento adequadas.

Essas funções eram importantes de modo especial quando os lançamentos de software eram mais arriscados. No entanto, são menos importantes (se não obsoletas) com o uso de estratégias como testes automatizados e implementações para teste de recursos.

Parceiro de automação

É esperado que todo engenheiro de DevOps tenha experiência em automação. No entanto, não é incomum que uma organização tenha uma função separada de parceiro de automação ou engenheiro de automação. Pode ser alguém com o objetivo de gerenciar as ferramentas de CI/CD ou desenvolver e manter conjuntos de testes automatizados.

desenvolvedor de software

Na maioria dos casos, o título de desenvolvedor de software é dado àqueles que criam código de aplicativo front-end ou back-end, ou ambos. Essas são as pessoas que eram descritas, no passado, como “programadores de computador” antes do surgimento do pensamento ágil.

Garantia de qualidade

A equipe de garantia de qualidade (QA) é responsável por encontrar falhas no software. No passado, os engenheiros de controle de qualidade se concentravam no teste manual do novo código do aplicativo para garantir que não houvesse falhas críticas (“teste de fumaça”), interrupção de funcionalidades existentes (“teste de regressão”) ou conflito com quaisquer outros novos recursos (“teste de integração”).

As organizações estão cada vez mais complementando ou substituindo testadores manuais pela função de engenheiro de desenvolvimento de software em teste (SDET). O SDET se concentra no teste do novo código do aplicativo antes de seu lançamento em produção. No entanto, em vez de testar o software de maneira manual, ele se concentra em criar o código de automação de teste.

Engenheiro de segurança

As organizações que não adotaram a noção de integração total das questões de segurança e conformidade em seus processos de planejamento e desenvolvimento muitas vezes vão ter um profissional ou uma equipe responsável pela segurança. De maneira geral, essa situação se revela como antipadrão, pois torna a segurança uma reflexão tardia, e é muito mais difícil proteger o software após seu projeto, desenvolvimento e implementação do que seu design com a segurança em mente.

Indo além de uma única função


O DevOps é uma prática que requer uma mudança cultural, novos princípios de gerenciamento e o uso de ferramentas tecnológicas. O engenheiro de DevOps está no centro de uma transformação de DevOps e deve ter um amplo conjunto de habilidades para facilitar essa mudança. No entanto, a maioria das organizações vai precisar de mais do que somente o engenheiro de DevOps, além de uma combinação de generalistas e especialistas que trabalhem em estreita colaboração para implementar DevOps e melhorar o ciclo de vida de desenvolvimento de software. O engenheiro de DevOps ajuda a quebrar silos para facilitar a colaboração entre diferentes parceiros e cadeias de ferramentas para cumprir a promessa completa do DevOps.

Tom Hall
Tom Hall

Tom Hall é defensor e praticante de DevOps, leitor voraz e pianista amador.
Entre suas realizações nos últimos 20 anos estão as certificações da Novell, EMC, VMware e AWS. Ele ajudou a organizar os DevOpsDays em Atlanta em 2016 e em Austin, no Texas, nos anos seguintes.


Compartilhe este artigo
Próximo tópico

Leitura recomendada

Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Ilustração DevOps

Comunidade do DevOps

Ilustração DevOps

Workshop de simulação

Ilustração do mapa

Comece gratuitamente

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up