Virtualização ou Conteinerização.

Virtualização ou Conteinerização.

A virtualização de máquinas e sistemas operacionais está cada vez mais presente em nossos dias. Mas, essa ideia não é tão recente assim. Acredita-se que esse conceito tenha surgido lá trás, na época do mainframe, final da década de 60 e início de 70, quando a IBM investiu muito tempo e dinheiro em projetos de time-sharing. Time-sharing é um conceito onde se faz o uso compartilhado dos recursos computacionais entre um grande número de usuários, o que traria reduções de custos e melhor aproveitamento das capacidades.

Razões semelhantes estão presentes na virtualização.  A capacidade de um servidor é tão grande que as aplicações não conseguem explorá-las efetivamente. Assim, a melhor forma de aproveitar toda essa capacidade e ao mesmo tempo reduzir custos e facilitar o gerenciamento, é através da virtualização.

Embora as tecnologias e o uso tenham evoluído, a ideia ainda é a mesma: aproveitar os recursos computacionais para rodar diversos sistemas ao mesmo tempo.

Os datacenters hoje se utilizam da virtualização para oferecer capacidade computacional, criando grandes pools de recursos lógicos compartilhando CPU, memória RAM, discos, armazenamento, aplicações e redes, entre diversos clientes, oferecendo mais agilidade e escalabilidade.

O Hypervisor

Os virtualizadores são sistemas que permitem que várias máquinas virtuais possam operar em cima de uma máquina física. Num sistema de virtualização o seu componente principal é o HYPERVISOR (ou VMM), que cria uma plataforma de virtualização, a qual fará a comunicação entre as máquinas virtuais e o servidor hospedeiro (servidor físico). E é nessa plataforma que as máquinas virtuais são executadas e monitoradas.

Os virtualizadores foram classificados em dois tipos.

  • Tipo 1 – Os nativos (ou bare metal).

Os virtualizadores nativos são aqueles que “conversam” direto com o hardware, deixando o sistema operacional virtualizado rodando em um nível logo acima do Hypervisor. Exemplos de virtualizadores nativos são Oracle VM, Microsoft Hyper-V, VMWare ESX e Xen.

  • Tipo 2 – Os hospedados.

Neste, o virtualizador roda sobre o sistema operacional hospedeiro, rodando, portanto, como uma aplicação, sobre a qual os sistemas operacionais virtualizados irão rodar. Dessa forma a comunicação com o hardware passa pelo S.O. antes de chegar até ele. Exemplos deste tipo de virtualizador são: Oracle VirtualBox, VMWare Server e Workstation, Microsoft Virtual PC, KVM, QEMU e Parallels.

A figura abaixo resume os dois tipos de virtualizadores.

Tipos de virtualizadores

A virtualização trouxe benefícios aos datacenters, como otimização dos recursos, consolidação de servidores, maximização do uptime, escalabilidade, proteção contra falhas de hardware, redundância de recursos, proteção dos investimentos contra a obsolescência. Mas, sem dúvida, o maior dos benefícios foi a economia de investimentos.

A Evolução da Virtualização

Com a virtualização foi possível que mais aplicações pudessem ser executadas em um mesmo ambiente, compartilhando recursos de uma mesma máquina. As aplicações ganharam novo fôlego, rodando em servidores escaláveis e as interrupções no serviço ou demora nas respostas, não impediram mais o seu crescimento.

Mesmo com os ganhos obtidos com a virtualização, ainda era preciso facilitar a preparação do ambiente para instalação das aplicações.

Um sistema virtualizado, apesar de trazer uma série de configurações prontas, ainda demanda atividades que vão desde a instalação do S.O., configurações iniciais, instalações e configurações das plataformas de desenvolvimento, configurações e ajustes de rede até o provisionamento do armazenamento dos dados. Isto para um ambiente de desenvolvimento é uma tarefa árdua.

Ambientes de desenvolvimento normalmente se espalham por diversas máquinas: como servidores de desenvolvimento, servidores de testes, servidores de pré-lançamento de versão e servidores de produção, ou na própria máquina do desenvolvedor. Todos os códigos gerados em um ambiente devem rodar de forma idêntica em todos os demais ambientes, para isso as configurações de infraestrutura devem estar iguais. Deixar tudo igual em todos esses ambientes é uma tarefa difícil.

