VirtualBox
Há algum tempo vinha procurando uma solução para tornar simples a instalação de um produto de um cliente em empresas.
Sendo uma aplicação web baseada em PHP, com uma série de módulos adicionais e configurações especiais, de início a melhor solução que tínhamos encontrado era a criação de uma distribuição Linux simplificada com todos os componentes necessários.
Esta sem dúvida seria uma solução interessante, mas a necessidade de constantes atualizações para suportar o hardware do cliente e novas versões para corrigir falhas de segurança me fez procurar pela virtualização.
Primeiramente pensei no Vmware ESXi, solução gratuita para virtualização em servidores, após um pouco de estudo conclui a sua inviabilidade para a minha aplicação em 2 pontos: Requer reinstalar a maquina afim de colocar o HyperVisor antes de qualquer sistema operacional, e só roda em processadores 64 bits.
Assim sobrou apenas a solução do VirtualBox, confesso que fiquei com medo inicialmente, pois utilizo no meu Mac para rodar algumas versões de Linux e Windows, e ele apresenta alguns problemas para uso avançado como criar “Snapshots” das máquinas para poder reverter alterações, pastas compartilhadas entre host e guest, e o compartilhamento do clipboard ser pura lenda.
Estudei ele um pouco e descobri que havia uma forma muito interessante de rodar máquinas virtuais, chamada HeadLess, onde você instancia uma máquina e a configura para redirecionar a saida do monitor para um serviço RDP, assim podendo conectar de qualquer outro computador nela e vendo exatamente o que sairia no monitor.
Gostei disto pois pude configurar toda a parte de conectividade sem me incomodar com a possibilidade de errar em algo e perder a conexão, já que eu só conecto na maquina hospedeira, em nada intervindo na máquina hóspede.
Além disso, havia um certo medo em relação a performance, mas foi simplesmente surpreendente, no caso dessa aplicação onde o uso principal é I/O em disco, o fato do HD da máquina virtual ser um arquivo do sistema de arquivos da hospedeira, fez com que o cacheamento dos dados ficasse mais tempo em memória RAM, assim o desempenho ficou simplesmente impressionante.
Esta aplicação requer uma técnica de aceleração onde boa parte dos códigos são guardados em arquivos temporários para reaproveitamento nos próximos requests, assim a virtualização ao contrário de perder performance, aparentemente aumentou.
Eu não tenho benchmarks para falar a respeito, mas eu nunca vi uma instância desta aplicação rodando de forma tão rápida, mesmo com uma base de dados com uma quantidade considerável de entradas, de fato a maior quantidade que eu vi até agora.
Parabéns ao VirtualBox, vou utilizá-lo para várias aplicações no futuro.