Categorias

Como se tornar um Engenheiro DevOps em 2021

Você já deve ter ouvido falar em DevOps. São várias as definições. De acordo com a Microsoft, DevOps é “um composto de Dev (desenvolvimento) e Ops (operações) (…) é a união de pessoas, processos e tecnologias para fornecer continuamente valor aos clientes”. Esse conceito independe de plataforma, tanto que a RedHat define DevOps como “uma abordagem de cultura, automação e design de plataforma que tem como objetivo agregar mais valor aos negócios e aumentar sua capacidade de resposta às mudanças por meio de entregas de serviços rápidas e de alta qualidade”.

Falando assim, parece até papo motivacional, afinal, quem se recusaria a adicionar valor ao cliente? Não seria esse o objetivo de todos os processos, em todas as áreas? Entretanto, DevOps vai bem além do jargão e significa, na prática, otimizar seu trabalho e acelerar o tempo que se leva entre a concepção de um projeto até sua implantação no ambiente de desenvolvimento. Isso envolve cooperação na equipe e a adoção de processos mais ágeis. Todos saem ganhando com o DevOps.

Nana Janashia é uma consultora de DevOps austríaca que também atua como evangelizadora dessa filosofia de desenvolvimento. Uma de suas metas é tornar esse conhecimento acessível de forma amigável. Em um artigo publicado na internet, ela explica qual é o melhor caminho para se tornar um desenvolvedor adepto do DevOps em 2021.

Com sua autorização, traduzimos e reproduzimos o artigo na íntegra:

“O que DevOps realmente significa? E o que é um DevOps Engineer?

DevOps é uma abordagem de desenvolvimento de software envolvendo Desenvolvimento Contínuo, Teste Contínuo, Integração Contínua, Implantação e Monitoramento.

O processo acima abrange as equipes tradicionalmente isoladas de Desenvolvimento e Operações e o DevOps tenta remover as barreiras entre elas.

Portanto, um DevOps Engineer trabalha basicamente com a equipe DEVelopment e OPerations. É a ligação entre essas 2 partes principais.

Conceitos vs Ferramentas

DevOps inclui conceitos como Build Automation, CI/CD, Infrastructure as Code, etc. E existem inúmeras ferramentas que permitem que esses conceitos sejam implementados. E, por causa desse vasto número de ferramentas, pode ser confuso e opressor.

O mais importante é entender os conceitos e aprender uma ferramenta específica para cada categoria. Por exemplo. quando você já sabe o que é exatamente CI / CD e sabe como usar o Jenkins, será fácil aprender uma ferramenta alternativa também.

Passo a passo para se tornar um DevOps Engineer

Vamos direto ao roteiro de quais habilidades você precisa aprender.

1) Conceitos de Desenvolvimento de Software

Como engenheiro de DevOps, você não estará programando a aplicação, mas como está trabalhando em estreita colaboração com a equipe de desenvolvimento para melhorar e automatizar tarefas para eles, você precisa entender os conceitos de:

  • Como os desenvolvedores trabalham
  • Qual fluxo de trabalho git eles estão usando
  • Como os aplicativos são configurados
  • Testes automatizados

2) Sistemas operacionais e o básico de Linux

Como engenheiro de DevOps, você é responsável por preparar a infraestrutura (servidores) na qual a aplicação é implantada.

E como a maioria dos servidores são servidores Linux, você precisa conhecer o sistema operacional Linux e se sentir confortável para usar a interface de linha de comando. Então você precisa saber:

  • Comandos Shell básicos
  • Sistema de arquivos do Linux
  • Conceitos básicos de como administrar um servidor
  • Gerenciamento de chave SSH
  • Instalação de diferentes ferramentas em servidores

3) Rede & Segurança

Você também precisa conhecer o básico de Rede & Segurança a fim de configurar a infraestrutura. Isso abrange:

  • Configurar Firewalls para proteger o aplicativo
  • Entender como os endereços IP, portas e DNS funcionam
  • Balanceamento de carga
  • Servidor proxy
  • HTTP / HTTPS

No entanto, é necessário traçar uma linha aqui entre DevOps e Operações de TI: você não é o SysAdmin. Portanto, você não precisa de conhecimento avançado aqui. Basta entender e saber o básico, pois existem profissões próprias como SysAdmins, Engenheiro de Rede ou Engenheiro de Segurança.

4) Conteinerização – Docker

Como os contêineres estão se tornando o novo padrão, você provavelmente executará seu aplicativo como um contêiner. Isso significa que você precisa entender de maneira geral:

  • conceitos de virtualização
  • conceitos de containers

Que ferramenta aprender?
DOCKER – a tecnologia de contêiner mais popular hoje.

Curso de Docker GRATUITO

5) Integração e implantação contínuas (CI/CD)

No DevOps, todas as alterações de código, como novos recursos e correções de bugs dos desenvolvedores, devem ser integradas à aplicação existente e implantadas para o usuário final de forma contínua e automatizada. Daí o termo: Integração Contínua e Implantação Contínua.

E configurar um pipeline de CI / CD completo é a principal tarefa e responsabilidade de um engenheiro de DevOps.

Portanto, quando o recurso ou a correção do bug é concluído, um pipeline em execução em um servidor de CI (por exemplo, Jenkins) deve ser acionado automaticamente, para:

  1. executar os testes;
  2. empacotar a aplicação;
  3. construir a imagem Docker;
  4. enviar a imagem do Docker para um repositório de artefato
  5. implantar a nova versão em um servidor (que pode ser um servidor de DESENVOLVIMENTO, TESTE ou PRODUÇÃO).

