O documento discute como a tecnologia Docker pode ser usada como uma proposta interessante de crescimento estratégico em TI, principalmente em ambientes DevOps. Apresenta a história da computação e evolução dos datacenters para a virtualização e como os containers Docker resolvem problemas de eficiência de recursos e portabilidade de aplicações entre nuvens.
4. 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.
6. 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 teriam
memória na casa do 1GB.
7. 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.
12. Transição
Parece familiar ?
Em 1995 aplicação em grande
totalidade Client Side - Geração Clipper
Em 2010 aplicação baseando em
cliente/servidor - Delphi + Oracle
1995
2010 (Bum da Internet )
14. Transição
Começa então o nascimento dos grandes centros de
processamento, ou seja, datacenters :)
EM Hardware - Latão
15. 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: IDC e Symantec 2012
16. 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: IDC - 2010
19. 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.
Fonte: IDC - 2010
20. 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!!!
Fonte: IDC - 2010
21. 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 ???
Fonte: IDC - 2010
23. 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
diferentes aplicações, ou seja,
VIRTUALIZAÇÃO.
Fonte: IDC - 2010
24. 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: IDC - 2010
26. 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
27. 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 ?
28. Resposta…
AWS - Cost Optimization - Truted Advisor
Virtualizar resolve parcialmente o problema:
energético ok mas não a subutilização.
30. 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 :)
31. Docker
O Docker é constituído por duas ferramentas:
1 - Docker Engine: Responsável pela criação, empacotamento e execução
Arquitetura 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 :)
32. 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 ?
33. Docker
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
Como eu resolvo esse problema de
logística ?
40. Construir um container
FROM centos:centos6
MAINTAINER Carlos Smaniotto carlos.smaniotto@vivareal.com
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 :)
41. 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
46. 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
47. 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
48. 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.
53. 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
55. 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"!
56. 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.
57. 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