A virtualização de sistemas representa a capacidade de criar múltiplos ambientes ou instâncias (virtuais) sobre o mesmo recurso de hardware (físico), aumentando a produtividade e eficiência tanto em cenários empresariais ou pessoais, assim como em ambientes cloud ou on-prem.
É um conceito que se pode aplicar tanto em recursos como processamento, armazenamento ou comunicações de rede, como dados, aplicações e postos de trabalho.
A primeira memória que guardo sobre este conceito remonta aos primeiros anos deste milénio (talvez 2002), na altura em que foram disponibilizadas publicamente as primeiras versões do VMWare Workstation. Desde então, a virtualização tem evoluído de uma forma significativa, criando possibilidades na gestão de infraestruturas de datacenter e alterando o paradigma no desenvolvimento e manutenção de software e serviços.
Virtualização de sistemas: a luta de titãs
Apesar dos vários projetos anteriores (IBM, Macintosh, Connectix entre outras), a viragem de milénio trouxe imensas novidades no domínio da virtualização de sistemas, tornando a VMWARE um dos principais players de mercado.
A Microsoft, com a aquisição da linha de produtos Virtual PC e Virtual Server da Connectix acompanhou esta tendência, disponibilizando em 2008 o HyperV (que acompanhava o Windows Server). Ao mesmo tempo foram aparecendo soluções opensource como o Virtuozzo (em 2005), KVM (em 2007) ou Docker (em 2013), todas elas com abordagens inovadoras e diferenciadoras.
Muitos anos depois e após uma série de desenvolvimento e aquisições por parte dos gigantes tecnológicos, chegamos a 2024 com várias soluções de virtualização, para dar resposta a todos os requisitos, cenários e orçamentos.
A Microsoft decidiu descontinuar o HyperV apostando tudo no Azure Stack HCI, um produto híbrido que permite integração de recursos on-prem e cloud Azure para todo o tipo de serviços do ecossistema Microsoft.
A VMWARE continua com uma vasta linha de produtos, seja nos postos de trabalho (Horizon e Workspace), Desktop (Fusion para Mac, Workstation Player/Pro), Cloud (VShpere, vSAN, Cloud Foundation) e até no segmento de redes e segurança (Carbon e NSX).
A AWS (Amazon Web Services, criada em 2006) e a Google (Google Computing Engine, lançada em 2012) desenvolveram os seus serviços cloud com tecnologias KVM tendo-se tornado líderes (juntamente com a Microsoft) em IaaS (infraestruras cloud como serviço) e PaaS (Platformas como Serviço).
Outras soluções como o Nutanix Cloud Platform, Citrix Hypervisor, Red Hat Virtualization, Proxmox, Oracle VM Server, Virtuozzo Hybrid Server, Xen Project, QEMU continuam a ser apresentados como alternativas aos principais players, cada um com as suas mais valias e benefícios.
De entre todas estas soluções, coloco grande expectativa no portfólio da Canonical, empresa liderada por Mark Shuttleworth, que desenvolve e dá suporte ao Ubuntu (Sistema Operativo, servidor e posto de trabalho), participa no projeto Ceph (Storage), desenvolve o Multipass (Virtualização), LXD (gestão unificada de máquinas virtuais e containers), Juju (motor de orquestração), MaaS (Metal as a service), Data Fabric (integração e processamento de dados) e MicroK8s (Kubernetes).
Tendo em conta a parceria que a Canonical fez com a Microsoft em 2016 (que permitiu a inclusão de uma bash no Windows 10), ou sua presença no evento Ubuntu Summit 2023 (realizado em Novembro de 2023), poderemos estar na presença de uma viragem histórica na Canonical (empresa com sede em Londres e), que nos últimos anos (desde 2018) tem considerado a hipótese de entrar na bolsa com uma oferta publica inicial (IPO), tendo como principais interessados empresas como a Netflix, eBay, Walmart, AT&T ou Telekom que escolheram as plataformas Canonical para desenvolver os seus serviços.
Do hipervisor aos kubernetes
Independentemente das empresas que desenvolvem cada uma das tecnologias, a verdade é que a virtualização de sistemas foi um conceito que mudou completamente o paradigma de gestão de datacenters, desenvolvimento e manutenção de software.
O hipervisor permite criar uma camada intermédia entre o hardware físico (designados por hosts) e as máquinas virtuais (intitulados normalmente por guests), gerindo os recursos físicos que são partilhados pelas cargas virtuais.
As tipologias de hipervisor são geralmente do tipo 1 (também designado Bare Metal), em que o hipervisor interage diretamente com os recursos de hardware não sendo necessário qualquer sistema operativo adicional (ex. Proxmox ou KVM), ou do tipo 2 em que o hipervisor é executado como se fosse uma aplicação, sobre o sistema operativo existente (ex. VMWare Player, Oracle VM for x86).
Esta camada intermédia entre o hardware do host e o sistema operativo do guest permitiu otimizar muitas das tarefas do sysadmin (administradores de sistemas), nomeadamente nos processos de instalação, validação e manutenção.
Tirando partido de templates (modelos pré-configurados) passou a ser possível fazer o deploy de servidores virtuais em poucos minutos. Usando snapshots (registos instantâneos) ou clonagem passou a ser possível testar updates ou repor versões antigas sempre que necessário. Recorrendo às funcionalidades de live migration (transferência de cargas virtuais entre hosts) passou a ser possível desligar componentes da infraestrutura (ex. servidores físicos) sem qualquer donwtime nas cargas virtuais. Estes são apenas alguns exemplos das vantagens da virtualização de sistemas operativos.
Por outro lado, o aparecimento de containers (ex. Docker) permite isolar a componente aplicacional, virtualizando apenas esta camada e restantes dependências ou configurações, criando imagens muito mais leves e portáveis.
Esta plataforma de contentorização permite empacotar e isolar aplicações em containers, que são leves e partilham o kernel do sistema operativo do host. Difere de um hipervisor comum porque não cria máquinas virtuais ou sistemas operativos diferenciados. Em vez disso, os containers Docker utilizam os recursos do host (máquina física) e disponibilizam uma forma eficiente de instalar e executar aplicações sem haver preocupações com dependências ou bloquear com problemas de compatibilidade.
Embora o Docker e ambos os tipos de hipervisores (tipo 1 e 2) forneçam uma camada de isolamento, a tecnologia e a abordagem subjacentes são diferentes. Os hipervisores criam máquinas virtuais que simulam hardware e executam seus próprios sistemas operativos. Os contentores Docker, por outro lado, compartilham o kernel do sistema operativo do host e fornecem uma solução mais leve e eficiente porque virtualizam apenas os recursos necessários para a execução das aplicações.
Esta componente permitiu otimizar muitas das tarefas das equipas de desenvolvimento aplicacional, dado que deixaram de se preocupar com as dependências dos vários ambientes (desenvolvimento, testes ou produção), na medida em que o contentor Docker já inclui todos os recursos necessários para a sua correta execução. Assim sendo, a instalação ou migração de aplicações apenas exige a disponibilidade de um host com o docker ativo, capaz de executar uma imagem (“docker run [OPTIONS] IMAGE [COMMAND] [ARG…]”) criada previamente. Desta forma, em vez de se gastar tempo na preparação dos ambientes, com instalação de dependências, livrarias e alterando ficheiros de configurações, a equipa de desenvolvimento apenas tem de criar uma imagem inicial, com todos os recursos necessários à execução da respetiva aplicação, podendo, inclusivamente, reutilizar imagens geridas e disponibilizadas por outras equipas / outros produtores de software (ex. utilização de webserver ou motor de base de dados).
O sucesso que o docker teve na comunidade tecnológica levou ao aparecimento de novas tecnologias, como é o caso dos kubernetes, que são sistemas de orquestração de contentores e que permitem a implementação, automação, dimensionamento e gestão desse ecossistema.
Atualmente mantido pela Cloud Native Computing Foundation (resultado da parceria da Google com a Linux Foundation), esta tecnologia (comummente designada k8s) assenta no conceito de que o gestor deve definir os parâmetros, requisitos e limitações, devendo o cluster de kubernetes garantir o cumprimento desses objetivos da forma mais eficiente.
As principais componentes são as “worker machines” intitulados como “nodes”, que executam as aplicações contentorizadas. Os “worker nodes” alojam os “pods” que são um género de cabine onde as componentes das aplicações são executadas.
Como referido, o gestor do cluster define o número de “worker machines” assim como os parâmetros de escalonamento pretendido, sendo responsabilidade do “control plane” gerir a forma como o cluster distribui a carga pelos recursos de processamento. Este “control plane” tem ainda componentes como o apiserver (que expõe APIs no frontend), o etcd (que regista informação sobre o cluster), o scheduler, controller-manager , entre outros.
Um dos recursos mais interessantes dos kubernetes são os “namespaces” permitindo criar divisões lógicas entre ambientes (como por exemplo a separação entre ambientes de produção e testes). Outros recursos ou funcionalidades como os “services”, os “volumes”, o “secrets” e os “helm charts” garantem uma solução global para ambientes de desenvolvimento e operação de tecnologias e sistemas de informação.
O que virá a seguir?
As instituições, empresas, fundações e demais players nestes domínios têm apresentado ao mercado (a um ritmo alucinante) atualizações constantes, novos produtos e serviços, exigindo uma atualização e especialização constante aos profissionais do setor.
Com a recente aquisição da VMWARE pela Broadcom (em finais de 2023, por $69 Billion), são esperadas reações por parte de outros players, mas também por parte de grandes clientes da VMWARE (alguns dos quais já procuram alternativas). Manterá a VMWARE (Agora integrada na Broadcom) a sua posição de líder no quadrante mágico da Gartnet? Será 2024 um ano de novidades no que respeita a tecnologias de virtualização? Haverá novos líderes no setor a curto prazo? Estas são algumas das questões que se colocam.
Carlos Domingues
Coordenador de TI e Segurança da Informação