Upload
carlos-smaniotto
View
278
Download
1
Embed Size (px)
Citation preview
Beers & Bytes - 7ª Edição
Docker
E o futuro da infraestrutura Moderna
Apresentação pessoal
Carlos Smanitto - Nerd, apaixonado por tecnologia
Gerente de Infra - VivaReal
Objetivo
Demonstrar como a utilização da tecnologia Docker pode ser empregada como uma proposta interessante de crescimento estratégico em IT, principalmente em ambiente DevOps.
Historia…
Vamos revisar um pouco a história…
História
Alan Turing, Matemático e Ninja computacional e Pai da computação moderna.
Em 1950 - Previu que na virada do século os computadores ter iam memória na casa do 1GB.
História
Gordon Moore, co-founder da Intel.
Em meados de 1965, declarou que a cada 18 meses a capacidade de processamento dobra enquanto o custo permanece constante.
Da qui 1 ano e meio, será possível comprar o dobro de potência computacional com mesmo preço do valor corrente.
História
APPLE II
Lançado em 1977, possuía 64KB de RAM com 1MHz de CPU de 8-bits :)
História
Carl Anderson, cientista da IBM.
Declarou em 2010 que a lei de Moore chegaria ao fim provavelmente em 2015.
História
MOTIVO:
Pesquisa para novos processadores cada vez mais $$$$$
Engenharia de Software = Cada vez mais otimizada :)
Questão
Mas… precisamos mesmo dobrar ou evoluir nosso poder de processamento ?
continuando….
Transição
Parece familiar ?
Em 1995 ap l icação em grande totalidade Client Side - Geração Clipper
Em 2010 aplicação baseando em cliente/servidor - Delphi + Oracle
1995
2010(BumdaInternet)
TransiçãoInternautase
mm
ilhõe
s
0
17.5
35
52.5
70
1997 1999 2001 2003 2005 2009
67
25.9
14.3212.046.79
1.15
CrescimentodaInternet-BrasilFonte:Institu
toW
orldStatseInstitu
todiversos-abril/2008
Transição
Começa então o nascimento dos grandes centros de processamento, ou seja, datacenters :)
EM Hardware - Latão
Datacenters
Setor investe 5% ao ano em melhoria.
Existem hoje 7.5 milhões de DCs no mundo: privado, militares, provedores, etc.
Isso equivale a mais de 200 milhões de servidores espalhados pelo mundo.
Fonte:ID
CeSymantec2012
Datacenters
Em 2020 serão 35 Zettabytes de dados entre fotos, vídeos e documentos.
44x mais dados do que em 2009, 0.8 Zettabytes.
Colinha: Gigabyte, Terabyte, Petabyte, ZettaByte
Fonte:ID
C-2
010
Datacenters
Problema: Consumo energético
Consumo de um DC: Calcula-se em kva / hora.
1 KVA = 800 Watts = 14 lâmpadas acessasFo
nte:ID
C-2
010
Datacenters
Climatização=37%
Equipamentos=32%
NO-Break = 8%Iluminação = 8%
Gerador = 10%
Outros = 5%
Entrada de Energia
Calor interno do D
C
Datacenters
Em um datacenter, 44% do TCO é gasto com energia elétrica.
Estudo de 2010 da Universidade de Stanford afirma que 1.2% de toda energia produzida no EUA vai para alimentar os DCs existentes.Fo
nte:ID
C-2
010
Datacenters
Problema: Mal uso de processamento
Dos 100% de processamento, segundo pesquisa americana financiada pela IDC - Usa -se apenas 15% do processamento, 85% da máquina fica OCISA!!! Fo
nte:ID
C-2
010
Datacenters
Conclusão:
Quer dizer que existem praticamente 200 milhões de servidores utilizando a p e n a s 1 5 % d o p o d e r d e processamento gastando energia elétrica desnecessariamente ???Fo
nte:ID
C-2
010
Datacenters
REFRIGERAÇÃO
GERENCIAMENTO
ENERGIA
INSTALAÇÃO
CARGADETI
Datacenters
Solução:
U t i l i z a r - s e d e u m c o n c e i t o desenvolvido em 1960 para dividir recursos de sistema de forma lógica entre Mainframes para atender d i fe rentes ap l icações, ou se ja , VIRTUALIZAÇÃO.
Fonte:ID
C-2
010
Virtualização
Primeiro objetivo é reduzir fisicamente a quantidade de servidores existentes.
Diminui o TCO no geral em 35%.1 - Redução do consumo elétrico.2 - Redução do gerenciamento.3 - Redução da refrigeração.
Concentrando várias máquinas virtuais em uma única máquina física.
Fonte:ID
C-2
010
Virtualização
Segundo a Gartner
Em 2008 12 % dos ambientes eram virtuais
Em 2014 esse número já era maior que 60%
Virtualização
Sendo assim, não existe Cloud sem virtualização, então…
Evolução de ilhas isoladas para polo de recursos virtuais interconectadas
- Maximizar eficiência- Reduzir custo
Questões
1 - Mas a virtualização realmente resolve o problema de subutilização de processamento ?
2 - E como fazer deploy entre diferentes tecnologias de cloud com diversas ferramentas de virtualização ?
Resposta…
AWS - Cost Optimization - Truted Advisor
Virtualizar resolve parcialmente o problema: energético ok mas não a subutilização.
Resposta…
Docker
Docker é uma plataforma OpenSource para developers e sysadmin que
permite construir um pacote conhecido pelo nome de container, constituído por uma distribuição linux sistema operacional + aplicação.
Uma máquina consegue executar vários containers diferentes de forma organizada e separada dentro de um computador anfitrião de forma semelhante aos que ocorre na virtualização tradicional.
COM MAIS PODER E MAIS FLEXIBILIDADE :)
Docker
O Docker é constituído por duas ferramentas:
1 - Docker Engine: Responsável pela criação, empacotamento e execuçãoArquitetura cliente / server (Possível administrar remotamente)
2- Docker Hub: Serviço nas nuvens para o compartilhamento das aplicações criadas em Docker.
Integrado com Git :)
Docker
Como assim ?
No mundo Docker, você não tem mais uma aplicação que roda em Ubuntu, por exemplo. Você tem um contêiner que representa tudo isso!
E qual a vantagem disso ?
Docker
? ? ? ?? ? ? ?? ? ? ?? ? ? ?
Como eu resolvo esse problema de logística ?
Docker
Docker
Docker
Containers foram feitos para serem transportados entre diferentes tipos de tecnologia.
Docker
Mobilidade :)
Docker
Mas é só isso ?
Construir um contêiner
DockerfileInfraestrutura em código :)
Construir um container
FROM centos:centos6 MAINTAINER Carlos Smaniotto [email protected]
ENV EPEL_URL http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm tar ENV BASELINE_PACK tar openssh-server openssh-clients unzip vim yum-utils git golang wget ENV ORA_URL http://download.oracle.com/otn-pub/java/jdk/8u5-b13/jdk-8u5-linux-x64.rpm
RUN yum install -y $EPEL_URL $BASELINE_PACK#install oracle java RUN wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" \ "$ORA_URL" -O /var/tmp/jdk-8-linux-x64.rpm && yum localinstall -y /var/tmp/jdk-8-linux-x64.rpm && \ rm /var/tmp/* -rf && yum clean all
ENV JAVA_HOME /usr/java/default
Dockerfile
Infraestrutura em código :)
Construir um container - Herança
Podemos usar um container para criar um outro container
FROM centos/6:5 …
FROM carlos.smaniotto/centos:java7 …
carlos.smaniotto/centos:java7
Construir um contêiner
AuFSVersionamento de um container
Como isso é possível ?
AuFS - Advanced multi layered unification filesystem
Permite fazer merge de layers
Como isso é possível ?
Como isso é possível ?
Arquitetura
Docker
O Docker utiliza subsistemas do Kernel Linux Host que permitem rodar somente a parte que interessa do Guest OS e compartilhar parte dos recursos do kernel do sistema operacional Host.
Um dos projetos precursor para isso foi o LXC - IBM, Google, Parallels entre outros.O LXC é uma técnica de virtualização de nível baixo, camada de Kernel. Usando para isso subsistemas como cgroups, namespaces.
Colinha: Host é o SO que esta no hardware e Guest é o virtual
Docker
RESUMINDO: Permite que recursos, libs e configurações sejam “aprisionados” em um path e isolados
+…
Com a ajuda do AuFS.
O Docker funciona como uma camada sobre o LXC. Atualmente estão desenvolvendo uma arquitetura de acesso direto aos subsistemas de kernel: libcontainer
Colinha: Host é o SO que esta no hardware e Guest é o virtual
Docker
Logo… container é um grupo de processos isolados em um BOX Linux gravados em um arquivo gerenciado pelo AuFS, o que permite inclusive versionamento deste arquivo.
Para quem conhece chroot é um chroot com esteroides.
Docker
Virtualizaçãotradicional
LinuxConteiner
Docker
Docker
Docker
Docker
Vantagem
Docker
Qual a vantagem disso ?
Extremamente rápido: inclusive no startup do container.
Isola o sistema: chroot e processo único.
Fácil replicação: é só pegar a imagem, subir em outro ambiente e mandar rodar o container dessa imagem.
Versionamento: Posso ter diferentes versões de minha aplicação completa
Docker
Preparo DeployManual
DeployAutomático
Tempodeboot
HardwareFísico dias horas minutos minutos
Virtualização minutos minutos segundos menosde1minuto
Containers segundos minutos segundos segundos
Portanto… benefícios
• Portabilidade: Mesmo resultado em qualquer lugar
• Versionamento: Like Git - commit/push
• Compartilhamento: É possível compartilhar um container
• Reusabilidade: Você pode fazer um fork de um container para atividades distintas.
• Desenvolvimento: Aplicação amarrada à "máquina"!
Revisão da Virtualização
Primeira onda: Década de 60 em mainframe, o nome foi abstraído por um outro nome: sistema multi-tarefa.
Segunda onda: Começo de 2000 - Virtual Machines até os dias de hoje
Terceira onda: Iniciada fortemente no começo de 2014 com o projeto LXC. Container de aplicação.
Conclusão
Nesta terceira onda, chamada de virtualização em containers, resolvemos um problema que a segunda onda sozinha não consegue resolver.
Adicionalmente, gera flexibilidade que as VMs tradicionais não conseguem, ou seja, mobilidade.
VM + Container = <3
OBRIGADO