Buscar

07 - Cultura e Práticas DevOps (2022) - 3 Praticas DevOps

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 86 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 86 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 86 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Prá$cas DevOps
Marco Mendes
Pipelines DevOps
Marco Mendes
Pipelines DevOps
Pipelines DevOps
Mecanismos automa-zados 
para reduzir o tempo de 
entrega de demandas, 
aumentar o feedback entre 
pessoas e também habilitar 
experimentos e inovações. 
Exemplo simples de pipeline
CI
Build 
automa+zado
Testes 
automatizados
Entrega no 
ambiente de 
testes
Outro exemplo de pipeline
Provisionamento de ambientes
Provisiona 
ambiente com o 
Docker
Publica 
aplicação em 
contêiner 
Docker
Habilita 
contêiner em 
ambiente de 
produção
Um terceiro exemplo de pipeline
SecOps
Iden:fica 
ambientes com 
vulnerabilidades
Aplica patch de 
segurança de 
forma 
automa:zada
Gera dados 
analíticos para 
time de 
segurança
Linhas de montagem DevOps
As linhas de montagem DevOps estão focadas em 
automa7zar e conectar a7vidades realizadas por 
várias equipes
Exemplos: Builds para desenvolvedores, 
provisionamento de infraestrutura e gerenciamento 
de configuração para operações, teste de automação 
para teste, patch de segurança para SecOps, portais 
de aprovação e versionamento semân7ca para 
gerentes de liberações e assim por diante.
Bene:cios de negócio de pipelines e 
linhas de montagem (01/02)
Ga#lhos automá#cos 
ou aprovação manual 
entre pipelines ou 
centros de trabalho.
Métricas e análises 
em pipelines para 
ajudar a iden#ficar 
gargalos.
Visibilidade em cada 
pipeline ou centros 
de trabalho
Trilhas de auditoria
Bene:cios de negócio de pipelines e 
linhas de montagem (02/02)
Redução do tempo de 
execução para executar 
as tarefas nos centros 
de trabalho
Capacidade de definir 
facilmente fluxos de 
trabalho em vários 
pipelines
Automação da 
infraestrutura de 
DevOps, incluindo VMs
e containers 
Capacidade de 
transmi7r estado e 
outras informações 
(feedback e 
feedforward)
Resumo
• Mecanismos automa#zados para
reduzir o tempo de entrega de
demandas, aumentar o feedback
entre pessoas e também habilitar
experimentos e inovações.
• Experimente e crie pipelines
diversos conforme as necessidades
de automação.
• Oriente seus pipelines pelos fluxos
de valor.
Automação de Builds e 
Integração Contínua (CI)
Marco Mendes
Times	tradicionais
Passam	a	maior	parte	
do	tempo	de	um	
projeto	com	o	
software	sem	
funcionar.
Operam	durante	
muito	tempo	com	
códigos	isolados.
Adiam	tarefas	de	
integração	e	testes	de	
aceite	para	o	final	do	
projeto.
A automação de builds é prática 
essencial para garantir que os 
executáveis dos seus produtos sejam 
gerados de forma consistente, em 
base diária. 
Esta prática busca evitar o problema 
comum do código funcionar apenas 
máquina do desenvolvedor.
A	automação	de	builds	
externaliza todas	as	
dependências	de	bibliotecas	e	
con7igurações	feitas	dentro	de	
uma	IDE	para	scripts	e	que	possa	
ser	consistentemente	executado	
por	robôs.	Ela	é	pilar	básico	para	
avançarmos	em	direção	a	7luxos	
de	CI	
Exemplo de Automação de Builds 
Código Fonte
1
2 3
Embora	a	automação	de	builds,	na	
sua	definição	inicial,	lide	apenas	com	
a	construção	de	um	build,	a	prática	
comum	de	mercado	é	que	builds	
devam	executar	um	conjunto	
mínimo	de	testes	de	unidade	
automatizados	(smoke tests) para	
estabelecerem	confiabilidade	mínima	
ao	executável	sendo	produzido.
Frequência
de	Geração
de	Builds
Processos
Técnicos
Automatizados Integração	
Contínua
Ausência	de	
automação	de	builds
Automação	de	Builds
em	Estabelecimento
Requisitos	para	a	Gestão	de	Builds
Acordos entre 
o time
Gestão de 
configuração
Compilação 
automatizada
Checkins 
diários de 
código
Testes de 
unidade 
automa=zados
Suíte 
abrangente de 
testes
Processo leve 
de compilação 
e testes
Caso real: Ferramenta antes da cultura
• Inovação trazida de forma unilateral pelo “cara mais
esperto na sala”
• Time de desenvolvimento ainda sem maturidade em
gestão de configuração e automação de testes.
• Esforços de builds automatizados fracassaram e 
eventualmente foram abortados pelo gestor.
Caso real: Ferramenta com a cultura
• Testes de unidades foram estabelecidos e aprimorados
como prática do time.
• Durante 9 meses, o time de quase 15 pessoas cresceu a 
linha base de testes de unidade para quase 5000 testes 
automatizados.
• Pipelines DevOps com automação de builds foram
desenvolvidos e se expandiram para rodar em troncos
específicos na gestão de configuração, em base diária e 
depois em múltiplas vezes por dia.
Ferramentas CNCF para CI
h"ps://landscape.cncf.io
Resumo
• Automação de Builds é prá#ca
popular e essencial em
implementações DevOps
• Elas fornecem consistência e
disciplina para #mes de
desenvolvimento.
Automação de Testes
Marco Mendes
Automação de testes é peça
fundamental nos processos DevOps
#1 – O que deve ser automaIzado?
Conceito: Pirâmide de testes
Fonte: mar.nfowler.com/bliki/TestPyramid.html
#1 – O que deve ser automatizado?
Conceito: Pirâmide de testes para microsserviços
Fonte: h>ps://mar.nfowler.com/ar.cles/microservice-tes.ng
#2 – Teste em Produção? Sim, com testes de fumaça
Pareamento com o time de 
desenvolvimento, mais que trabalho 
isolado para pegar defeitos.
#3 – Como devemos investir o tempo do time de testes?
#4 - Testes automa@zados devem ser incluídos em 
pipelines DevOps
Resumo
• Testes automa#zados são a
fundação do segundo caminho
DevOps.
• Eles fornecem feedback
instantâneo e aumentam a
segurança psicológica para criar
entregas mais frequentes e
consistentes
Automação de Entregas
Marco Mendes
A automação das entregas é 
uma prá5ca que buscar garan5r 
que o processo de promoção do 
executável para os ambientes de 
testes, homologação e produção 
sejam automa5zados e assim 
tornados consistentes e 
eficientes. 
Be
ne
$c
io
s
reduzir o tempo para entregar um novo 
build em ambiente de produção através da 
automação da instalação e configuração de 
ferramentas e componentes arquiteturais;
reduzir erros em implantação causadas por 
parâmetros específicos que não foram 
corretamente configurados pelos +mes de 
desenvolvimento e operações
minimizar a fricção entre os +mes de 
desenvolvimento, QA e operações
prover confiabilidade e segurança no 
processo de implantar aplicações
A automação de entregas 
é prática essencial para 
garantir que os executáveis 
dos seus produtos sejam 
promovidos de forma 
consistente entre 
ambientes, em base diária. 
A	automação	de	entregas	não	
deve	“compilar”	o	código	
fonte.	Ela	deve	promover	o	
builds	com	a	recon<iguração	
variáveis	de	ambientes	e	
outras	informações	de	
parâmetros	conforme	o	
desejo.
A	automação	de	entregas	
pode	incluir	solicitações	de	
aprovação	pré-implantação	
e	pós-implantação.	
Isso	automatiza	processos	
de	gestão	de	mudanças	em	
organizações	que	usem	ITIL.
Exemplo de Automação de Entregas 
1
2
Promoção	para	homologação	e	
aprovação	pós-publicação	
pelo	time	de	testes.
Aprovação	pré-publicação	e	promoção	
para	ambiente	de	produção	pelo	gestor.
3
Builds	são	coletados	de	
ambientes	de	integração	
(staging areas)
Frequência
de	Promoção
de	Builds
Processos
Técnicos
Automatizados Entrega	Contínua	(CD)
Promoção	de	builds
manual	e	demorada
Promoção	de	Builds
em	Estabelecimento
Ferramentas CNCF para CD
h"ps://landscape.cncf.io
Ferramentas CNCF para CD
h"ps://landscape.cd.founda2on
Resumo
• Automatizar a promoção de builds
é essencial para reduzir a fricção
entre times de desenvolvimento e
operações.
• É pratica chave e praticamente
batizou o termo DevOps em 2009.
• Empresas como Amazon e várias
outras no Brasil usam essa prática
com grande impacto econômico.
Entrega ConBnua versus 
Implantação ConBnua
Marco Mendes
Entrega	Contínua
(Continuous Delivery)
• A	entrega	contínua	realiza	a	
promoção	automatizada	entre	
ambientes	de	desenvolvimento.
• Exemplos:	ambientes	de	testes	
integrado	ou	ambientes	de	
homologação
Entrega	Contıńua
(Continuous Delivery)
Na	entrega	contı́nua,	entretanto,	a	
etapa	de	publicaçãopara	o	
ambiente	de	produção	requer	
aprovação	humana,	em	
conformidade	por	exemplo	com	
regulatórios	exigidos	por	ITIL.
Implantação	Contıńua
(Continuous Deployment)
Com	a	entrega	contínua	implantada,	é	
possível	automatizar	até	mesmo	a	
transferência	de	objetos	para	a	
produção.	
Isso	é	desejado	em	ambientes	
altamente	dinâmicos	como	startups	e	
aplicações	que	não	estejam	
submetidas	a	elementos	regulatórios	
de	ITIL.	
Ou	organizações	que	possuem	
implementações	avançadas	de	gestão	
de	mudanças	no	ITIL.
Fonte: puppet.com/blog/con1nuous-delivery-vs-con1nuous-deployment-what-s-diff
Atenção aos bancos de dados
• Automatizar a promoção de builds também deve considerar a 
promoção de scripts de banco de dados e até mesmo o 
transporte de dados de configuração.
• Ignorar o processo de automação nas bases de dados criam 
processos flácidos de entrega contínua.
Atenção aos testes
• Toda promoção de ambientes deve incluir processos de 
verificação da estabilidade. 
• Testes pós-implantação e testes de fumaça são práPcas 
comuns para criar pipelines de entrega robustos.
Atenção aos processos de reversão
• Testes que falham implicam na reversão do 
ambiente ao seu estado prévio.
Integração	Contínua,	Entrega	Contínua	e	Implantação	Contínua	
A	integração	contínua
(Continuous Integration)	é	o	
processo	contínuo	de	compilar	o	
código	em	ambiente	limpo,	rodar	
testes	e	outros	processos	de	
qualidade	e	gerar	um	build,	
disparado	por	commits em	algum	
branch do	repositório	de	código.
A	entrega	contínua (Continuous	
Delivery)	habilita	a	promoção	
contıńua	de	builds	para	ambientes	
na	sua	TI
A	implantação	contínua
(Continuous Deployment)	habilita	a	
promoção	contıńua	de	builds	para	
ambientes	de	produção.
Resumo
• A frequência de automação de entregas (CD) deve atender as
expecta;vas de negócio e podem variar conforme segmento (ex.
varejo ou engenharia automa;va)
• CD deve incorporar processos de testes pós-implantação
• CD pode significar Entrega ConDnua ou Implantação ConDnua.
• Processos de gestão de mudanças com ITIL são elementos
crí;cos para discu;r
Automação de Ambientes 
e Infraestrutura como 
Código (IaC)
Marco Mendes
O primeiro caminho do DevOps
Para maximizar o fluxo, precisamos 
tornar o trabalho visível, reduzir o 
tamanho dos lotes e os intervalos de 
trabalho, aumentar a qualidade 
evitando que os defeitos sejam 
passados para os centros de trabalho 
mais à direita e otimizar 
constantemente as metas globais.
O primeiro caminho do DevOps
As prá'cas resultantes incluem 
processos con2nuos de construção, 
integração, teste e implantação; 
criando ambientes sob demanda; 
limitando o trabalho em progresso 
(WIP); e construir sistemas e 
organizações que sejam seguros para 
mudar.
Mas.. o trabalho tradicional da 
infraestrutura 7sica em muitas
empresas é moroso e repe;;vo.
Disponibilização de so0ware em produção
Até	pouco	tempo	atrás,	a	única	
forma	de	disponibilizar		
software	em	produção	era	
através	de	acesso	de	trabalho	
manual	de:
• Provisionamento	manual	de	
hardware
• Instalação	manual	de	SOs e	
servidores
• Configuração	manual	de	
aplicativos
O	surgimento de	
tecnologias de	virtualização
como Hypervisor	e	
programas como o	VMWare	
e	VirtualBox	começou a	
facilitar a	administração de	
servidores.
Fonte: h)ps://www.docker.com/blog/top-ques:ons-docker-kubernetes-compe:tors-or-together/
Virtualização de Ambientes
Ainda assim,	você precisa
fazer muita coisa.	A	instalação
e	con:iguração de	muitos
aplicativos continua	manual,	
mesmo emmáquinas virtuais.
Entram	em	cena	os	contêineres	
• Produtos como o Docker foram criados a par2r da evolução de conceitos 
existentes no Unix nos úl2mos 30 anos
• 1979 - chroot system calls
• 2000 - Free BSD Jails
• 2001 - Linux Vservers
• 2004 - Solaris Containers 
• 2006 - Cgroups (Control Groups)
• 2013 - Docker
h)ps://blog.aquasec.com/a-brief-history-of-containers-from-1970s-chroot-to-docker-2016
Contêineres
• São um	método de	
virtualização em	nı́vel de	
sistema	operacional	que	
permite	executar	uma	
aplicação e	suas	
dependências como	
processos	e	com	recursos	
isolados	que	simulam	uma	
máquina	virtual.	
• Permitem	empacotar	
facilmente	o	código,	as	
conIigurações e	as	
dependências de	uma	
aplicação em	elementos	
fundamentais	que	
oferecem	consistência
ambiental,	eIiciência
operacional,	produtividade	
de	desenvolvedores	e	
controle	de	versões.	
Contêineres
• Podem	ajudar	a	
garantir	rapidez,	
conCiabilidade	e	
consistência de	
implantação,	
independentemente	
do	ambiente	de	
implantação.	
• Além disso,	eles	
oferecem	um	controle	
mais	granular	dos	
recursos,	aumentando	
a	eCiciência da	
infraestrutura.	
Fonte: h)ps://www.docker.com/blog/top-ques:ons-docker-kubernetes-compe:tors-or-together/
Conteinerização de Ambientes
O	Docker é uma	tecnologia	Open	Source que	
permite	criar,	executar,	testar	e	implantar	aplicações
distribuıd́as dentro	de	containers	de	software.	
Ele	permite	que	você empacote	um	software	de	uma	
padronizada	para	o	desenvolvimento	de	software,	
contendo	tudo	que	é necessário	para	a	execução:	
código,	runtime,	ferramentas,	bibliotecas,	etc.	
O	Docker permite	que	você	implante	aplicações
rapidamente,	de	modo	conIiável e	estável,	em	
muitos	ambientes	virtuais	e	fıśicos.	
Exemplo	de	como	“instalar	e	rodar”	o	
mysql com	o	apoio	do	Docker
> docker pull mysql
> docker run mysql
Orquestração de Ambientes
A	grande	popularidade	de	contêineres	começa	a	
criar	fazendas	com	muitos	contêineres	para	
administração	pelos	times	de	produção.
Orquestradores	de	contêineres	se	tornam	
populares
Docker Swarm e	o	Kubernetes
Fonte: h)ps://www.docker.com/blog/top-ques:ons-docker-kubernetes-compe:tors-or-together/
Orquestração de Ambientes
Ferramentas de Provisionamento
Automação e Configuração de Ambientes
hUps://landscape.cncf.io
Ferramentas com Suporte a Kubernetes
hUps://landscape.cncf.io
Resumo
• Automação de ambientes com
virtualização, contêineres e
orquestradores habilitam
infraestrutura como código.
• Ferramentas como Docker e
Kubernetes se popularizam na TI e
reduzem muito esforço manual de
provisionamento de ambientes.
Engenharia do Caos
Marco Mendes
Os macacos do caos da NeWlix
h=ps://github.com/Ne?lix/chaosmonkey
Engenharia do Caos
• "Precisamos iden.ficar fragilidades antes que elas se 
manifestem em comportamentos aberrantes em todo 
o sistema. 
Devemos lidar com as fraquezas mais significa.vas de 
forma proa.va, antes que afetem nossos clientes na 
produção. Precisamos de uma maneira de gerenciar o 
caos inerente a esses sistemas, aproveitar o aumento 
da flexibilidade e velocidade e ter confiança em nossas 
implantações de produção, apesar da complexidade 
que eles representam."
• hCp://principlesofchaos.org
Exemplos de Estressores
• Injeção de latência na chamada de 
APIs
•Aumento da carga de um processador
• Interromper conexões de rede
• Terminar um contêiner.
O processo de Engenharia do Caos
1. Comece definindo o "estado estável" como uma saída 
mensurável de um sistema que indica um 
comportamento normal.
2. A hipótese de que este estado estável con=nuará tanto 
no grupo controle quanto no grupo experimental.
3. Introduza variáveis que refletem eventos do mundo real, 
como servidores que falham, discos rígidos que 
funcionam mal, conexões de rede que são cortadas, etc.
4. Tente refutar a hipótese procurando uma diferença de 
estado estável entre o grupo controle e o grupo 
experimental.
Engenharia do Caos
hUps://landscape.cncf.io
"Sistemas 
an5frágeis se 
tornam cada 
vez melhores e 
mais fortes sob 
ataques e erros 
conJnuos", 
Nicholas Taleb
Fonte: Marco Mendes
Resumo
• Engenharia do caos é prá#ca
avançada para experimentar um
sistema a fim de construir
confiança na capacidade do
sistema de suportar condições
turbulentas na produção.
Observabilidade e 
Análise
Marco Mendes
Observabilidade e Análise
• O processo de administração de ambientesde 
produção tem se automa#zado.
• As tecnologias para monitoração, registro 
(logging) e rastreamento permitem observar e 
analisar eventos diversos em ambientes de 
so]ware, banco de dados, infraestrutura, 
eventos de negócio.
• Análise de tendências, correlações complexas e 
capacidade de antecipação também tem sido 
incorporadas a tecnologias de análise de 
ambientes.
Ferramentas para Monitoração
hUps://landscape.cncf.io
Ferramentas para Registro (logs)
hUps://landscape.cncf.io
Ferramentas para Rastreamento (tracing)
hUps://landscape.cncf.io
Observabilidade é função dos Imes de 
desenvolvimento e qualidade também
• Processos de observabilidade nascem ainda 
com os #mes de desenvolvimento.
• Uma boa arquitetura técnica para geração de 
registros (logs) é essencial para facilitar a 
análise de problemas e incidentes em 
produção.
Resumo
• Capacidades analí#cas de
observabilidade são essenciais
para operar ambientes complexos
em produção.
• Observabilidade pode se dar
através de monitoração, registro e
rastreamento.
• Observabilidade se inicia com boas
arquiteturas técnicas de registros
(logs).

Outros materiais