Jump to section

Containers ou VMs?

Copiar URL

A Red Hat foi reconhecida como líder no relatório Magic Quadrant™ do Gartner® de 2023

A capacidade de execução e a visão abrangente da Red Hat garantiram à empresa o primeiro lugar na categoria Gestão de Containers do relatório Magic Quadrant™ 2023, do Gartner.

Containersmáquinas virtuais (VMs) são abordagens para empacotar ambientes de computação. Elas combinam vários componentes de TI e isolam esses ambientes do restante do sistema. A principal diferença entre elas está nos componentes que são isolados, o que afeta a escalabilidade e a portabilidade de cada abordagem.

 

Um container é um software que contém todos os componentes e funcionalidades necessários para executar uma aplicação. As aplicações mais modernas são compostas por vários containers, cada qual responsável por uma função específica. Containers não utilizam um hipervisor. Além disso, costumam ser medidos em megabytes e são considerados uma forma mais ágil e rápida de gerenciar o isolamento de processos.

Um dos fatores que mais contribui para o sucesso dos containers é a portabilidade. Assim como peças de LEGO™ que se encaixam, containers individuais podem ser trocados e movidos entre ambientes diferentes com facilidade. Quando uma aplicação e suas dependências são empacotadas em um container, é possível implantá-la onde for necessário. Ela funcionará exatamente da mesma forma seja no laptop do desenvolvedor, em um data center, na nuvem ou na edge.

O Docker, uma plataforma open source para criação, implantação e gerenciamento de aplicações em containers, foi de extrema importância para a evolução dessa tecnologia ao longo dos anos. 

Máquinas virtuais são essenciais para a cloud computing. Elas replicam o funcionamento dos computadores físicos ao executar sistemas operacionais em instâncias isoladas. É comum hospedar várias VMs em um único servidor, com um hipervisor atuando como uma camada de software lightweight entre elas e o host físico. O hipervisor gerencia com eficiência o acesso aos recursos, permitindo que as máquinas virtuais funcionem como servidores distintos, oferecendo maior flexibilidade e agilidade.

As VMs ganharam popularidade nos anos 2000 devido a iniciativas de consolidação e corte de custos, mas sua utilização evoluiu com o tempo. As empresas aperfeiçoaram as implantações das VMs, indo além da consolidação para abranger diversos casos de uso. Entre eles, destacam-se o fornecimento de recursos sob demanda para aplicações e a otimização do acesso a recursos dispendiosos, como GPUs.

As VMs também serviram como base para muitos ambientes de cloud computing, viabilizando a virtualização de recursos e oferecendo suporte a multitenancy e isolamento (vários clientes executando sistemas que compartilham os mesmos recursos).

As máquinas virtuais contêm seus próprios sistemas operacionais, o que permite que elas executem várias funções de uso intensivo de recursos simultaneamente A maior disponibilidade de recursos para as VMs permite extrair, dividir, duplicar e replicar o funcionamento de servidores, sistemas operacionais, desktops, bancos de dados e redes inteiros. 

Além das diferenças tecnológicas, a comparação entre containers e máquinas virtuais é, indiretamente, uma comparação entre as modernas práticas de TI nativas em nuvem e as arquiteturas de TI tradicionais. 

Novas práticas de TI 
(implantação nativa em nuvemCI/CDDevOps) só são possíveis porque as cargas de trabalho são divididas nas menores unidades de serviço (geralmente uma função ou um microsserviço) e executadas isoladamente. Uma vez isoladas, elas são desenvolvidas, implantadas, gerenciadas e escaladas de forma independente.

Essas pequenas unidades são melhor empacotadas em containers, o que permite que várias equipes trabalhem em partes de um app ou serviço sem interromper ou comprometer o código empacotado em outros containers.

Arquiteturas de TI tradicionais
(monolíticas e legadas) mantêm todos os aspectos de uma carga de trabalho firmemente agrupados e incapazes de funcionar sem que arquitetura completa seja executada. Como não é possível dividir esses aspectos, eles precisam ser empacotados como uma unidade completa em um ambiente maior, geralmente uma VM.

Era comum criar e executar aplicações inteiras dentro de VMs, mesmo sabendo que ao armazenar todo o código e dependências, ela ficaria grande demais e isso poderia gerar falhas em cascata e downtime durante as atualizações.

 

virtualization vs containers

Virtualização

Um software chamado hipervisor separa recursos das máquinas físicas para serem particionados e dedicados às VMs. Quando um usuário emite uma instrução para uma VM que exige recursos adicionais do ambiente físico, o hipervisor retransmite a solicitação ao sistema físico e armazena as alterações em cache. As VMs parecem e agem como servidores físicos e, por isso, podem multiplicar as desvantagens da dependência de aplicações e de um sistema operacional com grande área de ocupação (desnecessária para a execução de uma única app ou microsserviço).

Containers

Tudo em um container é empacotado e enviado utilizando uma imagem de container, isto é, um arquivo que inclui todas as bibliotecas e dependências. Os arquivos de imagens de container são semelhantes aos pacotes de instalação de software (como RPMs no Linux). No entanto, eles só precisam de um runtime de container e um kernel compatível para executar a aplicação, não importando o sistema operacional usado para criar o container nem a origem das bibliotecas dentro dele. Como os containers são bem pequenos, geralmente temos centenas deles levemente acoplados uns aos outros. Por isso, plataformas de orquestração de container (como o Red Hat OpenShift e o Kubernetes) são usadas para provisioná-los e gerenciá-los.

Depende. Você precisa de uma instância pequena que ser movida com facilidade (containers) ou de uma alocação semipermanente de recursos de TI personalizados?

Outros fatores a se considerar incluem: arquitetura da aplicação, práticas de desenvolvimento, segurança e exigências regulatórias.