Portanto, habilidades que você precisa aprender aqui:

  • Configurar o servidor CI/CD
  • Montar ferramentas de construção e ferramentas do gerenciador de pacotes para executar os testes e empacotar o aplicativo
  • Configurar repositórios de artefatos (como Nexus)

É claro que pode haver mais etapas integradas, mas esse fluxo representa o núcleo do pipeline de CI/CD e é o coração das tarefas e responsabilidades do DevOps.

Que ferramenta aprender?
Jenkins é uma das mais populares. Outras: Bamboo, Gitlab, TeamCity, CircleCI, TravisCI.

6) Provedor de nuvem

Hoje em dia, muitas empresas estão usando infraestrutura virtual na nuvem, em vez de gerenciar sua própria infraestrutura. São plataformas de infraestrutura como serviço (IaaS), que oferecem uma gama de serviços, como backup, segurança, balanceamento de carga etc.

Esses serviços são específicos da plataforma. Portanto, você precisa aprender os serviços dessa plataforma específica. Por exemplo. para a AWS, você deve conhecer os fundamentos de:

  • Serviço IAM – gerenciamento de usuários e permissões
  • Serviço VPC – sua rede privada
  • Serviço EC2 – servidor virtual

A AWS tem muito mais serviços, mas você só precisa aprender os serviços de que você/sua empresa realmente precisa. Por exemplo. quando o cluster K8s é executado na AWS, você também precisa aprender o serviço EKS.

AWS é o mais poderoso e mais amplamente usado, mas também o mais difícil.

Que ferramenta aprender?
AWS é a solução mais popular. Alternativas também populares: Azure, Google Cloud.

7) Gerenciamento de contêiner – Kubernetes

Como mencionei antes, os contêineres são amplamente usados e, em grandes empresas, centenas ou milhares de contêineres são executados em vários servidores. Isso significa que esses contêineres precisam ser gerenciados de alguma forma.

Para isso, existem ferramentas de orquestração de contêineres e a mais popular é o Kubernetes. Então você precisa aprender:

  • como o Kubernetes funciona
  • como administrar e gerenciar o cluster Kubernetes
  • como implantar aplicativos nele

Que ferramenta aprender?
Kubernetes – a mais popular.

Curso de Kubernetes GRATUITO

8) Gerenciamento e monitoramento de Log

Uma vez que o software está em produção, é importante monitorá-lo para rastrear o desempenho, descobrir problemas em sua infraestrutura e também na aplicação. Portanto, algumas de suas responsabilidades como engenheiro de DevOps são:

  • configurar software de monitoramento
  • configurar o monitoramento da infraestrutura, por exemplo para seu cluster Kubernetes e servidores subjacentes

Que ferramenta aprender?
Prometheus, Nagios…

9) Infrastructure as Code (IaC)

Criar e manter a infraestrutura manualmente consome tempo e está sujeito a erros. Especialmente quando você precisa replicar a infraestrutura, por exemplo, para um ambiente de Desenvolvimento, Teste e Produção.

Novamente em DevOps, queremos automatizar o máximo possível e é aí que a infraestrutura como código (Infrastructure as Code ou IaC) entra em cena.

Com IaC, usamos código para criar e configurar a infraestrutura e existem dois tipos de ferramentas IaC que você precisa saber:

  • provisionamento de infraestrutura
  • gerenciamento de configurações

Com essas ferramentas, é fácil replicar e recuperar a infraestrutura. Portanto, você deve conhecer uma ferramenta em cada categoria para tornar o seu próprio trabalho mais eficiente, bem como para melhorar a colaboração com seus colegas de trabalho.

Que ferramenta aprender?
Provisionamento de infraestrutura: Terraform é a mais popular.
Gerenciamento de configurações: Ansible, Puppet, Chef,

10) Linguagem de script

Como você está trabalhando em estreita colaboração com desenvolvedores e administradores de sistema para automatizar tarefas de desenvolvimento e operações, precisará escrever scripts e pequenos aplicativos para automatizar tarefas.

Para fazer isso, você precisa conhecer uma linguagem de script ou programação.

Pode ser uma linguagem de script específica do sistema operacional, como bash ou Powershell.

Porém, o que é mais exigido é uma linguagem independente do sistema operacional, como Python, Ruby ou Go. Essas linguagens são mais poderosas e flexíveis. Se você conhece uma delas, isso o tornará muito mais valioso no mercado de trabalho.

Que ferramenta aprender?
Python: atualmente a mais procurada, que é fácil de aprender, fácil de ler e tem muitas bibliotecas disponíveis. Outras: Ruby, Go, NodeJS.

11) Controle de versão – Git

Você escreve todas essas lógicas de automação mencionadas acima como código. Assim como o código do aplicativo dos desenvolvedores, você gerencia esse código e os arquivos de configuração também com uma ferramenta de controle de versão, como o Git.

Que ferramenta aprender?
GIT – a mais popular e amplamente utilizada.

Boa sorte em sua jornada de DevOps!

Publicado originalmente como “DevOps Roadmap [2021] – How to become a DevOps Engineer” em 17 de janeiro de 2021. Traduzido e republicado com autorização da autora.