DevOps Roadmap – 10 Passos Para Se Tornar DevOps Engineer em 2024
O DevOps Roadmap é um guia definitivo que mostra quais são os 10 passos necessários para você se tornar um(a) Engenheiro(a) DevOps de sucesso.
Table of contents
- ♾️ O que é DevOps?
- 👩💻 O que faz quem trabalha com DevOps?
- ⛰️ Como se tornar DevOps?
- 🗺️ O que é o DevOps Roadmap?
- 🧰 Caixa de ferramentas DevOps
- 📚️ Biblioteca DevOps
- 🏁 Conclusão
- 🫵 Agora é sua vez
O DevOps Roadmap é um guia completo e definitivo estruturado nos 10 passos para se tornar um DevOps altamente requisitado no mercado de trabalho, independentemente do seu ponto de partida.
Ele foi criado com base na minha experiência de mais de 15 anos trabalhando em diferentes cargos de Operações (Arquiteto, Engenheiro, Líder de Equipe) para empresas do Brasil e do exterior e funciona como um guia que eu gostaria de ter acesso caso recomeçasse minha carreira do absoluto zero e escolhesse essa especialização.
Investi (e continuo investindo) inúmeras horas para produzir e manter este Roadmap, com o intuito de te ajudar a caminhar na direção correta, para que você não perca tempo e dinheiro durante sua jornada de estudos.
Comece agora mesmo a navegar por este guia e descubra como se tornar um profissional DevOps de sucesso 😉
♾️ O que é DevOps?
Antes de mergulharmos de cabeça nas habilidades técnicas que um DevOps precisa ter, vamos primeiro falar de alguns conceitos básicos.
Por este motivo, começo este guia respondendo esta dúvida frequente:
O que é DevOps?
DevOps é uma metodologia que combina o desenvolvimento de software e as operações de TI para fornecer software de alta qualidade com mais eficiência.
Por meio de melhorias na comunicação, colaboração e integração entre as equipes de desenvolvimento e operações, o DevOps atua no ciclo de vida de desenvolvimento de software contínuo.
O objetivo final do DevOps é reunir desenvolvedores e equipes de operações para otimizar a entrega de software.
👩💻 O que faz quem trabalha com DevOps?
Agora que você entende o que é DevOps, talvez esteja se perguntando:
Existe um cargo específico para esse tipo de trabalho?
O que faz quem trabalha com DevOps?
A resposta para a pergunta #1 é: sim. E é chamado de Engenheiro(a) DevOps (ou Analista, dependendo da empresa).
A resposta para a pergunta #2 é: esses profissionais possuem as habilidades e conhecimentos necessários para atuar em todo o processo de criação e manutenção de software, desde o desenvolvimento até as operações, que abrange toda a pilha de tecnologia.
A função de um(a) Engenheiro(a) DevOps é gerenciar as práticas de DevOps e garantir o fluxo simplificado do processo de implantação.
Embora as principais responsabilidades de um Engenheiro DevOps possam variar de organização para organização, algumas funções e responsabilidades comuns incluem:
Implementação de operações de CI/CD.
Automatização da Infraestrutura.
Colaboração com diferentes equipes (equipes especialmente de Desenvolvimento de Software e Operações de TI).
Gerenciamento da disponibilidade e desempenho de aplicativos de software.
⛰️ Como se tornar DevOps?
Se você chegou até aqui, é sinal de que tem interesse nesse tal "DevOps" e agora está se perguntando:
O que é preciso para ser um DevOps?
A boa notícia é que você encontrou a melhor resposta para essa pergunta: o DevOps Roadmap da EdukTI 😀.
Chega de se sentir perdido(a) ou confuso(a)!
Este guia apresenta um roteiro infalível para se tornar um(a) DevOps.
🗺️ O que é o DevOps Roadmap?
O DevOps Roadmap é um guia passo-a-passo com links para materiais de estudo, para que você saiba quais são os conhecimentos e habilidades requisitados para se tornar um(a) DevOps requisitado pelo mercado de trabalho, independente do seu ponto de partida.
O DevOps Roadmap te guiará, desde os fundamentos até as ferramentas e práticas mais avançadas, te capacitando para:
Dominar as habilidades essenciais para se destacar na área.
Construir um portfólio sólido que comprove suas capacidades.
Conquistar a vaga dos sonhos em empresas que valorizam a agilidade e a inovação.
Este guia é para você se:
Deseja entrar na área de DevOps e construir uma carreira promissora.
Busca aprimorar suas habilidades e se tornar um profissional ainda mais completo.
Quer atualizar seus conhecimentos e acompanhar as últimas tendências do mercado.
Com o DevOps Roadmap, você terá acesso a:
Conteúdo didático e atualizado, cuidadosamente elaborado por quem atua na área (eu! 👋).
Dicas práticas para aplicar o que aprendeu em seu dia a dia.
Recursos extras para auxiliar seu estudo, como links para livros e cursos gratuitos e pagos.
Estes são os 10 passos do DevOps Roadmap:
Assine a newsletter para ter acesso gratuito a este mapa mental.
Falaremos de cada passo com mais detalhes à medida que avançarmos pelo DevOps Roadmap.
🐍 Passo 1 – Linguagem de Programação
A expressão se refere a um conjunto de regras e instruções que um programador constrói para gerar programas e softwares que serão processados por um computador, dispositivo móvel ou outro equipamento.
Embora um DevOps Engineer normalmente não desenvolva aplicações, é esperado que você:
Trabalhe diretamente com o time de desenvolvimento: para implantar as aplicações que esta equipe cria.
Tenha conhecimento de práticas e ferramentas de desenvolvimento: como controle de versão, participar de revisão de código, escrever testes unitários e familiaridade com princípios ágeis.
Automatize tudo que for possível: automação é uma parte crítica do ciclo de vida DevOps, que aumenta a velocidade e frequência de implantação do time de tecnologia.
Para isto, é importante escolher uma linguagem de programação que seja fácil de aprender e que você também possa utilizá-la para escrever scripts e automatizar tarefas rotineiras.
Portanto, neste primeiro passo, sua primeira missão é: aprender uma linguagem de programação.
De preferência, aprenda Python como linguagem de programação e eu te explico o motivo da minha recomendação:
Facilidade: Python é uma linguagem interpretada, poderosa e muito fácil de usar. Sua sintaxe tem alto nível de legibilidade e permite a escrita de código de diferentes maneiras: funcional, procedural e orientada a objetos.
Popularidade: Python é atualmente a linguagem de programação multi-paradigma mais popular de todo o mundo e é frequentemente recomendada como a primeira linguagem para iniciantes em programação em cursos e universidades em todo o mundo.
Multi-uso: Python também é uma linguagem de programação muito utilizada em projetos de dados (Big Data, Artificial Intelligence, Machine Learning, etc.) e outros fins.
Outras linguagens de programação que também são muito utilizadas e que valem a pena possuir um conhecimento básico são Javascript e Go.
📚️ Materiais:
Nome | Tipo | Idioma |
Começando a programar em Python para leigos | Livro | 🇧🇷 PT-BR |
Automate the Boring Stuff with Python | Livro | 🇺🇸 EN |
Curso Python – Curso em Vídeo | Curso | 🇧🇷 PT-BR |
Python Crash Course | Curso | 🇺🇸 EN |
🐧 Passo 2 – Linux
Ao contrário do que muita gente pensa, Linux não é apenas um sistema operacional (como Windows ou macOS), mas sim um termo popular para toda uma família de sistemas operacionais baseados em um mesmo núcleo de código.
Os Sistemas Operacionais (SO) são programas que gerenciam e alocam os recursos de hardware de um computador entre os programas que estão em execução: CPU, memória, disco rígido, dispositivos de entrada e saída (I/O) e de rede.
Os SOs são utilizados nas máquinas locais que as pessoas utilizam para realizar suas atividades e também são utilizados nos servidores que hospedam as aplicações implantadas.
Podemos considerar os SOs como tecnologias cruciais na caixa de ferramentas de um(a) DevOps.
Por este motivo, eu recomendo que você aprenda:
conceitos de sistemas operacionais
sistemas operacionais na prática
como gerenciar servidores pelo Terminal.
Conceitos de Sistemas Operacionais
Para ser bem-sucedido no cargo de DevOps, é importante entender que conhecimento técnico e conceitual são igualmente importantes.
Com base nessa afirmação, a minha recomendação é que você invista tempo na teoria antes de ir para a parte prática.
Estude os seguintes tópicos para aprender os fundamentos de um SO:
Inicialização de Sistemas Operacionais
Gestão de Entrada/Saída (I/O)
Gestão de Processos, Threads e Concorrência
Memória e Armazenamento
Sistemas de Arquivos
Gestão de Serviços
Virtualização de Servidores
Sistemas Operacionais, na Prática!
Essa é a hora de meter a mão na massa: aprenda Linux 🐧 .
Este é o SO que domina a infraestrutura de servidores de toda a Internet.
Você pode começar utilizando o Ubuntu, seja na sua estação de trabalho ou no servidor, caso você não possua experiência prévia com Linux.
Após obter experiência básica e se sentir seguro, explore outras opções de sistemas operacionais para adquirir cada vez mais domínio sobre esse tema.
Algumas opções de SOs que recomendo que você experimente:
Linux: CentOS ou Red Hat Enterprise Linux (RHEL)
Unix: FreeBSD
Como Gerenciar Servidores Pelo Terminal
Esqueça o ClickOps pelo bem da sua produtividade.
O terminal é a "casa” de quem implanta e administra sistemas, portanto, aprenda a viver nele.
É no terminal que executamos as operações de administração de sistemas via Linha de Comando (CLI ou Command Line Interface) que simplificam tarefas que exigiriam vários cliques em uma interface gráfica (GUI ou Graphical User Interface).
Além disso, alguns comandos são apenas executáveis através do terminal.
Um(a) DevOps precisa dominar o terminal para que você não dependa da interface gráfica na hora de implantar e configurar servidores e suas aplicações.
Esse domínio também lhe ajudará a desenvolver uma habilidade essencial: desenvolver scripts para automação de tarefas rotineiras em servidores Linux e, futuramente, pipelines de CI/CD.
Portanto, eu recomendo que você aprenda as seguintes ferramentas:
Gestão de Processos:
ps, top, htop, lsof,
etc.Editores de Texto:
vim, nano, emacs,
etc.Gestão de Desempenho:
sar, vmstat, iostat, nmon,
etc.Ferramentas de Manipulação de Texto:
echo, cat, grep, sort, cut, wc, uniq, awk, sed, tr,
etc.Ferramentas de Rede:
ping, netstat, netcat, tcpdump, traceroute, mtr, nmap, scp, dig, iptables
, etc.Outras ferramentas:
df, du, history, uname, strace,
etc
📚️ Materiais:
Nome | Tipo | Idioma |
Linux Hackathon | Desafio prático | 🇧🇷 PT-BR |
Linux Eficiente na Linha de Comando: Aumente Suas Habilidades na Linha de Comando | Livro | 🇧🇷 PT-BR |
Primeiros Passos no Linux - Conceitos e Principais Comandos | Curso | 🇧🇷 PT-BR |
The Shell Scripting Tutorial | Curso | 🇺🇸 EN |
Shell Script Profissional | Livro | 🇧🇷 PT-BR |
🕸️ 🛡️ Passo 3 – Redes e Segurança
Redes de computadores referem-se a dispositivos de computação interconectados que podem trocar dados e compartilhar recursos entre si. Esses dispositivos em rede usam um sistema de regras, chamados de protocolos de comunicação, para transmitir informações por meio de tecnologias físicas ou sem fio.
Atualmente, qualquer aplicação web depende de conexão de rede para receber e transferir dados dos usuários e de outras aplicações.
Por causa desse cenário, é muito importante que você compreenda basicamente:
Fundamentos de rede
Camadas de protocolos
Protocolos de rede
Interconexão de rede
Segurança.
Você precisa saber dos riscos de cada método de comunicação para saber como proteger suas aplicações e dados de pessoas mal intencionadas.
Estude:
Fundamentos de Rede
Tipos e Topologias de Redes: LAN e WAN
Transmissão de Dados e Pacotes: Pacotes, Cabeçalhos, Dados, etc
Camadas de Protocolos
Estude sobre o Modelo OSI e suas 7 camadas:
Física
Enlace
Rede
Transporte
Sessão
Apresentação
Aplicação
E também estude o Modelo TCP/IP e suas 4 camadas:
Aplicação
Transporte
Internet
Rede
Protocolos
Conheça sobre os principais protocolos utilizados atualmente.
DHCP
TCP e UDP
SSH
NAT, SNAT, DNAT
FTP
SMTP
SSL / TLS
HTTP / HTTPS
Interconexão de Rede
Conceitos: Endereço IP, Portas, Sub-redes e Roteamento, CIDR
Dispositivos: Switches, Gateways e Roteadores.
Serviços de Rede
Servidores Web: Nginx e Apache.
DNS
Caching e Content Delivery Network (CDN)
FTP, SFTP e SCP
E-mails: SMTP, SPF, DKIM, DMARC
Load Balancer (Balanceador de Carga)
Proxy (Reverso e Encaminhamento)
Segurança
Aprenda conceitos básicos de segurança, como funciona e como configurar um(a):
Firewall
VPN (Client-to-site e Site-to-site)
📚️ Materiais:
Nome | Tipo | Idioma |
Videoaula sobre Modelo OSI | Vídeo | 🇧🇷 PT-BR |
O que é o modelo OSI? | Artigo | 🇧🇷 PT-BR |
Redes de Computadores - Andrew Tanenbaum | Livro | 🇧🇷 PT-BR |
Arquitetura de Redes | Curso | 🇧🇷 PT-BR |
Implementing DevSecOps Practices: Supercharge your software security with DevSecOps excellence | Livro | 🇺🇸 EN |
🎲 Passo 4 – Bancos de Dados
Bancos de dados (português brasileiro) ou bases de dados (português europeu) são conjuntos de arquivos relacionados entre si, podendo conter registros sobre pessoas, lugares ou informações em geral. São coleções organizadas de dados que se relacionam ou não, com o objetivo de armazenar informações.
Como um(a) DevOps, uma das suas principais tarefas será "fazer o deploy da aplicação", ou seja, implantar (instalar e configurar) a aplicação criada pelo time de desenvolvimento em algum ambiente, seja o de testes/staging ou de produção, dentro do ciclo de vida de desenvolvimento de software adotado pela empresa.
Normalmente, as aplicações back-end precisam se comunicar com bancos de dados relacionais (SQL) para armazenar os dados capturados dos usuários e não é toda empresa que dispõe de um Administrador de Banco de Dados (ou DBA, Database Administrator) para executar todas atividades relacionadas à implementação e operação de um banco de dados.
Por este motivo, eu acredito que é muito importante um DevOps Engineer possuir:
conhecimento conceitual sobre bancos de dados
experiência com pelo menos uma das principais ferramentas de banco de dados relacionais utilizadas atualmente em novos projetos de software.
Neste passo, minhas recomendações são:
Conceitos e Fundamentos de Bancos de Dados
Tipos de Banco de Dados: SQL, NoSQL, Graph, etc
Principais Bancos de Dados SQL
📚️ Materiais:
Nome | Tipo | Idioma |
Introdução à Linguagem SQL: Abordagem Prática Para Iniciantes | Livro | 🇧🇷 PT-BR |
Curso Intensivo de MySQL: Introdução Prática ao Desenvolvimento Baseado em Banco de Dados | Livro | 🇧🇷PT-BR |
PostgreSQL: Banco de dados para aplicações web modernas | Livro | 🇧🇷 PT-BR |
Curso MySQL | Curso | 🇧🇷 PT-BR |
MySQL Tutorial | Curso | 🇺🇸 EN |
⛅️ Passo 5 – Cloud Computing
"A computação em nuvem é a entrega de recursos de TI sob demanda por meio da Internet com definição de preço de pagamento conforme o uso.
Em vez de comprar, ter e manter datacenters e servidores físicos, você pode acessar serviços de tecnologia, como capacidade computacional, armazenamento e bancos de dados, conforme a necessidade, usando um provedor de nuvem como a Amazon Web Services (AWS)."
A Computação em Nuvem mudou drasticamente a forma que as empresas constroem, implantam e operam as suas aplicações e atualmente o mercado de computação em nuvem é um dos que mais crescem dentro da indústria de TI.
A maioria das aplicações modernas que utilizamos são hospedadas em alguma plataforma de nuvem devido aos seus inúmeros benefícios:
agilidade
elasticidade
economia de custos
abrangência global em questão de minutos
Neste passo, a minha recomendação é que você escolha uma plataforma de computação em nuvem e aprenda os fundamentos e seus principais serviços.
Apesar de particularmente gostar muito do Google Cloud (ainda não tive experiência com a Microsoft Azure), eu acredito que a melhor plataforma para quem está iniciando no mundo da computação em nuvem é a Amazon Web Services (AWS).
A AWS é a plataforma líder em computação em nuvem e a mais robusta de todas as principais.
Portanto, conheça os principais serviços da AWS e, quando possível, invista em suas certificações.
👉 Veja aqui o Guia Passo-a-Passo Para Certificação AWS Solutions Architect Associate (SAA-C02) que eu publiquei após ter obtido essa certificação
Quando possível, explore outras plataformas de computação em nuvem como o Google Cloud e Microsoft Azure para ampliar cada vez mais suas habilidades.
📚️ Materiais:
Nome | Tipo | Idioma |
Amazon AWS: Descomplicando a computação na nuvem | eBook (Kindle) | 🇧🇷 PT-BR |
Amazon Web Services For Dummies | eBook (Kindle) | 🇺🇸 EN |
AWS na prática | Curso |
(link com desconto) | 🇧🇷 PT-BR |
| AWS Security Foundation | Curso
(link com desconto) | 🇧🇷 PT-BR |
| A crash course on AWS | Curso | 🇺🇸 EN |
| AWS Skill Builder | Curso | 🇧🇷 PT-BR / 🇺🇸 EN |
| AWS Certified Cloud Practitioner Certification Course (CLF-C02) - Pass the Exam! | Curso | EN 🇺🇸 |
🐳 Passo 6 – Containers
"Um contêiner é uma unidade padrão de software que empacota o código e todas as suas dependências para que o aplicativo seja executado de forma rápida e confiável de um ambiente de computação para outro."
Em resumo, utilizando containers, você consegue empacotar, implantar e escalar suas aplicações de maneira muito mais fácil e rápida em qualquer ambiente com a certeza (ou quase) de que sua aplicação irá executar da mesma maneira.
Graças a estes benefícios que a execução de aplicações utilizando containers tornou-se muito comum entre startups e empresas.
Por este motivo, no pilar Containers, a minha recomendação é que você aprenda:
🐳 Docker
Lançado em 2013 através do projeto open source Docker Engine, Docker é uma ferramenta que facilita a construção (build), teste e implantação de aplicações.
Essa ferramenta é líder de mercado na categoria Container Runtime (softwares para execução de contêineres, como Docker, LXC, etc) e hoje está presente em todos os lugares: seja em servidores Linux ou Windows, em Data Center On-Premise ou Cloud Computing, etc.
Como um(a) DevOps, é praticamente certo que você irá trabalhar com Docker em algum momento.
Por isso, minha recomendação é que você saiba tudo sobre essa ferramenta.
☸️ Kubernetes
Também conhecido como k8s, o Kubernetes é um sistema de código aberto para automatizar a implantação, dimensionamento e gerenciamento de aplicativos em contêiner.
Atualmente essa é a ferramenta mais popular do ecossistema DevOps e mundialmente há uma demanda gigantesca e crescente por profissionais que saibam implantar e operar aplicações no Kubernetes.
E não é pra menos: o Kubernetes se baseia em 15 anos de experiência na execução de cargas de trabalho de produção no Google, combinado com as melhores ideias e práticas da comunidade.
Por este motivo, essa ferramenta caiu nas graças da comunidade de engenharia e muito provavelmente você precisará entender o seu funcionamento para cumprir bem o seu papel dentro de um time DevOps.
Materiais:
Nome | Tipo | Idioma |
Descomplicando o Docker | Livro | 🇧🇷 PT-BR |
Docker: Up & Running: Shipping Reliable Containers in Production | Livro | 🇺🇸 EN |
The Kubernetes Book: 2024 Edition | Livro | 🇺🇸 EN |
A crash course on Docker | Curso | 🇧🇷 PT-BR |
Curso de Docker para iniciantes - aprenda Docker em 1 hora | Curso | 🇧🇷 PT-BR |
👁️ Passo 7 – Observabilidade
“Quão bem você pode entender o que está acontecendo em um sistema, frequentemente instrumentando-o para coletar métricas, logs ou rastreamentos.”
Amazon Web Services
Traduzindo, a Observabilidade é um conceito que aproveita práticas e ferramentas que já são comuns no dia-a-dia de pessoas administradoras de sistemas e tem o intuito de prover entendimento sobre a saúde de uma ou mais aplicações com base em três pilares:
Métricas
Logs de Eventos
Rastreabilidade
Essa prática de observar sinais de problemas em sua aplicação e na infraestrutura subjacente tem o objetivo de corrigir falhas antes que elas ocorram e se transformem no pesadelo de qualquer time de operação: o temido downtime (indisponibilidade do sistema).
A prática de Monitoramento pode ser dividida em 2 áreas:
Infraestrutura
Aplicações
E as minhas recomendações para este passo seguirão esta divisão.
Monitoramento de Infraestrutura
Monitorar a Infraestrutura significa coletar métricas sobre a infraestrutura subjacente às aplicações para evitar interrupções causadas por problemas como falta de espaço de disco, alto consumo de CPU ou memória, etc.
Na maioria das vezes, o impacto causado por falhas relacionadas à Infraestrutura é igual ou maior do que falhas causadas pelo código da aplicação.
Por isso, quanto mais rápido o seu time conseguir responder a um indício de falha, menos impacto estes problemas causarão a operação e consequentemente aos usuários.
Essas são as ferramentas para monitoramento de Infraestrutura que eu recomendo que você avalie e estude pelo menos uma.
Métricas: Prometheus, Datadog, New Relic, Dynatrace.
Logs: Elastic Stack, Graylog, Splunk
Monitoramento de Aplicações
Problemas internos com as aplicações podem ocorrer de diferentes maneiras.
Por exemplo, um valor abaixo do normal na taxa de conversão de um formulário pode ser um sinal de que o próprio formulário está funcionando mal quando os usuários tentam preencher.
O ideal é que as ferramentas de monitoramento utilizadas possam enviar alertas dos erros gerados na aplicação quando um evento como este acima ocorrer, assim como possa exibir a taxa de conversão, para que você tenha inúmeras formas de detectar problemas na operação da sua aplicação.
Abaixo listo algumas ferramentas de monitoramento de aplicações para que você possa aprender:
Métricas: Prometheus, Grafana
Logs: ELK (Elastic Stack)
Materiais:
Nome | Tipo | Idioma |
Observability Engineering | Livro | 🇺🇸 EN |
Prometheus: Up & Running | Livro | 🇺🇸 EN |
Observability with Grafana: Monitor, control, and visualize your Kubernetes and cloud platforms using the LGTM stack | eBook (Kindle) | 🇺🇸 EN |
Datadog Power User | Curso | 🇧🇷 |
Prometheus: do zero ao avançado + Grafana | Curso | 🇧🇷 |
🐙 Passo 8 – Controle de Versão
"O controle de versão, também conhecido como controle de fonte, é a prática de rastrear e gerenciar as alterações em um código de software. Os sistemas de controle de versão são ferramentas de software que ajudam as equipes de software a gerenciar as alterações ao código-fonte ao longo do tempo."
Após ler isso, talvez você esteja se perguntando:
"Já que controle de versão é uma ferramenta para Desenvolvedor de Software, qual o motivo de eu, como um(a) DevOps, ter que aprender?"
A resposta para essa pergunta está nesta mesma página da Atlassian:
"Como os ambientes de desenvolvimento aceleraram, os sistemas de controle de versão ajudam as equipes de software a trabalhar de forma mais rápida e inteligente. Eles são ainda mais úteis para as equipes de DevOps, pois as auxiliam a reduzir o tempo de desenvolvimento e aumentar as implementações bem-sucedidas.\"**
Muitas empresas atualmente adotam as metodologias de DevOps como parte de suas estratégias de transformação digital e com isso as ferramentas utilizadas entre os times de Desenvolvimento e Operações passaram a ter um maior grau de intersecção.
Esse é o caso do Git, o sistema de controle de versão mais utilizado no mundo atualmente e que virou ferramenta crucial para um time DevOps armazenar, versionar e compartilhar código para:
Construção de imagens Docker (Dockerfile);
Módulos Terraform e Ansible;
Pipelines de CI/CD.
Por este motivo, minha recomendação é que você aprenda:
Materiais:
Nome | Tipo | Idioma |
Aprendendo Git: Um guia prático e visual para os fundamentos do Git | Livro | 🇧🇷 PT-BR |
Pro Git (PDF) | Livro | 🇺🇸 EN |
Uma Referência Visual do Git | Curso | 🇧🇷 PT-BR |
Learn Git & GitHub | Curso | 🇺🇸 EN |
Learn Git Branching | Curso | 🇧🇷 PT-BR |
Git e GitHub - Controle de versão para iniciantes | Tutorial | 🇧🇷 PT-BR |
Curso de Git e Github COMPLETO 2023 [Iniciantes] + Desafios + Muita Prática | Curso | 🇧🇷 PT-BR |
📦️ Passo 9 – CI/CD
“Continuous Integration (CI ou Integração Contínua) e Continuous Delivery (CD ou Entrega Contínua) é uma prática diretamente ligada a um dos fundamentos da metodologia DevOps: a integração entre times de Desenvolvimento e Operações.”
Como um(a) DevOps, saber automatizar tarefas rotineiras é uma das mais importantes atividades que você irá desempenhar e, por isso, considero que aprender a construir pipelines de CI/CD é uma habilidade essencial.
Para isto, existem diversas ferramentas de CI/CD que são capazes de gerenciar todo o ciclo de vida DevOps, desde a ideia e planejamento do software até o desenvolvimento, teste, construção e implantação automatizada.
A automação desses processos economiza tempo dos membros da equipe e consequentemente permite que eles foquem em atividades que trarão maior retorno ao time e à empresa.
Com base nisto, neste passo a minha recomendação é que você aprenda:
Continuous Integration: o que é, para que serve e como implantar
Continuous Delivery: o que é, para que serve e como implantar
Qual é a diferença entre Continuous Delivery e Continuous Deployment
Principais soluções:
Outras ferramentas que eu sugiro que você fique de olho: Harness, Tekton e principalmente ArgoCD que são ferramentas de Continuous Delivery modernas e capazes de implantar aplicações em clusters Kubernetes e que estão ganhando bastante popularidade ultimamente.
Materiais:
Nome | Tipo | Idioma |
Continuous Integration: Improving Software Quality and Reducing Risk | Livro | 🇺🇸 EN |
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation | Livro | 🇺🇸 EN |
Learn GitLab with tutorials | Curso | 🇺🇸 EN |
Learn GitHub Actions | Curso | 🇺🇸 EN |
Criando um Workflow AUTOMATIZADO de CI com o Github Actions | Vídeo | 🇧🇷 PT-BR |
GitHub Skills | Curso | 🇺🇸 EN |
📝 Passo 10 – Infraestrutura Como Código (IaC)
Infraestrutura como código (IaC) refere-se ao gerenciamento e provisionamento da infraestrutura por meio de códigos, em vez de processos manuais. A sigla vem do termo em inglês, "Infrastructure as Code".
Enfim, chegamos no último – mas não menos importante – passo para se tornar um(a) DevOps: Infraestrutura Como Código (IaC, Infrastructure-as-Code).
Este pilar é o último pois recomendo que você primeiro aprenda tópicos fundamentais (por exemplo: Sistemas Operacionais, Redes e Segurança, Bancos de Dados) antes de querer usar ferramentas de IaC em seus projetos.
Com IaC, é possível criar e gerenciar recursos de infraestrutura em plataformas de nuvem, datacenters virtuais e até mesmo SaaS, usando geralmente código declarativo para criar um ambiente com os requisitos necessários para execução da sua aplicação.
Automatizar tudo com código é, talvez, a mais importante tarefa de um(a) DevOps.
Por isto, a minha última dica nesse roadmap é para você surfar esta onda aprendendo a principal ferramenta de IaC do mercado: Terraform.
Você não vai se arrepender de aprender Terraform: a maioria das empresas no Brasil e exterior que fazem uso de IaC usam esta ferramenta.
Inclusive, no ano passado eu publiquei o Guia da Certificação Terraform Associate contando os detalhes do que fiz para conseguir aprovação no exame. Confira caso queira saber de mais detalhes!
Porém, se preferir aprender outras ferramentas de IaC, recomendo avaliar:
Ansible (particularmente, prefiro usá-lo apenas para Gestão de Configuração)
📚️ Materiais
Nome | Tipo | Idioma |
Terraform: Up and Running: Writing Infrastructure as Code | Livro | 🇺🇸 EN |
A crash course on Terraform | Curso | 🇧🇷 PT-BR |
Terraform Tutorials | Curso | 🇺🇸 EN |
Ansible para SysAdmin | Curso |
(link com desconto) | 🇧🇷 PT-BR | | Getting started with Ansible | Curso | 🇺🇸 EN |
🧰 Caixa de ferramentas DevOps
Assim como qualquer tipo de engenheiro(a) precisa de boas ferramentas no seu trabalho, é crucial que o(a) DevOps selecione boas ferramentas para o sucesso do seu projeto.
Ao escolher ferramentas DevOps, é importante considerar os seguintes fatores:
Necessidades específicas da equipe e da empresa
Funcionalidades e recursos oferecidos pelas ferramentas
Facilidade de uso e integração com outras ferramentas
Custo e suporte técnico
🛠️ Ferramentas
Separadas de acordo com cada etapa do ciclo de vida DevOps:
Plan:
Gestão de Conhecimento: Confluence, Notion, Coda
Desenho de arquitetura: Lucidchart, draw.io, Brainboard,
Code:
Build, Test (CI):
CI/CD: GitHub Actions, GitLab CI/CD, Jenkins, CircleCI, Travis CI, Harness, Bamboo, TeamCity
Release, Deploy (CD):
Gestão de artefatos: Docker Registry, npm, Yarn
Infraestrutura como código e Gestão de Configuração: Terraform, Ansible, Puppet
Plataforma de nuvem: AWS, Google Cloud, Microsoft Azure
Operate:
- Orquestração de containers: Docker, Kubernetes, AWS Elastic Container Service, Google Kubernetes Engine, Red Hat OpenShift
Monitor:
📚️ Biblioteca DevOps
Lista dos livros bestsellers sobre temas relacionados à DevOps que você precisa ter na sua estante (mesmo que seja virtual):
Livro | Autor(es) | Descrição |
Manual de DevOps: como obter agilidade, confiabilidade e segurança em organizações tecnológicas | Gene Kim, Jez Humble, John Willis, Patrick Debois | Obra fundamental que abordar o tema de forma profunda com inúmeros cases. Os autores são as maiores referências em DevOps no mundo. |
O projeto fênix – um romance sobre TI, DevOps e sobre ajudar o seu negócio a vencer | Gene Kim, Kevin Behr, George Spafford | Não é um livro técnico. Como proposto, é realmente um romance, mas muito próximo de situações vividas por quem trabalha na área diariamente. |
Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations | Nicole Forsgren, Jez Humble, Gene Kim | Este livro apresenta as descobertas e a ciência por trás da medição do desempenho da entrega de software. |
DevOps Para Leigos: os primeiros passos para o sucesso | Emily Freeman | O livro ajuda engenheiros de software e diretores tecnológicos a transformar suas organizações e adotar uma estrutura DevOps. |
Google Site Reliability Engineering | Vários | Coletânea de livros sobre desenvolvimento, implantação e monitoramento de sistemas de software do Google. É uma leitura obrigatória para qualquer pessoa interessada no lado operacional do DevOps ou que busca fortalecer a colaboração entre as equipes de Dev e Ops. |
🏁 Conclusão
O caminho para se tornar um(a) DevOps bem-sucedido(a) exigirá de você não só um vasto conhecimento conceitual de fundamentos, metodologias e práticas DevOps, mas também muito conhecimento técnico das plataformas e ferramentas utilizadas no ciclo de vida DevOps.
Por este motivo, eu acredito que o recurso mais importante que você deve possuir no início desta jornada é um guia que servirá como uma espécie de mapa, feito por alguém que já percorreu este caminho e que possui conhecimento e experiência suficiente para te direcionar nesta estrada.
Afirmo com toda certeza que se eu fosse recomeçar a minha carreira nesta área, com certeza, seguiria o passo-a-passo que inclui nessa página, pois sei da importância de ter um roteiro de estudos bem detalhado e orientado às demandas do mercado.
🫵 Agora é sua vez
Eu investi muitas e muitas horas para produzir e manter esse conteúdo gratuito no intuito de te ajudar.
Por isso, caso esse material tenha te ajudado de alguma forma ou você tenha lembrado de alguém que tenha interesse, peço que:
Compartilhe o DevOps Roadmap: quero que o máximo de pessoas tenham acesso a este material. Envie para os seus amigos de profissão, pessoas que possuem interesse em atuar no mercado de Tecnologia, mas que não sabem dessa opção de cargo ou que não sabem por onde começar.
Comente aqui embaixo: quero saber de você o seguinte…
O que você achou do DevOps Roadmap?
Você adicionaria ou removeria alguma dessas tecnologias?
Espero de coração que este guia faça a diferença na sua carreira ❤️
Até breve! 👋🏾
– Sérgio Francisco