Virtualização (uma breve introdução)


A virtualização é uma tecnologia que permite criar ambientes seguros e isolados no seu servidor. Programadores podem usar a virtualização para criar sandboxes independentes para desenvolvimento e testes que não afetam negativamente a máquina principal. Administradores de sistemas podem usar a virtualização para dimensionar recursos de rede de acordo com a demanda, proporcionando maior controlo e flexibilidade na gestão da infraestrutura.
A base de virtualização é criada utilizando camadas de abstração. Cada camada oculta parte da sua complexidade da camada (ou camadas) abaixo, apresentando uma visão cada vez mais abrangente da tecnologia. Isto torna a tecnologia subjacente progressivamente mais fácil de compreender e utilizar.

Maquinas Virtuais

As máquinas virtuais (VM - Virtual Machine) são essencialmente computadores dentro de computadores. Cada VM inclui o seu próprio sistema operativo e recursos simulados, tornando-a completamente independente da máquina principal e de qualquer outra VM. Embora consuma mais recursos do que um contêiner, uma VM oferece um forte isolamento e reduz a necessidade de hardware adicional para executar diferentes ambientes de sistema operativo.

Contêineres

Contêineres, por outro lado, são uma tecnologia de virtualização mais leve. Compartilham o sistema operacional da máquina host, por isso são muito mais rápidos de provisionar quando a demanda por recursos é alta. São frequentemente usados para empacotar e executar aplicações. Contêineres ontêm tudo o que a aplicação precisa, incluindo quaisquer dependências e bibliotecas necessárias, garantindo consistência entre diferentes ambientes. Existem dois tipos principais: contêineres de sistema e contêineres de aplicação.
Contêineres de sistema (system containers) simulam uma máquina completa de maneira semelhante a uma VM. No entanto, como os contêineres são executados no kernel do host, não precisam da instalação de um sistema operativo, o que os torna rápidos para iniciar e parar. São frequentemente usados para separar grupos de utilizadores.
Enquanto que contêineres de aplicativos agrupam todos os componentes necessários para a execução de um aplicativo ou processo específico, incluindo quaisquer dependências e bibliotecas necessárias. Isso significa que o aplicativo pode ser executado de forma consistente, mesmo em ambientes diferentes, sem problemas de dependências ausentes. Contêineres de aplicativos são particularmente úteis para a execução de microsserviços.

Comentários