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!
*Sérgio Leandro é especialista em Infraestrutura para Ambientes de Missão Crítica e CEO da OS&T Informática