Como trabalhar com Máquinas Virtuais

Já há algum tempo venho usando duas máquinas virtuais como servidores em minha rede local (cerca de três anos). Alguns clientes e colegas me questionam qual a vantagem deste uso? De tanto responder a esta questão, resolvi escrever este pequeno artigo para esclarecer a quem interessar possa.

Antes de enumerar os prós e contras, vamos falar de alguns detalhes pertinentes a esta questão. A instalação de um servidor com todos os programas necessários ao seu bom funcionamento, mesmo um pacotes pronto (Windows Server, Suse, Etc), que são caros e inacessíveis aos pequenos usuários, é uma tarefa que demanda um tempo razoável. Vejamos meu caso:

Servidor 1: com os seguintes Programas: Linux Debian 5, Servidor Samba 3, Kerberos, Open Ldap e Firebird SQL Server como programas principais. Ainda uma série de pequenos pacotes que uso na operação do mesmo (como exemplo o editor JOE, que uso e já estou acostumado). Em resumo: tenho instalado cerca de 50 pacotes de aplicativos para o bom funcionamento de um servidor PDC (Primary Domain Controler) com AD (Active Diretory). Entre instalação e configuração de cada um destes pacotes, um bom profissional não perde menos que um dois dias de trabalho árduo. Mesmo que o profissional tenha capacidade de customizar um Linux (fiz um instalador Linux com a maioria destes pacotes que está disponível para download em meu site), não perderá menos que umas três horas para instalar e configurar o mesmo.

Servidor 2: com os seguintes programas: Windows XP (sem todas as frescuras que normalmente vem com Windows. Que dá um trabalho danado para tirar), Servidor FilleZilla FTP, VncServer (para acesso remoto), e alguns outros programas que utilizo no Windows. Também é possível customizar a instalação do Windows, mas não têm como clonar as configurações feitas. Isto demandará pelo menos um dia de trabalho. Também tenho um Windows customizado, mas por questões óbvias não posso disponibilizá-lo para download.

Instalar os dos servidores em questão, cada vez que tivermos um problema de hardware (quebra de um disco rígido, atualização do servidor) ou até mesmo se quiser fazer um aproveitamento deste trabalho em algum cliente, significa multiplicar o tempo perdido.

Tenho hoje 16 servidores Linux com a mesma configuração instalada, apenas mudando pequenos detalhes como domínio, Ips, etc. (fiz até um script para estas mudanças [16 x 3 = 48]). Ou seja, 48 dias de para instalar e configurar cada um destes servidores. Sem considerar outra questão! Normalmente, mesmo tendo um roteiro, nunca o trabalho fica idêntico.

Considerando todas estas questões iniciais, Vamos lá:

Prós:

  1. Ganho de tempo: O tempo gasto para instalar uma máquina virtual é, indubitavelmente, menor. No meu caso (uso o Virtualbox), significa apenas instalar o gerenciador de máquinas virtuais, copiar o arquivo que representa o disco rígido e fazer meia dúzia de mudanças, que demandam não mais que 30 minutos (sem pressa!).
  2. Lucratividade e custo: Quando se perde menos tempo para realizar o mesmo trabalho, isto se reflete diretamente nos custos e lucros envolvidos no processo. No meu caso, que presto serviços de desenvolvimento e manutenção de sistemas de automação comercial, isto significou uma diminuição horrenda de custo e melhora considerável de lucros nesta prestação de serviço.
  3. Diminuição do Stress: O processo de instalação ou reinstalação (principalmente) envolve a espera dos usuários pelo restabelecimento das funções exercidas por estes servidores. Cito exemplo de um cliente (janeiro/2012), teve seu servidor literalmente torrado por um raio em um final de semana. Ligou-me na segunda desesperado com todo o seu sistema parado. Coloquei uma máquina minha “debaixo do braço” e em apenas duas horas já estava com todo o seu sistema restabelecido (e olha que ainda tive que configurar outro modem e outro roteador wireless que foram torrados também).
  4. Backup Eficiente: A maioria dos usuários (quando o faz), só se preocupa em fazer backup dos bancos de dados de sistemas comerciais. Esquece que em um servidor encontram-se uma série de dados, criados no decorrer de sua história, que são irremediavelmente perdidos, no caso de perda dos servidores. O backup de uma máquina virtual com todo o seu conteúdo restringe-se apenas um arquivo (no meu caso Disco.Vdi). Hoje realizo este processo de forma automática (agendador de backup e 7z enginner), fazendo o backup a quente (com a máquina funcionando), e envio para diversas máquinas da rede. Ao final do dia, caso não ocorra nenhum incidente basta externar este backup em um disco externo, Pen-Drive ou CD/DVD. Dá até para fazer redundância (estou testando formas de fazer isto quase automaticamente).
  5. Equidade: Nada melhor que você realizar um trabalho sem se preocupar com grandes diferenças (padronização). A falta de padronização gerada por trabalhos contínuos sem um critério bem definido leva inevitavelmente a desorganização. Esta equidade quase completa é alcançada quando são usados estes procedimentos.
  6. Satisfação e Sucesso: Nada melhor que ver a cara de um cliente feliz e saber que seu trabalho esta sendo bem avaliado pelo mesmo. A tomada de decisão de como fazer um trabalho pode resultar no seu sucesso ou fracasso.

Contras:

  1. Equipamentos Robustos: Para que os servidores tenham um bom desempenho é importante que os hospedeiros sejam máquinas com bastante memória (2 a 4 Gigabytes é com poder de processamento razoável (dual ou quad core), dependendo do número de servidores virtuais instalados). Isto obviamente exige um custo maior para adquiri-los.
  2. Tem mais algum? : Sinceramente não consigo lembrar mais nenhum motivo que impeça a decisão de trabalhar com máquinas virtuais. Mas encontro-me aberto a sugestões.

Links Úteis
  • Primeiros passos com a jQuery:
    Aprenda neste curso front-end como criar botões com a biblioteca jQuer
  • .NET na prática:
    Neste Guia de Consulta você encontrará conteúdos que abordam na prática o desenvolvimento de aplicações em .NET utilizando seus variados frameworks, como ASP.NET MVC, Web API e Entity Framework.
  • Mapeamento Objeto-Relacional com TMS Aurelius:
    Veremos neste artigo como funciona e como utilizar o framework de Mapeamento Objeto-Relacional TMS Aurelius, que permite lidar com bancos de dados aproveitando os recursos da orientação a objetos.

Saiba mais sobre Engenharia de Software ;)

  • Guias Engenharia de Software:
    Encontre aqui os Guias de estudo sobre os principais temas da Engenharia de Software. De metodologias ágeis a testes, de requisitos a gestão de projetos!
  • Gestão de Projeto:
    Neste guia você encontrará o conteúdo que precisa para saber como gerenciar projetos de software. Confira abaixo a sequência de posts que te guiarão do básico ao avançado em Gestão de Projetos.
  • Modelagem de Processos de Negócio:
    Neste guia de consulta você encontrará diversos conteúdos que podem ser usados ao longo dos seus estudos sobre a Modelagem de Processos de Negócios, explorando técnicas e ferramentas relacionadas a essa atividade.