Executando verificação de segurança...
1

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)
Carregando publicação patrocinada...
2
1

Sobre os pontos "Problemas que os containers ainda não resolvem" queria que explicasse melhor, porque pra mim não me parecem problemas de fato. Por exemplo, segurança, os containers do docker são executados em um sistema de arquivos isolado, definido pelo programador. Assim como o docker te permite definir como seus containers interagem atráves da rede criada pelo docker. Pra mim, esses pontos são a favor da segurança, e não ao contrário.

Docker: volumes.

Docker: networking.

2

Peço desculpas por isso, eu acho que não me expressei muito bem. Então isso não é necessariamente um problema dos containers, para esses pontos listados como "problemas" eu me referia que existem outras ferramentas como o Kubernetes que exercem essas funções com mais precisão e eficiência.

No caso de segurança, eu concondo com você que o isolamento de processo providenciado pelos containers traz uma segurança à aplicação, porém, por exemplo, quando se trata de dados sensíveis o Kubernetes fornece o objeto Secret que armazena e gerencia de forma segura e eficiente esses tipos de dados.

Bem eu ainda sou novo nesse mundo de devops, então caso eu tenha cometido algum erro fico aberto para feedbacks.