Comparativo entre VM e container
Virtual Machine (VM)
Caso 1 (1 aplicação = 1 servidor)
-
Problemas
-
Custo elevado na manutenção e recursos da máquina
-
Escalonamento vertical
Escalonamento vertical é a ação de aumentar os recursos utilizados, como por exemplo CPU e memória.
-
Downtime elevado
-
Caso 2 (OS compartilhado)
-
Vantagens em relação ao "caso 1"
- Redução no custo
-
Problemas
-
Falta de isolamento de dependências e serviços após alguma atualização de uma das aplicações
-
Dificuldade nas trocas de versões da aplicação
-
Downtime elevado
-
Caso 3 (Virtual Server)
-
Vantagens
-
Maior isolamento entre aplicações (OS / binários para cada aplicação)
-
A partir do Hypervisor é possível salvar snapshots da imagem da VM (facilidade na persistência e gerenciamento de backups)
-
Redução no downtime entre atualizações
-
Container
Características
- Substituição do Hypervisor por um Container Engine (Exemplo: Docker Engine)
A virtualização com um Container Engine é em nível de sistema operacional
- Imutabilidade das imagens (em caso de alteração da imagem, é necessário recriá-la)
Vantagens
-
Simplificação na gestão (1 único sistema operacional e os container runtime o simula)
-
Economia de recurso
-
Controle de memória e CPU para cada container
-
Troca das versões facilidade e sem downtime entre as as atualizações
-
Viabilizam implantações bem sucedidas
-
Imagens de containers garantem eficiência na entrega da aplicação
-
Inibem dependências ausentes ou incorretas
-
Evitam conflitos entre programas/bibliotecas
-
-
Descrevem a aplicação a ser implantada
OBS
Os containers proporciona uma séria de benefícios, porém ainda possuem pontos de melhoria e que outras ferramentas, como o Kubernetes, fazem de forma mais eficiente. Como por exemplo:
-
Para DevOps
-
Implantações bem sucedidas
-
Alta disponibilidade
-
Escalabilidade
-
Segurança
-
-
Para Devs
- Interface agradável (apenas CLI)