Você está na página 1de 55

Introdução ao

Docker e Devops

Lucas Silveira,
Engenheiro mecânico e desenvolvedor.
O mundo DevOps envolve
inúmeros conceitos
e tecnologias!
Nuvem
A computação em nuvem,
muitas vezes referida
simplesmente como "a nuvem",
é a entrega de recursos de
computação - incluindo desde
aplicativos até data centers -
sob demanda, por meio da
Internet, e seguindo a filosofia
pay-per-use.
https://www.ibm.com/br-pt/cloud/learn/what-is-cloud-computing
Como funciona uma aplicação web?
Webservice
Modelo tradicional

1.
Desenvolvedores
escrevem o código.
Modelo tradicional

2.
Time de operações
coloca o código em
produção.
Modelo tradicional

3.
Cliente consome o
serviço.
4.
Na prática
1.
Desenvolvedores
passam boa parte
do tempo
corrigindo bugs.
Na prática
2.
Com muita luta o
time de operações
consegue
finalmente
contornar o
Inferno de
Dependências e
atualizar a versão
do software em
produção.
Na prática
3.
“O serviço de vocês
está fora do ar”
4.
DevOps
DevOps é uma abordagem do processo de desenvolvimento e
entrega de Software onde as equipes envolvidas (do
desenvolvimento à operação) colaboram nos processos de
build, testes, deploy e monitoramento das aplicações, de
forma a tornar esses processos mais eficazes e eficientes.
O conjunto de práticas DevOps é relevante em qualquer tipo
de projeto de software. Casos de uso comuns incluem
aplicações mobile e cloud native.
O mundo DevOps perfeito
● Toda equipe envolvida
no projeto em sintonia
● A cada atualização na
branch master é gerado
um rollout automático de
atualização da aplicação
● A aplicação em produção
é capaz de se regenerar e
escalar
automagicamente
Ok, but how?
Continuous
Integration,
Continuous Delivery
e Continuous
Deployment
CI/CD é um método para
entregar aplicações com
frequência aos clientes. Para
O que é CI/CD? isso, é aplicada a automação
nas etapas do
desenvolvimento de
aplicações.

https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd
Continuous Integration

Build Teste de unidade Staging Testes de aceitação


Continuous Delivery

Testes de
Build Teste de unidade Staging
aceitação

Manual Deploy para


produção
Continuous Deployment

Teste de Testes de Deploy para


Build Staging
unidade aceitação produção
Ferramentas

● Gitlab
● Circle CI
● Travis CI
● Docker
● Kubernetes
● etc
Virtualização e
Docker
Servidores físicos
Bare metal
Desvantagens Vantagens
● Subutilização de recursos ● Performance
● Escalabilidade lenta e onerosa ● Controle fino dos recursos
● Implica uma alta criticidade nos ● Latência

X
procedimentos de atualização
do sistema
● Custos
● Espaço físico
● Padronização das máquinas
● Migração complexa
● Manutenção
Como melhorar esse
cenário?
Virtualização
Máquinas virtuais
Soluções no
mercado
Desvantagens Vantagens
● Hypervisor ● Menos hardware físico
● Desperdício de recursos ● Centralização de recursos
● Custos ● Recuperação e manutenção
● Provisionamento complexo ● Software licensing, exemplo:

X
● Aprisionamento tecnológico produtos Rockwell) atrelam a
Vendor lock-in) licença do produto à ID de um
● Dependency hell disco rígido
● Imagens são grandes ● Suporte a sistemas legados
● Flexibilidade
Containers
Dockerfile

Docker Image Container

Registry Engine
Desvantagens Vantagens
● Performance em ambientes ● Consistência entre equipes e
Mac e Windows ambientes
● Segurança ● Automação

X
● Não tão isolado quando VMs ● Velocidade
● Tricky networking ● Espaço de armazenamento
● Stateless ● Stateless
Docker engine
O Docker engine abstrai
as chamadas de SO das
suas aplicações e utiliza as
libraries e binários já
existentes. Para criar e
executar os seus
containers, o Docker cria
processos isolados tanto
em runtime, quanto
armazenamento e rede.
FROM ruby:2.6-alpine COPY Gemfile Gemfile.lock ./
COPY gems gems
RUN apk add --update
--no-cache \ RUN bundle install --retry 5
curl-dev \ --jobs 20 --deployment
nodejs \ --without development test
postgresql-client \

Dockerfile
postgresql-dev \ EXPOSE 3000

WORKDIR /app ENTRYPOINT ["sh", "-e",


"./docker/server/entrypoint.
ARG POSTGRES_USER sh"]
ARG POSTGRES_PASSWORD
CMD ["rails"]
ENV RAILS_LOG_TO_STDOUT=1
Registry
Docker image

https://hub.docker.com/
Docker container nada
mais é que a aplicação
Docker em runtime
Docker CLI

↳ docker build # Faz o build de uma imagem


↳ docker images # Lista imagens locais
↳ docker run # Sobe uma imagem
↳ docker ps # Lista containers ativos
↳ docker stop # Para container
↳ docker rm # Remove uma instância
↳ docker rmi # Remove uma imagem
Usos e
“NA MINHA
MÁQUINA aplicações
FUNCIONOU”
● Consistência entre
equipes e ambientes
“JÁ TEM 5 DIAS QUE EU NÃO
Usos e FAÇO MAIS NADA ALÉM DE
TENTAR IMPLATAR ESSA M&%$A
aplicações DE APLICAÇÃO NO NOSSO
AMBIENTE DE PRODUÇÃO”

● Simplificação e
aceleração do processo
de deploy
http://35.188.195.14/
Nuvem e microserviços
Orquestradores

D: Estado desejado
O: Orquestrador
S: Estado da aplicação
Δ: Operações
Orquestradores
Custo Portal Jovem Nerd

➔ Antes da nuvem:

15.000,00 US$/mês

➔ Depois da nuvem:

2.000,00 US$/mês
OBRIGADO

Lucas Silveira
Introdução ao Docker e Devops

Quer ter acesso ao material?


bit.ly/FeedbackDockereDevops
Contato
Git: slucase
email: lucas.costa@engineer.com
Geek&Poke
www.geek-and-poke.com

Você também pode gostar