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:

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:

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:

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:

Material sugerido para Google Cloud:

Material sugerido para Azure:

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:

Material sugerido para Kubernetes:

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:

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.

Fontes

comments powered by Disqus