Para resolver esse problema surgiu a evolução da virtualização, a “conteinerização” – traduzindo diretamente do termo em inglês: containerization.

A “conteinerização” é a virtualização da aplicação rodando em ambientes isolados chamados de Contêineres.

Os contêineres

Assim como os hypervisor´s são os responsáveis pelas plataformas de virtualização de máquina, os contêineres são os responsáveis pelas plataformas de virtualização de aplicações.

Os contêineres são uma maneira de encapsular um aplicativo dentro de sua própria caixa isolada. O aplicativo em seu contêiner não tem conhecimento dos outros aplicativos ou processos que existem fora da sua caixa. Tudo o que é necessário para o aplicativo ser executado com êxito também reside nesse contêiner. Aonde a caixa for, o aplicativo sempre estará satisfeito, porque estará acompanhado de tudo o que é necessário para ser executado.

Os contêineres são ambientes de tempo de execução portáteis, isolados e controlados por recursos, que são executados em um computador host ou máquina virtual. Um aplicativo ou processo executado em um contêiner é empacotado com todas as dependências e os arquivos de configuração necessários. Ele tem a ilusão de que não existem outros processos em execução fora de seu contêiner.

O host do contêiner provisiona um conjunto de recursos para o contêiner e este usará apenas esses recursos. Para o contêiner, não há nenhum outro recurso além daqueles que foram recebidos e, portanto, ele não é capaz de acessar recursos provisionados para um contêiner vizinho.

Além da padronização e independência, a aplicação pode rodar em ambiente multiplataforma, com Windows ou Linux, servidor ou desktop, sem precisar mudar nem uma linha de código sequer. O desenvolvedor pode desenvolver a aplicação em seu notebook, empacotar ela e enviar direto para o seu datacenter local ou na nuvem, sem precisar adaptar nada. A aplicação já estará pronta para entrar em produção.

Uma outra vantagem da “conteinerização” é o tempo de resposta reduzido e a economia de recursos. Veja na tabela abaixo uma comparação da execução de uma aplicação rodando em máquinas virtuais e dentro de contêineres.

Os dados foram obtidos para uma aplicação NODE.JS rodando em duas versões específicas de Windows: a Nano Server e a Server Core.

Primeiro uma comparação de velocidade de inicialização.

Nano Server Server Core
Windows Server Container Abaixo de 600 ms 1 segundo
Hyper-V Isolation 1,75 segundos 3,3 segundos
Virtual Machine 3 segundos 5-60+ segundos

Agora comparando-se o uso de armazenamento.

Nano Server Server Core
Windows Server Container Primeiro Conteiner: 120MB

Adicionais: 75MB

Primeiro Conteiner: 150MB

Adicionais: 75MB

Hyper-V Isolation Primeiro Conteiner: 340MB

Adicionais: 150 MB

Primeiro Conteiner: 555 MB

Adicionais: 280 MB

Virtual Machine 10x o tamanho do contêiner 10x o tamanho do conteiner

Conclusão

Assim como a virtualização, os contêineres são recursos que visam compartilhar recursos do sistemas computacionais trazendo mais agilidade e resiliência para as empresas, associadas a um ganho de performance e economia de investimentos. Seja em um datacenter on-premisses (local) ou na nuvem.


1 Comment

O Que o Windows Server 2016 Tem de Novo. | Acction Ti e Telecom

21/05/2018 at 10:02 pm

[…] Windows Server 2016 trouxe diversas melhorias, principalmente nas áreas de segurança, cloud e virtualização, e suporte para os desenvolvedores. Confira abaixo um resumo […]

Leave a Reply

Entre em contato

Endereço
São José do Rio Preto-SP

Horário
Segunda—Sexta: 8:00–18:00
Sábado: 08:00–12:00

E-mail

contato@acction.com.br

Urgência e Emergência

(17) 98118-6432

(17) 99741-5185

 

Busca

WhatsApp chat