Pequenos e lightweight, os containers podem ser implantados facilmente em sistemas bare metal, bem como em ambientes públicos, privados, híbridos e multicloud. Também é muito comum executar containers em VMs, uma vez que as maioria das organizações já possui uma infraestrutura com foco em máquinas virtuais em funcionamento. Isso atesta a flexibilidade dos containers. 

Containers também são o ambiente ideal para implantar as apps nativas em nuvem atuais, que não são nada mais que coleções de microsserviços criados para oferecer desenvolvimento consistente e gerenciamento automatizado em ambientes públicosprivadoshíbridosmulticloud. As apps nativas em nuvem ajudam a acelerar a criação de novas apps, a otimização de apps existentes e a forma como todas elas se conectam. 

Em comparação com as VMs, os containers são mais apropriados para: 

  • Criar apps nativas em nuvem
  • Empacotar microsserviços
  • Incorporar aplicações em práticas de DevOps ou CI/CD
  • Mover projetos de TI escaláveis por uma área de ocupação de TI diversa 

Em comparação com containers, as VMs são mais apropriadas para: 

  • Armazenar cargas de trabalho monolíticas, legadas e tradicionais
  • Isolar ciclos de desenvolvimento arriscados
  • Provisionar recursos de infraestrutura (como redes, servidores e dados)
  • Executar um sistema operacional diferente dentro de outro, como o Unix no Linux

 

E, se você tem aplicações em execução tanto em máquinas virtuais quanto em containers, o Red Hat Service Interconnect pode ajudar a conectar aplicações e serviços em ambientes diferentes.

Máquinas virtuais e containers podem ser implantados em diversos tipos de infraestrutura, incluindo servidores bare metal.

O que é bare metal?

“Bare metal” se refere a um computador ou servidor executado em um hardware e que não requer assistência de hipervisores, máquinas virtuais ou conteinerização para operar. Servidores bare metal também são conhecidos como servidores dedicados. Seus componentes de hardware não são compartilhados com outros usuários, logo são para uso exclusivo do contratante do serviço.

Esses servidores são capazes de processar um grande volume de dados com baixa latência, ou seja, eles são rápidos e potentes. Com bare metal, o usuário tem total controle sobre a infraestrutura do seu servidor. Ele pode escolher o sistema operacional e adequar hardware e software às necessidades específicas de suas cargas de trabalho.

No entanto, apesar das implantações bare metal serem indispensáveis quando o desempenho e o acesso direto ao hardware são essenciais, elas podem não oferecer o mesmo nível de flexibilidade e gerenciamento de recursos que os containers e as máquinas virtuais.

Posso hospedar VMs em bare metal?

Sim, servidores bare metal podem hospedar máquinas virtuais, basta implantar neles um hipervisor e um software de virtualização.

Posso hospedar containers em bare metal?

Sim, plataformas como o Docker, Kubernetes e Podman foram criadas para ajudar usuários a gerenciar e implantar containers em escala em várias infraestruturas, incluindo servidores bare metal. 

O Red Hat® OpenShift® é uma plataforma empresarial de aplicações baseada em container que oferece alternativas de implantação e opções de consumo com suporte a todo tipo de app ou ambiente. Com o Red Hat OpenShift, as organizações podem criar, implantar, executar e gerenciar aplicações de qualquer lugar em escala, com segurança e rapidez. 

O Red Hat OpenShift Virtualization, uma funcionalidade do Red Hat OpenShift, permite que equipes de TI executem máquinas virtuais e containers na mesma plataforma Kubernetes, simplificando o gerenciamento e reduzindo o tempo até a produção.  

Dessa forma, as empresas aproveitam os investimentos prévios em virtualização, ao mesmo tempo que se beneficiam da simplicidade e da velocidade de uma plataforma de aplicações moderna. Ao integrar VMs na plataforma de aplicações do OpenShift, você estabelece um ambiente consistente para o desenvolvimento e a implantação de aplicações. Os desenvolvedores podem criar, testar e implantar aplicações com mais rapidez, acelerando o time to market.

Leitura recomendada

ARTIGO

Containers x máquinas virtuais

Os containers Linux e as máquinas virtuais são ambientes de computação empacotados que combinam vários componentes de TI e os isolam do restante do sistema.

ARTIGO

O que é orquestração de containers?

A orquestração automatiza a implantação, o gerenciamento, a escala e a rede dos containers.

ARTIGO

O que é um container Linux?

Um container Linux é um conjunto de processos isolados do sistema. Esses processos são executados a partir de uma imagem distinta que oferece todos os arquivos necessários a eles.

Leia mais sobre containers

Soluções Red Hat

Uma plataforma de aplicações para empresas que oferece serviços testados para lançar aplicações na infraestrutura de sua escolha.

Conteúdo adicional

Datasheet

Red Hat OpenShift: tecnologia de container para nuvem híbrida

O Red Hat® OpenShift® é uma plataforma empresarial de containers Kubernetes que ajuda organizações em todo o mundo a criar, implantar, executar, gerenciar e proteger aplicações inovadoras em nuvens híbridas.

Datasheet

Red Hat OpenShift Kubernetes Engine

O Red Hat OpenShift Kubernetes Engine consiste em vários componentes essenciais e totalmente integrados para criação, implantação e gerenciamento de aplicações em containers.

Ebook

Transforme suas aplicações

Conheça as tendências atuais para a transformação de aplicações e como modernizar sua TI usando serviços em nuvem e plataformas de aplicações em nuvem híbrida.

Treinamentos Red Hat

Treinamento gratuito

Running Containers with Red Hat Technical Overview

Treinamento gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Treinamento gratuito

Developing Cloud-Native Applications with Microservices Architectures