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
Testes de
Build Teste de unidade Staging
aceitação
● 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
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
https://hub.docker.com/
Docker container nada
mais é que a aplicação
Docker em runtime
Docker CLI
● 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