Quero me tornar um DevOps, o que fazer?

Nilson R S Vieira
5 min readMay 3, 2022

Recentemente várias pessoas têm me perguntado o que eu faço, com o que eu trabalho, como é ser DevOps e a pergunta que me chamou atenção para fazer esse artigo, o que fazer para se tornar um DevOps.

Bom, antes de tudo recomendo fortemente que leia o artigo: Afinal, o que é DevOps? Para que alguns pontos não fiquem perdidos pelo caminho. :)

DevOps para qualquer organização é uma mudança cultural. Não se trata apenas de ferramentas e tecnologias, mas de uma prática contínua e necessária.

Vamos ao meu ponto de vista! Todos nós sabemos que a área de tecnologia é gigantesca e existem milhares de cargos e funções que são exercidos ao redor do mundo. Uma carreira que vem chamando bastante atenção no mercado por vários fatores, desde a necessidade desse profissional para as empresas e consequentemente os altíssimos salários é o DevOps Engineer, ou simplesmente Engenheiro DevOps. Apesar do mercado precisar tanto, formar este profissional não é simples, isso por conta da quantidade de skills que são necessários para exercer a função.

A imagem abaixo foi elaborada por Kamran Ahmed e exemplifica a visão dele dos conhecimentos que um Profissional DevOps deve ter, obviamente separados da seguinte forma:

  • Check Roxo: recomendação pessoal
  • Check Verde: alternativa ao Roxo
  • Check Cinza: não é crucial, que você pode aprender depois, por fim,
  • Cinza sem Check: não recomenda.
Fonte: roadmap.sh

Vamos usar esse roteiro como base para que possa explicar meu ponto de vista e minha opinião sobre o assunto.

Aprender uma linguagem de programação

Como já visto em artigo anterior DevOps possui um pé forte dentro de desenvolvimento, por este motivo você precisa ter uma boa compreensão de uma alguma linguagem de programação. Não importa qual, mas é necessário para escrever código de automação, pois esta é uma parte fundamental do DevOps. Para tal, recomendo aprender Python, Golang ou Bash para uso diário e compreender um pouco de Java, C++ ou Javascript também pode ser interessante.

Compreender diferentes Conceitos de Sistemas Operacionais

Os Sistemas Operacionais regem o funcionamento da máquina, então deseja-se que exista algum conhecimento no mesmo. Por isso você precisa aprender sobre gerenciamento de processos, threads e concorrência, sockets, gerenciamento de E/S, virtualização, gerenciamento de memória, etc.

Amarrado a isso você deve aprender a usar sistemas operacionais diferentes, se dedicar a conhecer bem pelo menos um deles sendo altamente recomendado os de Kernel Linux, com as distros mais conhecidas como Debian/Ubuntu, Redhat/Fedora por exemplo.

Usar o Terminal

Os comandos do terminal são essenciais para um Engenheiro DevOps, especialmente se você estiver trabalhando com Linux — que está na maioria dos servidores ao redor do mundo. Você precisa aprender comandos para monitoramento de processos, manipulação de texto, desempenho do sistema, etc. Com esses comandos, você ainda consegue melhorar um conhecimento muito exigido como saber elaborar scripts em shell (bash).

Redes, Protocolos e Segurança

Saber como as máquinas se comunicam, conhecer bem o Modelo OSI e seus protocolos e o tratamento seguro dessas comunicações é crucial, para isso você precisa estar familiarizado com vários tipos de protocolos para comunicação com diferentes dispositivos na rede, como TCP/IP, HTTP, HTTPS, SMTP, FTP etc.

O que é e como configurar

O DevOps é um profissional com fortes pontos de OPS (operações), por esse mesmo motivo, ele deve saber como configurar um servidor web como IIS, Nginx, Apache e Tomcat, além de entender sobre Cache, Balanceamento de Carga e suas estratégias, Proxy Reverso, Firewall, etc.

IaC (Infraestrutura como Código)

Talvez este seja um dos pontos mais delicados no caminho de aprendizado do profissional DevOps, pois provisionar e configurar ambientes com código pode ser prático mas envolve também muita tentativa e erro até se ter experiência e em produção é um risco complicado, na realidade tudo em produção é complicado :).

É necessário aprender sobre conteinerização de aplicativos e compreender as ferramentas de contêiner e orquestração, como Docker e Kubernetes. Ferramentas de gerenciamento de configuração como Ansible, Chef, Salt e Puppet e por fim o provisionamento de infraestrutura, com ferramentas como Terraform e CloudFormation.

Aprender conceitos e ferramentas de CI/CD

Integração Contínua e Implantação Contínua atualmente fazem parte essencial da definição de uma cultura DevOps. Portanto, você deve se familiarizar com ferramentas de CI/CD como Gitlab, Jenkins, Travis, Actions do Github e Azure DevOps.

Monitoramento das Aplicações e da Infraestrutura

Com o advento dos microservices, conteinerização de aplicações, cluster Kubernetes, você tem milhares de serviços em execução, e torna-se importante se certificar que o sistema esteja funcionando bem. Tanto a infraestrutura quanto os aplicativos devem ser monitorados continuamente.

Para melhorar essa visibilidade/observabilidade recomendamos fortemente o Zabbix, Prometheus, ELK Stack, Grafana e se houver possibilidade Datadog, Dynatrace e AppDynamics, estas três ultimas que são ferramentas também de APM pagas mas que possuem diferenciais espetaculares.

Provedores de Nuvem

Notadamente precisamos de um local para subir toda infraestrutura recomendada, seja ela na máquina local para testes, datacenters On-Premise ou provedores de nuvem.

A maioria dos aplicativos hoje são criados como nativos da nuvem. Portanto, você precisa se familiarizar com os principais provedores de nuvem. AWS, Azure e Google Cloud e Oracle Cloud são os principais players e também oferecem cursos gratuitos em suas plataformas sobre suas ferramentas.

Considerações Finais

Sei que poderia falar de muito mais ferramentas e conceitos que envolvem a cultura e cargo de Engenheiro DevOps e poderíamos passar dias inteiros lendo e discutindo este artigo, mas como explanei desde o início é uma opinião usando como base um conteúdo que achei muito interessante e bem próximo do que penso a respeito.

Espero que tenham gostado e tirado as dúvidas sobre como e por onde começar.

Em breve criarei um artigo com dicas de cursos pagos e gratuitos que ajudarão na caminhada para se tornar um DevOps Engineer.

Referências

LIVRO: DevOps nativo de nuvem com Kubernetes - Como construir, implantar e escalar aplicações modernas na nuvem de Justin Domingus e John Arundel da Editora Novatec no ano 2019.

--

--

Nilson R S Vieira

DevOps | DevSecOps | SRE | Plataform Engineer | Cloud Engineer