Contêineres ou máquinas virtuais? Qual é o melhor método para virtualização?

Faculdade de Educação Tecnológica do Estado do Rio de Janeiro

Contêineres ou máquinas virtuais? Qual é o melhor método para virtualização?

Eis o grande dilema, já que os dois são métodos de virtualização, embora atuem em “camadas” distintas e não sejam concorrentes

Por: Sérgio Leandro

Após o boom repentino do Docker, tecnologia de software que fornece uma camada adicional de automação de virtualização baseada em contêineres, muitas pessoas têm se questionado sobre uma possível migração do modelo de máquina virtual para contêineres. Eis o grande dilema: contêiner 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 contêiner.

Grandes companhias estão explorando as possibilidades que as soluções em contêiner oferecem. Mas, afinal, do que se trata? O uso dessa 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 contêineres? Contêineres 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 contêineres 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 contêiner 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 contêineres, que varia de milissegundos a poucos segundos. O carregamento da aplicação no contêiner usa o kernel do servidor que hospeda o sistema operacional, o que exclui a necessidade de recuperar o sistema operacional como parte do processo inicial.

Gerenciando contêineres

O grupo de máquinas físicas ou virtuais no qual os contêineres podem ser executados é chamado de cluster, que necessita de alguma forma de monitoramento. Como parte da evolução de tecnologias de contêiner, as organizações podem empregar ferramentas de gerenciamento que trabalham em conjunto com o Docker (projeto open source que fornece uma plataforma para desenvolvedores e administradores de sistemas, permitindo que se criem contêineres). Além de operar como o equipamento de execução para contêineres, 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 contêineres, seu armazenamento compartilhado, e opções para operá-los. Agendar pods em uma máquina no cluster representa o Docker executando um contêiner.

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: CIO

Texto original:
http://cio.com.br/opiniao/2017/11/30/conteineres-ou-maquinas-virtuais-qual-e-o-melhor-metodo-para-virtualizacao/