Os primeiros passos para uma carreira DevOps
January 5, 2018 portugues devops carreira
TL;DR
Quer entrar na carreira “DevOps” e não sabe por onde começar? Nesse texto falarei sobre possíveis caminhos para sua carreita técnica, com materiais para auxiliar no processo de aprendizado e dicas para acelerar seu processo.
Motivação
Muitas pessoas me perguntam por onde começar a trabalhar com “DevOps” e sempre prometo escrever um artigo com alguma síntese das minhas opiniões sobre como seria um início “ideal” de carreira. Aqui estou pagando uma promessa do ano passado.
Colaboração
O texto não é 100% autoral, ou seja, imagine esse texto como uma colagem de muitas ideias e materiais produzidos por outras pessoas. Ele provavelmente sofrerá alteração ao longo do tempo. Isso que dizer que se você acha que algo deve ser colocado aqui, modifique esse arquivo e submeta um PR no github, vamos discutir nos comentários e aceitar a colaboração :)
DevOps é carreira?
Então, a resposta direta e resumida é: NÃO, mas por outro lado o mercado já usa esse termo para denominar pessoas e vagas de trabalho relacionadas a entrega contínua, infraestrutura ágil e afins, não vou entrar nesse embate no texto. Se quiser discutir isso, entre nesse canal do telegram que tem pessoas dispostas a essa conversa.
O que é DevOps de verdade?
É um mudança cultural, acredito que esse vídeo e tenha uma ideia básica do que se trata. Esse vídeo tem legenda em português, caso precise.
Requisitos
Vou presumir que você é uma pessoa que possui conhecimentos que permitam boa leitura e interpretação de textos em inglês e já está inserida no básico de tecnologia da informação, ou seja, que já é ao menos uma pessoa de nível técnico de TI.
Metodologia
Eu vou tentar organizar a ordem do conhecimento com base nos elementos mais básicos que você precisará para se qualificar para o mercado de trabalho e assunto teóricos mais básicos. Isso quer dizer que não precisa estudar tudo que eu falar para poder submeter para aquela vaga “DevOps”, lembre-se: “O não você já tem sem tentar” (Autor desconhecido).
Por onde começar?
Eu aconselharia os assuntos com maior demanda e mais próximo do que a maioria dos técnicos de TI já tem alguma familiaridade, sendo assim vou separar em dois sub-grupos de pessoas, que posteriormente se encontram em passos mais relacionados a esse novo paradigma.
Algumas pessoas gostam e tem mais experiência em escrever software e outras em manter a infraestrutura onde estarão hospedadas esses softwares, sendo assim acredito que os elementos básicos necessários para fazer a mudança na carreira são diferentes a depender da sua história.
Assuntos básicos para pessoas inclinadas a desenvolvimento de software
Estude sobre TCP/IP! Domine isso! Entenda como funciona endereço IP, mascara de rede, rotas de rede, portas TCP/UDP. O que é um socket e afins.
Material sugerido:
- Livro Redes de Computadores - Andrew S Tanenbaum
- Redes de computadores e a internet uma nova abordagem - James Kurose e Keith Ross
Estude também sobre funcionamento do sistema operacional, o que são processos, como funciona o escolanamento de processamento e afins.
Material sugerido:
Obs: Esses dois livros são enormes, então não precisa necessariamente ler todos. Apenas imagine que quanto mais você ler e absorver esses conhecimentos, melhor profissional você será.
Assuntos básicos para pessoas inclinadas a infraestrutura de TI
Estude sobre desenvolvimento de software! Não apenas sobre fazer scripts para tarefas simples. Você precisa entender como funciona o processo inteiro de desenvolvimento de software. Isso não quer dizer necessariamente que você se tornará uma pessoa desenvolvedora de software.
A proposta aqui é ter o mesmo conhecimento que uma pessoa em início de carreira deveria ter, isso quer dizer que você precisa aprender a coisa mais básica nesse assunto: ALGORITMO!
Material sugerido:
Obs: A ideia aqui é ter uma base sólida sobre o que é Algoritmo, não precisa ler o livro inteiro
Um outro conselho básico é a necessidade de dominar ao menos uma linguagem de programação a nível iniciante. Que você consiga usar os elementos mais básicos da linguagem para desenvolvimento de recursos simples, como um job para execução pontual, um serviço web e afins.
Material sugerido:
- Curso online gratuito - Python Para Zumbis - Fernando Masanori
- Curso online pago - POO com Ruby - Jackson Pires
- Curso online pago - Curso de Go - Jeff Prestes
Se quiser validar seus conhecimentos, tem alguns sites que podem lhe ajudar nisso:
Conhecimentos comuns
A partir daqui os conhecimentos são para qualquer tipo de pessoa, sendo assim aconselho a todos fazerem a medida que vejam necessidade dentro da sua carreira.
Para as pessoas que não dominam desenvolvimento de software, perceberão que muitos dos assuntos são completamente novos e o caminho parece um pouco mais “tortuoso”, o que em parte é verdade, mas veja pelo lado bom, uma vez concluído esse caminho você dominará a área profissional mais requisitada no mercado e será capaz de resolver a maioria dos desafios, mesmo com pouca ajuda.
Conhecimento de controle de versão de código
Esse é o “pontapé inicial” para o assunto “DevOps”, pois tudo que será feito daqui pra frente será baseado em código, e manter esse conjuntos de fontes em um repositório de controle de versão é requisito mínimo até mesmo para níveis mais iniciantes nessa carreira.
Na minha opinião, o Git reina em absoluto nesse assunto. Há quem ainda use SVN, Mercurial e afins, mas a maioria dos lugares usam Git. Pode estudar sem culpa, pois aprender os outros será fácil depois do Git.
Material sugerido para Git:
- Vídeo - Descomplicando o GIT - Parte 1 - LinuxTips
- Material oficial Git
- Material oficial Git (Português)
Conhecimento sobre virtualização
Você precisa saber o mínimo de virtualização, pois a partir desse momento em diante você necessariamente estará trabalhando com algum nível de virtualização na maioria dos serviços que for interagir/manter.
Material sugerido:
OBS: Não precisa ser especialista no assunto, mas antes de ver todo resto eu dedicaria um tempo entendendo esse assunto, pois os assuntos Cloud e containers serão mais fáceis pra você depois desse estudo.
Conhecimento de Cloud
Aprenda sobre como utilizar algum fornecedor de Cloud, pois boa parte dos serviços são parecidos em seu funcionamento, ou seja, se você aprender um deles não encontrará muitos problemas em utilizar seus concorrentes. Na perspectiva de possibilidade de trabalho, eu aconselharia você começar pela AWS, que tem o maior números de clientes hoje.
Material sugerido para AWS:
- Curso online pago - Cloud Guru - AWS Certified Solutions Architect Associate
- Canal Youtube Cloud Guru
Material sugerido para Google Cloud:
Material sugerido para Azure:
- Portal de treinamentos gratuitos de Azure criado pela Microsoft
- Microsoft Virtual Academy - Academia virtual da Microsoft com treinamentos gratuitos de Azure
- Lista curada de aprendizado de Azure - Ricardo Martins
Conhecimento de gerência de configuração
Você precisará automatizar a configuração dos seus ativos (servidores, switchs e afins), com isso algumas ferramentas precisam de alguma atenção no seu estudo. Você precisa de um nível acima do básico em ao menos uma delas. Eu aconselho experimentar todas descritas abaixo, mas escolha uma para especialização:
- Puppet
- Chef
- Ansible
Material sugerido para Puppet:
Material sugerido para Chef:
Material sugerido para Ansible:
Conhecimento de containeres
Você precisará saber sobre containers e duas ferramentas dominam esse assunto, Docker e Kubernetes. Você precisa saber além do básico em ambos produtos.
Material sugerido para Docker:
- Livro Containers com Docker - Daniel Romero
- Livro Aprendendo Docker - Wellington da Silva
- Livro Descomplicando Docker - Jeferson Fernando Noronha
- Livro Docker para desenvolvedores - Livro Código Aberto - Rafael Gomes
Material sugerido para Kubernetes:
- Kubernetes Basics
- Treinamentos online grátis oficiais
- Kubernetes The Hard Way
- Tradução do Kubernetes The Hard Way
Conhecimento de CI/CD
É importante conhecer sobre Continuous Integration e Continuous Delivery. Ambos são conceitos centrais dessa mudança de paradigma de desenvolvimento de software e fornecimento de infraestrutura automatizada.
Como material sugerido, eu aconselho o que pra mim seria a bíblia do “DevOps”:
Esse livro é grande, mas uma leitura simples! Tem a versão traduzida se preferir:
O Jenkins “reina” com uma vantagem considerável entre as ferramentas mais comum sobre esses assuntos.
Material sugerido para Jenkins:
- Curso online pago - Master Jenkins CI For DevOps and Developer
- Livro Jenkins - Automatize tudo sem complicações - Fernando Boaglio
Como ferramentas alternativas temos o GoCD, TeamCity e outras também relevantes, mas estudando o Jenkins você terá a base sólida sobre uso de ferramentas de CI/CD. Fique atento aos conceitos informados no livro “Entrega Contínua”.
Conclusão
Importante salientar que os conhecimentos necessários para uma carreira “DevOps” não acabam aqui, mas acredito que esses sejam os mais básicos/intermediários para quem tinha interesse em ter um “norte” mais curto/médio prazo.
Lembre-se, esse é um texto em construção constante e feito através de colaboração de muitas pessoas. Se você tem alguma sugestão, mande um PR a partir desse arquivo.
Agradecimentos
A todos do canal DevOpsBR no Telegram que colaboram em enriquecer o texto.