“Eis o grande dilema! Os dois são
métodos de virtualização, mas atuam em “camadas” distintas, porém não
são necessariamente concorrentes”, explica Sérgio Leandro, especialista
em Infraestrutura para Ambientes de Missão Crítica e CEO da OS&T
Informática
Após
o ‘boom’ repentino do Docker, que utiliza a virtualização com base em
containers, muitas pessoas têm se questionado sobre uma possível
migração do modelo de máquina virtual para containers. Eis o grande
dilema: Container ou máquina virtual?
Respondo tranquilamente: ambos! Os dois são métodos de virtualização,
mas atuam em “camadas” distintas. Vale a pena detalhar cada solução
para deixar claro que elas não são necessariamente concorrentes. Hoje
vamos ao container!
Grandes companhias estão explorando as possibilidades que as soluções em container oferecem. Mas, afinal, do que se trata?
O uso desta tecnologia tem crescido de forma atrativa, capaz de
melhorar a eficiência das equipes de software facilitando o trabalho
conjunto de seus integrantes, ao mesmo tempo em que facilita a
implementação das aplicações em ambientes não heterogêneos. Afinal, o
que são Containers? Os containers são ambientes portáveis e isolados,
que permitem aos desenvolvedores compilar aplicações com todos os links e
bibliotecas necessárias para sua execução.
Em grandes organizações, aplicações como conjuntos de software de ERP
ou de CRM repetidamente começam como simples projetos, porém, com o
passar do tempo, se tornam rapidamente “desajeitadas” e ineficientes,
com um código-fonte monolítico que emperra o progresso dos times de
desenvolvimento. Para exceder esta ineficiência, uma nova abordagem
desagrega a aplicação em componentes menores, conhecidos como
microsserviços. Adotar uma arquitetura de microsserviços oferece às
equipes de desenvolvimento, eficiência operacional em função do pequeno
código-fonte de cada componente de aplicação.
No alcance em que o software passa por diversos estágios de
desenvolvimento, pode avançar do PC do desenvolvedor para um ambiente de
laboratório ou de teste; ou se mover de um ambiente físico para um
virtual e, finalmente, para um de produção. Em cada um desses ambientes,
a aplicação deve ter um desempenho consistente. A tecnologia de
container resolve o problema dos desenvolvedores de software para
encapsular um componente de aplicação em um pacote único e leve. Baseada
em Linux, a tecnologia promete rodar com consistência entre um ambiente
de computador para outro, seja ele virtual ou físico.
Os containers também são uma ferramenta ideal para DevOps, tanto para
desenvolvedores como para administradores de sistemas, pois liberam os
primeiros para manter o foco na sua atividade essencial, enquanto os
times de operações se beneficiam da flexibilidade, de menores áreas
ocupadas no data center e de custos mais baixos.
A tecnologia de container trabalha melhor quando cada elemento é
designado para um processo simples. Por isso, começar a implementar uma
arquitetura de microsserviços para uma grande aplicação ou projeto de
software pode representar uma demanda intensiva de recursos, mas é um
esforço que é recompensado pelos ganhos de agilidade obtidos, em função
da velocidade de implementação dos containers, que varia de
milissegundos a poucos segundos. O carregamento da aplicação no
container usa o kernel do servidor que hospeda o sistema operacional, o
que exclui a necessidade de recuperar o sistema operacional (OS) como
parte do processo inicial.
Gerenciando os Containers
O grupo de máquinas físicas ou virtuais no qual os containers podem
ser executados é chamado de cluster, que necessita de alguma forma de
monitoramento. Como parte da evolução de tecnologias de container, as
organizações podem empregar ferramentas de gerenciamento que trabalham
em conjunto com o Docker (projeto OpenSource que fornece uma plataforma
para desenvolvedores e administradores de sistemas, permitindo que se
criem containers). Além de operar como o equipamento de execução para
containers, o Docker também provê o gerenciamento de seus sistemas de
arquivos.
Ferramentas de gerenciamento de cluster como o Kubernetes, em geral,
criam uma abstração no nível de um componente de aplicação. Essa
abstração, chamada de pod, inclui um grupo de um ou mais containers, seu
armazenamento compartilhado, e opções para operá-los. Agendar pods em
uma máquina no cluster representa o Docker executando um container.
As empresas poderão adotar cada vez mais arquiteturas de
microsserviços e aplicações em ambientes virtualizados e de cloud,
adotando soluções inovadoras como containers. Atente-se ao assunto!
fonte: http://www.decisionreport.com.br/mercado/containers-ou-maquinas-virtuais/