Dev Ops Essentials
Dev Ops Essentials
Dev Ops Essentials
Essentials.
DevOps
devops → essentials Andreyson Souza / andreysonsouzapt@gmail.com
Andreyson Souza / andreysonsouzapt@gmail.com
Sumário
1 O que é DevOps 5
1.1 Manifesto Ágil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Agile Conference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Velocity Conference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 DevOpsDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Atualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 C.A.M.S. ( Culture, Automation, Measure, Sharing) . . . . . . . . . . . . . . 7
1.6.1 C de Cultura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6.2 A de Automação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.3 M de Medição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.4 S de Compartilhamento . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Afinal, o que é Agile? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.8 Spotify Squads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2
3 Sumário
Andreyson Souza / andreysonsouzapt@gmail.com
8 CI / CD 27
8.1 Continous Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
8.2 Continous Deployment e Continous Delivery . . . . . . . . . . . . . . . . . . 27
12 Conhecer as plataformas 34
12.1 Github . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
12.2 Code Anywhere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
12.3 Heroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1
O que é DevOps
Definir o que é DevOps é uma tarefa quase impossível, mas vou tentar explicar para vocês. . .
O Termo DevOps tem tomado uma grande importância no mundo todo. Empresas como
Amazon, Netflix, Facebook, Walmart, Spotify, entre tantas outras, estão investindo em fun-
cionários, ferramentas e ambientes que sigam as práticas DevOps para melhorar a entrega e a
qualidade de seus produtos.
Hoje, no entanto, o conceito de DevOps também está sendo utilizado para classificar fun-
cionários, departamentos e times dentro do ambiente empresarial. Funcionários que possuem
o perfil DevOps têm competência para trabalhar tanto na área de Desenvolvimento de Software
como na área de Administração de Sistema.
5
6 1. O que é DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Para conhecermos sobre a história do DevOps, primeiro precisamos voltar no tempo e entender
sobre Desenvolvimento e Manifesto Ágil.
Manifesto Ágil
Tudo começou na década de 60, com o surgimento de diversas metodologias para processos
de desenvolvimento, como por exemplo o Kanban. Elas surgiram com o intuito de auxiliar
o desenvolvedor a entregar seus projetos o mais rápido possível, facilitando a resposta às
mudanças. Apesar da ampla utilização dessas metodologias, somente em 2001 um grupo de
17 desenvolvedores se reuniram em um resort para realmente discutir quais os pontos positivos
em diversas metodologias que utilizavam.
A partir dessa discussão, surgiu o Manifesto para Desenvolvimento Ágil de Softwares, que
ficou popularmente conhecido como Manifesto Ágil. O Manifesto Ágil afirma que melhores
resultados no desenvolvimento de software podem ser obtidos através da valorização de:
Agile Conference
Entre 2001 e 2008 diversas discussões foram propostas sobre como agilizar as entregas, sendo
uma delas a palestra Infraestrutura Ágil de Andrew Schafer. Foi durante essa palestra que
Andrew conheceu Patrick Debois e, juntos, criaram o grupo Agile System Administrator na
plataforma Google Docs.
Assim, o termo DevOps surgiu em 2009, mas a ideia por trás já existia anos antes. A primeira
vez que houve uma discussão sobre o assunto foi durante a Agile Conference de 2008, onde
Andrew Schafer apresentou sua palestra de infraestrutura ágil para apenas uma pessoa: Patrick
Debois.
Após a palestra, ambos discutiram diversos assuntos relacionados, sendo que posteriormente
foram responsávei por criar o grupo Agile System Administrator para difundir o assunto e
convidar mais pessoas para colaborar.
Velocity Conference
Em 2009, na Velocity Conference da O’Reilly, John Allspaw e Paul Hammond apresentaram
a famosa palestra chamada “10+ Deploys per Day: Dev and Ops Cooperation at Flickr”.
Durante esse evento, foram discutidos assuntos como:
7 1. O que é DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Patrick Debois comentou no twitter que lamentava não estar presente na palestra, recebendo
do Flickr a seguinte resposta:
DevOpsDays
Motivado pela palestra dos engenheiros da Flickr, Patrick Debois decidiu criar sua própria
conferência na Bélgica, que ficou conhecida como DevOpsDays e foi um sucesso. Para lembrar
o dia, foi criada a tag #DevOps no Twitter, que posteriormente seria usado como o nome da
cultura.
Atualidade
Desde então, cada vez mais pessoas estão se tornando adeptas da cultura DevOps. Alguns dos
acontecimentos mais recentes que favoreceram isso foram o surgimento de diversas tecnologias
de apoio a essa ideologia, como, por exemplo, os livros Phoenix Project e Site Reliability
Engineering do Google.
Phoenix Project é uma fábula que conta como um analista de TI salvou o departa-
mento de uma companhia com a cultura DevOps # Compreender a importância do
DevOps
Para entendermos a importância do DevOps, precisamos primeiro entender seus quatro pilares
de sustentação.
C de Cultura
Respeite a cultura.
8 1. O que é DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
A de Automação
Automatize se possível
Quando falamos de DevOps, queremos eliminar o máximo de trabalho laboral possível, trabalho
laboral é aquele trabalho repetitivo. Se você, por exemplo, gasta todo dia 30 minutos para
efetuar uma determinada ação, porque não gastar um tempo superior, como, por exemplo, 2
horas para automatizar esta rotina e poupar esses 30 minutos a partir de então?
M de Medição
Measure Results
Precisamos medir tudo que é possível: de processos a pessoas. Afinal, a única maneira de
verificar se estamos no caminho certo ou melhorando é através da medição. O processo de
melhoria contínua é o coração do DevOps!
S de Compartilhamento
Sharing the Feedback
Ambientes DevOps têm como uma das características fundamentais a cultura Blameless
ou, em português, “Sem Culpa”, que é exatamente o que cria um ambiente propício ao
compartilhamento. Não é sobre ninguém ser culpado por uma determinada ação que levou
os sistemas a ficarem indisponíveis, é sobre todos se sentirem seguros e não terem medo de
cometer erros. O erro faz parte do processo de aprendizado e deve ser compartilhado, assim
como todas as melhorias que aplicamos em nosso ambiente de trabalho. # Correlacionar
Metologias Ágeis com DevOps
Quando falamos de DevOps, também precisamos entender sobre metodologias ágeis, uma vez
que todo o processo DevOps é conhecido por ser um processo ágil.
9 1. O que é DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Com o Agile, trabalhamos com a a metodologia Scrum, que é um fluxo de trabalho composto
de sprints (corridas) com ciclos curtos, normalmente de 1 a 2 semanas. Nessas sprints, são
realizadas reuniões diárias de 15 minutos chamadas de Daily Standup, normalmente feitas
com a equipe de pé, por isso o nome Standup. O objetivo é falar o que foi feito no dia anterior
e discutir os próximos passos, desbloqueando a equipe caso exista algum problema impedindo
o desenvolvimento. No término da sprint, é realizada uma reunião de Retrospectiva ou
Review, que serve para apontar o que foi aprendido e o que foi feito. Em seguida, ocorre a
reunião de Planning, onde trabalhamos o backlog, uma lista de tarefas a serem executadas
para selecionar quais serão as tasks que serão trabalhadas na próxima sprint.
Scrum Master é responsável por guiar o time e dar suporte, se comunicar com outras equipes
e destravar sempre que possível os membros do time.
Product Owner é o dono do produto, é ele que sabe qual é a visão final do entregável e os
requisitos, por isso dá orientação sobre possíveis dúvidas.
Spotify Squads
Várias empresas têm seu próprio modelo de desenvolvimento ágil, normalmente baseado no
agile/scrum, mas um dos modelos que se tornou bem famoso é o modelo de spotify squads
que leva o nome da empresa que o criou.
Neste modelo de implementação ágil, as pessoas são focadas em ter autonomia para desen-
volver e escalar os serviços. No modelo spotify, trabalhamos com Squads ou esquadrões e
Tribes ou tribos. Temos também outras figuras que falaremos adiante.
Quando múltiplos Squads coordenam entre si para desenvolver uma mesma feature, aparece
10 1. O que é DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Mesmo os squads tendo autonomia para desenvolver, normalmente precisamos de uma força
extra de algum especialista em um determinado assunto, é ai que entra o Chapter. Chapters
são o agrupamento de especialistas de uma determinada tecnologia, como por exemplo banco
de dados, e com eles que podemos buscar apoio.
Membros de squads que são apaixondos em um determinado tópico podem criar uma Guild,
que nada mais é que uma comunidade de interesse. Um detalhe interessante é que não existem
líderes em guilds e qualquer um pode se juntar a uma Guild.
Cada tribo tem um TPD TRIO que é uma combinação de Team Lead, Product lead e
design lead para garantir que existe um alinhamento contínuo entre essas três perspectivas.
Quando o processo é muito grande, múltiplas tribos precisam trabalhar entre si para conquistar
um objetivo, Alliances são formadas com a combinação dos TPD Trios que trabalham em
conjunto para manter as tribos alinhadas em um objetivo principal que é maior que o objetivo
de cada tribo.
Por ser um modelo de muito sucesso, diversas empresas dizem que o modelo spotify é um
framework de desenvolvimento, porém a própria spotify diz que não é bem assim, já que
11 1. O que é DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Mas porque estamos falando do Modelo Spotify? Vocês vão ouvir falar muito sobre isso ao
longo da sua jornada DevOps. . . diversas empresas trabalham com modificações do modelo
spotify para adaptá-lo a sua necessidade. Vamos entender melhor! # O que preciso aprender
para me tornar um profissional Devops?
Para nos tornarmos profissionais DevOps, precisamos aprender sobre diversos temas.
• Cultura;
• Programação;
• Gerenciar Servidores, Virtualização, Redes e Segurança;
• Criação de Scripts;
• Instalar e configurar middlewares;
• Instalar softwares;
• Versionar arquivos com GIT;
• Automatizar tarefas e gerenciar configurações;
• Infraestrutura como Código;
• Observabilidade;
• Orquestração de Containers;
• Compartilhar etc.
Aprenda sobre a cultura – DevOps é um movimento e uma cultura muito antes de ser um
“cargo”, por isso os aspectos culturais são muito importantes.
Aprenda a criar scripts – Scripts podem ser considerados como uma programação, onde o
12 1. O que é DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Shell Script é um dos recursos mais utilizados, juntamente aos scripts escritos em Python, que
é uma linguagem onde é possível fazer muita coisa escrevendo pouco.
Aprenda como implantar software – Após aprender a configurar os middlewares, você vai
precisar saber implantar as aplicações em servidores. Por exemplo, pode ter em um servidor
com mais de uma aplicação rodando e utilizar o Nginx como proxy reverso para ambas.
Aprenda Infraestrutura como Código – IaC é um dos pontos mais fortes para um ambiente
DevOps. Afinal, ter um ambiente altamente confiável e escalável é uma das tarefas mais
importantes para a TI.
Aprenda a monitorar sua Infraestrutura e seu Software– Imagine um atleta olímpico. Ele
precisa de constante monitoramento de seus sinais vitais, alimentação, etc. . . A infraestrutura
e o software não são diferentes! O monitoramento com ferramentas apropriadas, como Zabbix
e Prometheus, permite prever e até evitar incidentes que possam causar um impacto negativo
na organização.
2
Preciso mesmo usar linux como
workstation?
Resposta curta? Sim.
Aprendemos linux porque a maior parte dos servidores na internet rodam sistemas linux e para
isso temos diversos motivos, mas vamos falar sobre três deles.
Se você abrir a página da Microsoft para ver quanto de Hardware é necessário para a instalação
de um Windows Server 2016, encontrará os seguintes requisitos mínimos: Processador de
1.4Ghz e 64 bits 2 GB de memória RAM 45 GB de espaço em disco.
Lógico que, hoje, existe a versão “core edition” que não possui a interface gráfica – e consome
incríveis 512MB RAM – porém, ainda consome cerca de 32GB de disco rígido. Além disso,
tente “controlar” um Windows Server 2016 com 2GB de RAM e você terá vontade de colocar
fogo em seu servidor e jogá-lo do vigésimo andar. Assim, é necessário ao menos 4GB para ter
13
14 2. Preciso mesmo usar linux como workstation?
Andreyson Souza / andreysonsouzapt@gmail.com
Quando falamos de Linux, podemos encontrar o seguinte cenário - aproveito para trazer duas
distribuições de “famílias” distintas:
Ubuntu Server 18.04 (requerimento mínimo): Processador 300Mhz x86 384 MB de memória
RAM 2,5 GB de espaço em disco
Windows
Hoje, temos alternativas como o WSL, o Windows Subsystem for Linux, que funciona muito
bem e ajuda a ter esse contato com o terminal e a linha de comando dos servidores linux. Não
é a mesma coisa, mas já é um ótimo primeiro passo.
MacOS e Linux
Tanto o Linux quanto o MacOs tem seu kernel baseado em UNIX. Inclusive, algumas pessoas
dizem que o MacOS é um linux, outros dizem que ambos são compativeis por uma série
de similaridades. No final, ambos fornecem uma facilidade para trabalhar no terminal. >
Deixando claro minha preferência por aqui, eu prefiro trabalhar com Linux <3# Por onde
devo começar?
Uff, mas é muita coisa! Vou desistir agora mesmo, parece impossível. . . você pode estar
pensando.
15 2. Preciso mesmo usar linux como workstation?
Andreyson Souza / andreysonsouzapt@gmail.com
Mas e então, por onde começar? Não existe um caminho certo ou errado, existe o caminho
que funciona para cada um. No meu caso, como já tinha uma boa base de redes e datacenter,
comecei a estudar devops com servidores linux, um pouquinho de shell, infraestrutura como
código com ansible e me especializei em container. Assim, fui seguindo por todos os outros
tópicos à medida que era exposto aos temas em meu ambiente de trabalho.
Pode parecer bem complicado, mas pensando de forma geral não é tanto assim. Primeiro
definimos um tema. Vamos usar como exemplo os Containers.
Agora que escolhemos o tema, precisamos definir o objetivo, que significa uma direção clara
do que você ou a sua empresa pretende conquistar. O objetivo precisa ser preciso, então nada
de “Subir um container com docker” ou “orquestrar containers com Kubernetes”.
Depois disso definimos os “Key Results” ou resultados chaves. Os resultados chaves servem
de parâmetro para determinarmos o quanto estamos perto de alcançar os objetivos.
Já que temos 5 Key Results, podemos dizer que cada um tem o peso de 20%. Assim, é
possível medir o quanto estamos próximos de concluir nosso objetivo.
Esse tipo de metodologia trabalha não só o lado técnico - pois OKRs são utilizados em ambi-
16 2. Preciso mesmo usar linux como workstation?
Andreyson Souza / andreysonsouzapt@gmail.com
entes DevOps-, como também o lado psicológico. Claramente, quando você consegue ver sua
evolução, por menor que ela seja, você se sente bem e funciona como uma motivação/prêmio
pelo esforço.
Andreyson Souza / andreysonsouzapt@gmail.com
3
Cloud & On Premises
Quando falamos em DevOps, sempre surgem dois termos: “Cloud” e “On Premises”. Mas,
afinal, o que significam?
Cloud
Cloud, ou a tão famigerada “Nuvem”, é o termo utilizado quando tratamos de uma rede global
de servidores. A palavra Nuvem é utilizada por ser uma tecnologia exatamente como as nuvens
que temos no céu: um ecossistema imenso, disperso por todo o globo terrestre. Assim, diversos
servidores trabalham juntos, sendo responsáveis por executar aplicativos, distribuir conteúdo,
transmitir e-mails ou vídeos e até mesmo aquelas redes sociais que você acessa no dia a dia.
On premises
On premises significa sobre premissa, ou seja, no local. Usamos esse termo para nos referir
a uma infraestrutura que está sendo executada localmente, em uma sala de servidores ou até
mesmo um Datacenter.
Então, isso quer dizer que só temos a “Cloud” e o “On Premises”, certo? Bem, mais ou menos.
Existem desdobramentos disso, como as clouds públicas, privadas e até mesmo hibridas, que
não necessariamente precisam ter seu acesso aberto para a internet. . . mas não se preocupe
com relação a isso no momento. Afinal, em todos os tipos de infraestrutura há espaço pra
DevOps, até mesmo quando falamos de Windows.
17
Andreyson Souza / andreysonsouzapt@gmail.com
4
Inteirar-se sobre o Mercado
DevOps
O mercado de trabalho DevOps anda bem aquecido.
18
19 4. Inteirar-se sobre o Mercado DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Mas quais são esses profissionais “DevOps” que são tão requisitados?
DevOps Engineer Site Reliability Engineering Cloud Platform Automation Development Lead
No geral, o profissional DevOps é aquele profissional que conhece e pratica a Cultura DevOps,
que Automatiza sempre que possível, que Mede os Resultados e que Compartilha o Feedback
(CAMS - Culture, Automation, Measurement, Sharing). Lembra?
Andreyson Souza / andreysonsouzapt@gmail.com
5
Explorar as principais
Certificações
Quando falamos de DevOps, não podemos deixar de citar as principais certificações para o
mercado.
Técnicas
LPI DevOps Tools Engineer (LPIC-OT)
Testa o candidato com relação a todos os pilares de DevOps, bem como conhecimento em:
• Engenharia de Software;
• Gerenciamento de Containers;
• Deploy de Máquinas;
• Gerenciamento de Configurações;
• Operações de Serviços.
20
21 5. Explorar as principais Certificações
Andreyson Souza / andreysonsouzapt@gmail.com
• Orquestração;
• Criação, Gerência e Registro de Imagens;
• Instalação e Configuração;
• Redes;
• Segurança;
• Armazenamento e Volumes.
• Conceitos Base;
• Configuração;
• Pods Multi-containers;
• Observabilidade;
• Serviços e Redes;
• Persistência de Estado.
Certificações Cloud
Certificações de Cloud como GCP, AWS, Azure são muito valiosas. Normalmente testam o
conhecimento do candidato nos níveis de:
Não Técnicas
Exin DevOps
Existem diversas certificações na área de Scrum & Agile voltadas para Scrum Masters, Product
Owners, Coachs e Fundamentos. # O que é uma pipeline?
O nome Pipeline quer dizer tubulação, um recurso utilizado para transportar um produto -
seja óleo, gás, água etc. - para um destino.
6
Entender uma Pipeline de
Desenvolvimento Ágil
Quando falamos de Desenvolvimento Ágil de software, precisamos entender que está direta-
mente ligado a uma “pipeline” de software.
• Planejamento;
• Análise;
• Desenho;
• Implementação;
• Testes e Integração;
• Deploy e Revisão.
23
Andreyson Souza / andreysonsouzapt@gmail.com
7
Explorar uma Pipeline DevOps
Uma pipeline DevOps tem como base uma pipeline agile, mas ligeiramente diferente.
Também trabalhamos com pequenos entregáveis, porém o processo é um ciclo sem fim. Temos
dois círculos: trabalhamos em sua metade com a parte de Dev, e a outra metade com a parte
de Ops.
A diferença básica é que sempre estamos voltando ao inicio do ciclo e “melhorando” o processo.
Planejar
Para a etapa de planejamento, as ferramentas mais utilizadas são boards Kanban. Podemos
citar o Jira, Trello, Wekan, Notion dentre várias outras.
24
25 7. Explorar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Desenvolver ou Codificar
Durante a etapa de Desenvolvimento, ou coding, diferente do que as pessoas normalmente
pensam com relação a uma linguagem de programação, estamos dizendo da organização do
código e da colaboração entre as equipes. A ferramenta mais utilizada nesta etapa é, sem
sombra de dúvidas, o git. Juntamente a ele utilizamos algum servidor git, normalmente github,
gitlab, bitbucket, gitea, gogs, ou alguma outra solução.
Construir
A etapa de construção, ou build, está diretamente ligada à geração do artefato entregável,
seja ele um pacote java, python ou até mesmo um executável. Nesta etapa, normalmente é
utilizado o Gradle, Maven, Packer.
Testar
Nesta etapa, efetuamos diversos testes para garantir que o entregável é de fato o que foi
planejado. Quando falamos de desenvolvimento, normalmente o profissional qualificado para
desenvolver os testes é o QA Engineer ou Quality Assurance Engineer. É o profissional que
garante a “qualidade” da entrega. Nesta etapa, utilizamos normalmente as ferramentas Sele-
nium, JUnit, pytest, inspec.
Lançar ou Deploy
Essa é uma das etapas com mais ferramentas a serem utilizadas, dentre elas temos o Terraform,
Ansible, Chef, Puppet, Powershell.
Implantar e Operar
A etapa de implantação é que mobiliza mais ferramentas a serem utilizadas, é nela que fazemos
com que nosso artefato testado entre em execução. Nesta etapa, podemos utilizar ferramentas
como docker, rkt, kubernetes, nomad, openshift e também as mais diversas clouds como
Microsoft Azure, Amazon AWS e Google Cloud Platform entre outras.
26 7. Explorar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Monitorar
Na etapa de monitoramento, garantimos que o sistema está saudável. É uma das etapas
mais importantes de uma pipeline DevOps, onde monitoramos endereços IP‘s, registros DNS,
arquivos de logs e status de API’s. São utilizadas ferramentas como Prometheus, Grafana,
Elasticstack, Datadog, Splunk, Nagios.
Andreyson Souza / andreysonsouzapt@gmail.com
8
CI / CD
Para fazermos a integração de todos os passos de uma pipeline DevOps, precisamos entender
um conceito muito interessante que é chamado de CI/CD. CI, ou Continous Integration,
se traduz no conceito de Integração Contínua e CD, Continous Deployment ou Continous
Delivery, é a Entrega ou Implantação Contínua.
Continous Integration
Podemos dizer que o Continous Integration é o que liga todas as partes do processo, o gatilho
que faz com que um processo ou ferramenta A, se conecte a um processo ou ferramenta B,
que trabalha garantindo uma integração contínua entre cada elo do processo.
27
Andreyson Souza / andreysonsouzapt@gmail.com
9
O que é Git Ops?
Muitas pessoas tentam dizer que devops é uma coisa e gitops é outra, mas não é bem dessa
maneira.
Repositório Local - Repositório Local é o diretório git localizado em sua máquina onde é
feito toda a codificação do produto;
Branches - Branches são linhas que divergem do tronco principal de desenvolvimento, nor-
malmente utilizamos branches para implementar novas features (recursos) ou fixes (correções)
sem que o código que está rodando em produção seja modificado no meio deste processo;
Pull Request - Pull request, ou merge request, é o processo em que o código de uma branch
não principal é solicitado a ser migrado com o código principal, tornando assim possivel a
atualização do produto;
Review - O processo de review consiste na equipe devops avaliar o código enviado por meio
28
29 9. O que é Git Ops?
Andreyson Souza / andreysonsouzapt@gmail.com
Merge - Processo em que é feito a fusão do código requisitado pelo pull request com o código
da branch principal;
Para trabalhar com gitops, desenvolvemos o código em nosso repositório local, através de
uma branch não principal, enviamos o código para nosso repositório remoto e criamos um pull
request para ser feito o review. Após este review, efetuamos o merge do código. No fim desses
passos, é ativado um webhook para dar prosseguimento ao processo de entrega.
ChatOps
Muitas das vezes, trabalhamos com ChatOps, que também mobiliza os conceitos de GitOps
10
Quais os benefícios e porque eu
preciso aprender Git Ops ?
GitOps traz bastantes benefícios para uma pipeline devops. O principal é a cultura de com-
partilhamento e trabalho distribuído, o qual permite que diversas pessoas consigam trabalhar
de forma simultânea a fim de atingir a entrega de maneira mais rápida, ou seja, mais ágil.
Estes são apenas alguns dos muitos benefícios elencáveis! Como conclusão, podemos dizer
que quanto mais se trabalha com GitOps, mais benefícios da utilização são aproveitados! #
30
31 10. Quais os benefícios e porque eu preciso aprender Git Ops ?
Andreyson Souza / andreysonsouzapt@gmail.com
DevOps está diretamente ligado ao Open Source por um de seus pilares mais importantes, o
Compartilhamento.
DevOps é sobre se importar com toda a linha de entrega, seja você vindo de Desenvolvi-
mento(Dev) ou Operação(Ops). No DevOps, nos preocupamos com o entregável, por isso,
a questão do “não é problema meu” não deve existir. O objetivo de todos é entregar um
produto, e se esse produto não está sendo entregue é algo que afeta toda a empresa.
As equipes DevOps devem estar inteiramente comprometidas com este compartilhamento. Por
esse motivo, geralmente optam por ferramentas OpenSource, uma vez que seu código é aberto
e sua base é o compartilhamento em prol da comunidade.
11
Conhecer quais são as principais
Ferramentas DevOps
Já que vamos trabalhar com DevOps, é bom conhecer as principais ferramentas atualmente
utilizadas no mercado por área:
Lembrando que estamos citando apenas ferramentas OpenSource ou com planos Free:
Plan
• Notion
• Trello
• Github
• Gitlab
• Diagrams
Code
• Git
• VSCode
32
33 11. Conhecer quais são as principais Ferramentas DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
CI/CD
• Jenkins
• Github
• Gitlab
Test
• Inspec
• Molecule
• Selenium
• Docker
• Kubernetes
• Ansible
• Terraform
Monitor / Operate
• Prometheus
• Grafana
• Zabbix
• Graylog
• Fluentd
• Slack
• RocketChat
12
Conhecer as plataformas
Agora que já entendemos os conceitos básicos do DevOps, vamos implementar uma pipeline
completa! Não se preocupe com os recursos do seu computador, utilizaremos apenas platafor-
mas web gratuitas para desenvolver nosso projeto.
Github
Começaremos pelo Github, plataforma onde vamos guardar nosso código e executar todo o
processo de CI/CD de forma automática.
Para isto, acesse o website https://github.com e crie sua conta clicando em Sign up
34
35 12. Conhecer as plataformas
Andreyson Souza / andreysonsouzapt@gmail.com
Code Anywhere
O Code Anywhere será nosso Cloud IDE, onde iremos escrever nosso código para enviar para
o github.
Heroku
Heroku é um PaaS (Plataforma como Serviço) para publicar aplicações na cloud.
Agora que temos todas as contas criadas, podemos seguir para as plataformas e entender
como trabalhar com cada uma delas. Vamos lá?
Andreyson Souza / andreysonsouzapt@gmail.com
13
Explorar alguns comandos
Básicos do Git
Para trabalhar com o Git iremos utilizar nossa conta do github juntamente com nosso IDE o
codeanywhere.
Ao criar esse repositório já vemos alguns comandos git que podemos utilizar, por hora vamos
seguir para o codeanywhere para inicializar nosso ambiente de desenvolvimento, iremos voltar
no github em alguns minutos.
36
37 13. Explorar alguns comandos Básicos do Git
Andreyson Souza / andreysonsouzapt@gmail.com
Aguarde alguns minutos para que o deploy do nosso ambiente seja executado e possamos
trabalhar com o mesmo.
Uma vez que seu state apareça como Started podemos clicar em OPEN IDE
1. Workspace -> Aqui é onde vemos nossa área de trabalho, os arquivos e os diretórios
que iremos trabalhar.
2. Editor -> Através do editor podemos criar/modificar/editar os arquivos do nosso workspace
3. Terminal -> O clássico terminal linux, onde podemos executar os comandos shell.
38 13. Explorar alguns comandos Básicos do Git
Andreyson Souza / andreysonsouzapt@gmail.com
$ git --version
Agora que verificamos que temos nosso binário do git instalado, vamos criar um diretório para
trabalharmos com o git.
$ mkdir estudo-git
$ cd estudo-git
$ git init
Uma vez criado nosso repositório iremos configurar nosso nome e email padrão através do
comando
$ touch arquivo1
39 13. Explorar alguns comandos Básicos do Git
Andreyson Souza / andreysonsouzapt@gmail.com
O comando git add adiciona o arquivo em uma área chamada staging, é basicamente
uma área de “espera” onde o arquivo aguarda ser enviado para o código principal
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
O comando git commit salva o estado dos arquivos que estão na área de staging. O
parâmetro -m atribui uma mensagem ao commit, servido para identificar facilmente
o que foi realizado na alteração.
Vamos modificar novamente nosso repositório desta vez criando 20 arquivos dentro do mesmo
$ touch app{1..20}.log
Agora temos 20 arquivos fora do nosso commit que precisam ser adicionados.
$ git status
Para adicionar todos os arquivos não é necessário adicionar um a um, podemos utilizar o
parâmetro --all ao comando git add
$ git log
41 13. Explorar alguns comandos Básicos do Git
Andreyson Souza / andreysonsouzapt@gmail.com
Nosso repositório remoto será o github. Vamos acessar nosso github e abrir nosso repositório
estudo-git criado anteriormente.
Ao abrir nosso repositório vemos um guia rápido com algumas informações importantes.
Iremos trabalhar com a segunda opção, pois já temos nosso repositório incializado.
Mas primeiramente precisamos gerar um par de chaves ssh para ter uma comunicação segura
entre o github e o codeanywhere container.
42 13. Explorar alguns comandos Básicos do Git
Andreyson Souza / andreysonsouzapt@gmail.com
ssh-keygen
$ cat ~/.ssh/id_rsa.pub
Este comando irá adicionar uma origem remota para nosso repositório, fazendo com que o git
conheça para onde deve ser enviado o código quando executarmos um comando de push
Execute o comando git remote add origin > Lembre-se de utilizar o comando para seu usuário,
ou o mesmo não irá funcionar.
Este comando irá criar uma fonte chamada origin com o endereço do seu repositório, podemos
verificar através do comando
$ git remote -v
Após isto iremos modificar o nome da nossa branch padrão para main.
E utilizaremos o comando push para enviar o código da nossa branch local para a branch main
da nossa origin remota
Ainda precisamos adicionar um arquivo README.md em markdown para identificar nosso projeto.
$ touch README.md
Todos os servidores de git com interface web tem uma função para renderizar o arquivo
README.md, é muito importante que tenhamos este arquivo para identificar nosso projeto e dar
instruções para quem quiser contribuir com o código.
Agora que aprendemos os primeiros passos com o git e a utilizar a plataforma do code anywhere
e do github, podemos prosseguir para nossa pipeline DevOps!
Andreyson Souza / andreysonsouzapt@gmail.com
14
Criar uma Pipeline DevOps
Agora vamos criar nossa primeira pipeline DevOps
48
49 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
sequenceDiagram
participant CodeAnywhere
participant Github
participant Actions
participant Heroku
Fork quer dizer “Garfo”, quando fazemos o fork de um repositório estamos dando uma
“garfada” no código origem para experimenta-lo, a partir deste fork teremos o código
identico ao código de origem no estado atual, podendo assim personalizar o código e
modifica-lo de acordo com nossas necessidades
50 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Agora que nós efetuamos o fork do nosso repositório, podemos efetuar o clone do mesmo
clicando no botão verde Code e em seguida copiando a url de clone.
51 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Vamos voltar para nosso CodeAnywhere, voltar para a pasta origem do workspace e efetuar o
clone em nosso terminal
$ cd ~/workspace
$ git clone git@github.com:<USER>/DevOpsLab-HelloWorld.git
$ cd DevOpsLab-HelloWorld
Plan
Antes de começar a montar nossa pipeline, vamos criar um board no github para que possamos
efetuar o planejamento do nosso software.
Em Project board name coloque um nome para seu projeto, utilizaremos o nome de Pipeline
DevOps
Coloque também uma descrição para o projeto, selecione o template Basic Kanban e clique em
Create Project
53 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Com isso teremos um quadro kanban para utilizarmos, iremos primeiramente deletar os cards
que foram criados automaticamente clicando nos ... do card e em seguida em Delete Note
Criando o APP
Antes de começar, vamos mover o card Criar o APP do Heroku para In Progress
O nome da aplicação deve ser um nome único no mundo inteiro, minha sugestão é
que vocês coloquem o nome devops-
Para configurarmos nossas integrações, precisamos criar secrets para que o Github e o Heroku
possam se comunicar.
Agora que temos nosso app criado, vamos clicar no nosso perfil no canto superior direito e em
seguida vamos em Account Settings
55 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Ao final da página vamos clicar em Reveal em API Key e vamos copiar o valor
Voltaremos agora para o nosso fork no github e vamos clicar em Settings , Secrets e New
Repository Secret
56 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Agora que temos nossos secrets configurados, podemos configurar nossa pipeline no Github
Actions
Github Actions
Antes de começar, vamos mover o card Criar pipeline do github actions para In
Progress
Github Actions é uma ferramenta para automação de workflow para implementar CI/CD di-
retamente no github.
Para implementar o github actions precisamos de uma estrutura de diretórios dentro do nosso
repositório
.github
`-- workflows
`-- pipeline.yml
Todos os arquivos dentrod a pasta workflows serão lidos automaticamente pelo github para
aplicar os padrões de actions
$ mkdir -p .github/workflows
$ touch .github/workflows/pipeline.yml
on: [push]
jobs:
lint:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
58 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
tests:
needs: lint
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.5, 3.6, 3.7, 3.8, 3.9]
steps:
- uses: actions/checkout@v2
deploy:
needs: tests
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
Neste arquivo estamos definindo nossa pipeline de Lint, Testes e Deploy, que será executada
toda vez que o repositório receber um push ou seja, toda vez que o código for enviado para o
github.
Será executado em máquinas ubuntu 20.04 com os passos de teste sendo executados para
python 3.5 até 3.9 a fim de garantirmos que o código funciona para python 3.5 ou superior.
Nossa pipeline possui 3 passos: 1. Verificar lint com flake8 2. Testar o código nas versões
Python 3.5 até 3.9 3. Deploy no heroku
Vamos alterar também nosso arquivo README.md nas linhas 4 a 6 removendo o comentário e
trocando o <USER> pelo nosso username do github.
![Pipeline Status](https://github.com/<USER>/DevOpsLab-HelloWorld/actions/workflows/
pipeline.yml/badge.svg)
Podemos ver todos os passos sendo executados e inclusive podemos clicar em cada passo para
verificar o que está sendo feito.
https://<app>.herokuapp.com
61 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Agora que temos nossa aplicação funcional, vamos editar nosso software e nosso teste.
Podemos ver todos os passos sendo executados e inclusive podemos clicar em cada passo para
verificar o que está sendo feito.
Podemos ir agora no nosso Heroku e verificar o app com a mensagem de cabeçalho que
modificamos
https://<app>.herokuapp.com
63 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Se você chegou até aqui, meus parabéns, você conseguiu efetuar um deploy de uma aplicação
de forma automatica utilizando uma pipeline composta de linter, testes e deploy.
Caso deseje você pode continuar modificando os arquivos do curso para experimentar cenários
diferentes.
Só não se esqueça de remover a chave SSH no github quando terminar, uma vez que essa chave
criada anteriormente pode ter acesso aos seus repositórios, para fazer isto basta ir no github,
clicar em seu perfil > settings > ssh and GPG keys > delete na chave da codeanywhere.
Não existe uma formula certa para o sucesso, mas que tal uma ajudinha na sua escolha de
cloud ou on-premises? E o que é necessário para todos?
Bem, chegou a hora de dar o próximo passo e vamos falar sobre isto na próxima aula!#
64 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Existem alguns assuntos da área de DevOps que são necessários para qualquer pessoa que
deseja se tornar um Engenheiro DevOps ou um Site Reliability Engineer.
git
Como o código está ligado diretamente ligado a DevOps, qualquer profissional precisa saber
o mínimo de git para se dar bem na área. Não precisa ser um especialista, mas é preciso estar
confortável trabalhando com git.
Redes
Naturalmente tudo se conecta através de redes, precisamos entender conceitos básicos como
dhcp, dns, portas, ip, dentre vários outros. Saber redes claramente te deixa a frente de outras
tecnologias. Como um sábio já disse no passado, se não tá funcionando, provavelmente o
problema são redes. Se não for, é dns, que dá no mesmo.
Brincadeiras à parte, muitos profissionais não conhecem esses conceitos básicos e podem
perder horas tentando encontrar algum problema que geralmente é simples, por isto vemos
muitas pessoas falando que “provavelmente o problema é de redes”.
Linux
É até estranho dizer isso, mas sabia que maior parte da internet é composta de sistemas
Unix/Linux? Fora isso, todos os sistemas OpenSource estão diretamente ligados ao Linux e
até mesmo o nosso tão querido DevOps. Tá esperando o que então? Bora aprender Linux!
Monitoramento
A chave para um sistema funcionando é prever os problemas quando possível, sobretudo
monitorar de maneira eficiente. Para isto, podemos utilizar o zabbix, greylog, prometheus,
elasticstack dentre várias outras ferramentas. Afinal, qual escolher? Vai depender apenas de
onde você vai aplicar esse monitoramento.# Próximos passos Para trabalhar com Cloud
Caso sua escolha seja trabalhar com cloud, tenho algumas indicações de ferramentas e temas
para que você coloque em seu objetivo de estudo.
65 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
Aprenda Terraform
Quando falamos de cloud, podemos dizer que ao menos 90% das vagas pedem conhecimento
sobre Terraform, que é uma ferramenta de infraestrutura como código que trabalha de maneira
agnóstica a clouds, sendo assim, você consegue versionar e efetuar o deploy de infraestrutura
de maneira rápida e versionável.
Aprenda Containers
Containers estão diretamente ligados à cloud, então, que tal estudar um pouco de Docker e em
seguida Kubernetes? Essas ferramentas são amplamente utilizadas, sendo um item necessário
na sua bagagem de ferramentas devops para cloud.
Outros
Claramente existem outros temas para você aprender quando falamos de cloud, mas por hora
acho que já temos uma boa linha para dar segmento aos estudos.# Próximos passos Para
trabalhar On Premises
Caso sua escolha seja trabalhar on premises, tenho algumas indicações de ferramentas e temas
para que você coloque em seu objetivo de estudo.
Aprenda Ansible
Precisamos automatizar as instalações quando falamos de on-premises, e para isto precisamos
de alguma ferramenta forte para resolver este problema. O Ansible tem uma ótima curva
66 14. Criar uma Pipeline DevOps
Andreyson Souza / andreysonsouzapt@gmail.com
de aprendizado e resolve boa parte dos problemas. Você também pode optar pelo Puppet,
é um pouco mais complicado, mas funciona muito bem para gerenciar parques de máquinas
on-premises.
Outros
Claramente existem outros temas para você aprender quando falamos de on-premises, mas por
hora acho que já temos uma boa linha para dar segmento aos estudos.