Angular, React ou Vue? Comparando os favoritos do JS reativo
O fim do "funciona na minha máquina"
1. O fim do “funciona na minha máquina”
Desenvolvimento com Docker e Docker Compose
2. Sobre vocês
● Virtualização, quem ?
● Docker: Quem NÃO
ouviu falar ?
● Quem usa no dia a dia ?
● docker-compose ?
3. De onde veio isso ?
● Começou como um projeto interno criado por
Solomon Hykes para uma empresa chamada
dotCloud.
● O software estreou na PyCon de 2013.
● Ambiente de execução dos containers escrito em
Go, uma linguagem criada pela Google que vem
ganhando bastante popularidade.
● A dotCloud se tornou Docker Inc e fez o engine
de containers open-source.
● Em 2016 o projeto recebeu grandes
contribuições de empresas como Cisco, Google,
Huawei, IBM, Microsoft e Rad Hat.
blog.docker.com
4. O problema da Virtualização
● Lá no começo da computação comercial,
quando se começou a difundir a internet,
era comum alocar uma máquina inteira
para rodar uma aplicação. Independente
da quantidade de recursos que esta
consumia.
● Era muito comum ter um único servidor
físico, com a porta da aplicação exposta e
se quisesse rodar outra coisa, outra
máquina era necessária.
● A coisa começou a mudar com o
surgimento dos virtual hosts (Apache e
cia…) Torkild Retvedt
5. Máquinas Virtuais
● Com a popularização das Máquinas
virtuais, passou-se a utilizar os recursos
de Hardware de uma forma mais
inteligente.
● Utiliza-se um servidor que possui diversas
instâncias de máquinas virtuais com OS
distintos rodando as aplicações isoladas
entre si.
● Além de facilitar a escalabilidade
horizontal, o isolamento oferece mais
segurança e mais flexibilidade na
infraestrutura.
nickjanetakis.com
6. Containers
● Apesar de consideráveis avanços com o
uso de máquinas virtuais. Ainda existe
espaço para melhorias.
● Muitos recursos são desperdiçados
alocando um OS distinto para cada
máquina, quando na verdade só se deseja
rodar uma aplicação.
● Os containers surgiram para remediar
este gap e muito mais. nickjanetakis.com
7. Como ele faz isso ?
● Utiliza por baixo uma funcionalidade do
Unix Kernel chamada namespaces, que
se constitui numa camada de abstração
que isola uma quantidade de recursos da
máquina para os processos dentro dele.
● Estes recursos por sua vez são
controlados via outra funcionalidade do
Kernel chamada cgroups.
● Ao juntar isto com umas facilidades
técnicas da linguagem Go, faz com que o
docker hoje pareça funcionar
“automagicamente”.
blog.docker.com
8. Vantagens
Além de otimizar o uso de recursos o uso do docker oferece outras vantagens tais
como:
● Ambientes Semelhantes
● Aplicação como Pacote Completo
● Padronização e Replicação
● Idioma comum entre Infraestrutura e Desenvolvimento
● Comunidade
● Escalabilidade - (Microserviços)
9. Nomenclatura Básica
● Imagem
○ Criada em camadas
○ Dockerfile
● Registro
○ Publico
○ Privado
○ Próprio
● Container
○ Parado
○ Rodando
● Daemon (Engine)
● Volume
● Network
● Docker-compose
○ service
○ docker-compose.yml
12. Conclusão
● Acaba o funciona na minha máquina (no
mínimo a maioria dos casos).
● Muito versátil para usar no dia a dia. Sem
ter que ficar instalado trocentas
ferramentas compiladores e etc…
● Fácil de “deployar uma solução em
container”.
● Funciona muito bem com servidores de
integração contínua tais como Jenkins,
Circle CI entre outros….
● Permite a criação de um catálogo de
artefatos graças a criação de imagens.
● Possui soluções para uso em escala tais
como Docker Swarm e Kubernetes.
● Infraestrutura no código.
● Como TUDO na tecnologia, docker
resolve muitos problemas. Porém ele não
é bala de prata pra tudo, tampouco a
única solução para todos os seus
problemas.