2009/01/24

VMware ThinApp - Programas Virtualizados

Um dia todos os programas serão virtualizados... mas enquanto isso não chega, este ThinApp da VMware parece ser um passo no bom sentido.

Ora, que é isto da virtualização? (e preparem-se porque vão começar a ouvir esta palavra cada vez mais frequentemente.)  Ora... engloba muita coisa, mas neste caso é aplicado à aplicação.
Em vez de necessitarem instalar um programa no vosso sistema operativo (coisa que pode obrigar a direitos administrativos, alterações no registry, etc.) executam um simples programa que... cria todo um "sistema operativo virtual" que permite que o programa corra sem necessidade de modificar realmente o sistema operativo hospedeiro.

É a solução perfeita para evitar que dezenas de programas espalhem ficheiros de configuração pelo vosso sistema operativo. O argumento de que este tipo de programa se torna "mais pesado", é um factor que tem cada vez menos importância num mundo onde os computadores têm mult-processadores e Gigabytes de memória. Factores como a simplicidade de instalação, manutenção e execução tornam-se agora factores mais importantes que uns MB extra de memória ou uns ciclos extra de CPU utilizados.

9 comentários:

  1. Acho que a afirmação "Um dia todos os programas serão virtualizados... " é discutível. Esse dia, em certo sentido, já chegou e demonstrou que as coisas não são 100% assim: o java é uma VM e cada programa a correr dentro duma JVM é um "programa virtualizado independente". Problema: há certo tipo de IPC, como memoria partilhada, que, se for necessário, acaba por ser implementado à mão (em C/C++) e chamado pela JNI.

    O mesmo se passaria num caso em que substituis a JVM por outra VM qualquer: quando precisas de passar informação de modo rápido e por isso não usas "ethernet" (sockets, IP,...), não podes "virtualizar".

    Aquilo que se pode atingir é que a diferença entre ter virtualizado ou não um processo poderá ser "uma flag" à mão do administrador (sim, porque um ambiente desses para um utilizador médio actual seria de doidos)

    ResponderEliminar
  2. Sim até certo ponto... mas a verdadeira virtualização é mesmo chegar a esse ponto de poderes partilhar rede, placa gráfica, etc, por "hardware" para evitar atrasos... e que se adapta perfeitamente aos sistemas multi-cpu/multi-core.

    Quanto a ser "de loucos" para um ambiente para um utilizador normal... não creio. Tudo se resume à forma como isso é gerido pelo sistema, e poderá/deverá ser completamente transparente para o utilizador. Tal como o chrome é simplesmente mais um browser, embora mantenha cada tab num processo separado.

    Clica num icon, aparece um programa... não precisa saber tudo o que se está a passar por trás das cenas.

    ResponderEliminar
  3. Pois. 'xa cá ver se eu percebo.

    Do mesmo modo que as máquinas virtuais são independentes do hardware ...as aplicações virtuais são independentes dos sistemas operativos ...

    Aí, vírgula porque só estamos a falar dos sistemas operativos Windows.

    Não há dúvida que um departamento de TI andar a gerir sistemas em que se cruzam os SO XP, Vista e o próximo 7 - a 32 e a 64 bits, mais os Offices 2003, 2007, e o futuro 14, mais as aplicações de rede (Sharepoint, etc) é de pôr os cabelos em pé. A virtualização das aplicações - a funcionar em qualquer dos SO, ao lado umas das outras, sem problemas de conflitos parece uma grande ideia. Ainda por cima podendo ser actualizadas através de uma rede segura.

    ResponderEliminar
  4. Em especial, a maior vantagem disto tudo é que o que tem evoluído é o número de cores nos processadores (a velocidade do processador "estagnou").

    Assim sendo, é necessário arranjar uma forma de aproveitar o poder de todos os cores.

    Há algumas aplicações que utilizam MPI (a correr localmente) para o fazer, no entanto, a opção mais acertada hoje em dia é fazer fork()s e não threads() [isto para dar uso a todos os cores].

    Estamos a chegar a um ponto onde cada vez há sistemas mais poderosos e estes não são usados em completo (hoje em dia as máquinas já começam a vir com 4Gb de ram e quantas são as pessoas que utilizam toda essa memória?).

    A virtualização (especialmente por hardware) veio trazer grandes inovações à forma como utilizamos os nossos recursos.

    Se chegarmos ao ponto que o Carlos diz podemos dar-nos ao luxo de instalar aplicações sem estas danificarem a performance global do sistema (ou o "sujarem" com lixo...).

    Se o sistema estiver virtualizado (e os seus limites de execução forem bem definidos) uma aplicação NUNCA conseguirá quebrar o funcionamento de TODO o sistema operativo!

    É uma pouca vergonha, ainda hoje em dia, uma aplicação deixar de dar resposta e o sistema operativo freezar completamente (em vez de bloquear a execução dessa aplicação e perguntar se quer continuar a dar-lhe todo o power).

    Quando algo freeza, freeza de tal forma que a máquina nunca mais se mexe (e começa a crashar tudo).

    Já agora, quanto aplicações que correm em VMs não suportarem IPC, tenho algo ainda melhor: RMI e Remoting!

    O maior entrave a virtualizar completamente uma aplicação (com um sistema operativo a correr debaixo) é os SOs serem estupidamente pesados!

    Com um sistema Linux isto é perfeitamente possível: o arranque é relativamente rápido!

    Com um sistema Windows a coisa já complica e muito...

    Tentei instalar o ThinApp mas não pude experimentar porque o gajo queria tirar um snapshot da minha máquina (XP64bits) e dizia que devia ser limpa. Continuei mas o gajo já estava a copiar tudo o que tinha no disco pelo que desisti.

    Ora, com um Linux a coisa torna-se MUITO mais simples (e até podemos usar o mesmo sistema de ficheiros para as várias aplicações e não um snapshot para cada [como suponho que é necessário no ThinApp (pelo menos não vejo solução de o fazerem com um Windows já que este é MUITO mais picuinhas com acessos partilhados aos ficheiros de sistema (ie: registry e afins)]).

    No entanto, se isto pega moda a Microsoft "rapidamente" irá lançar uma versão "core" do Windows para ser usada com isto (tal como fez com o Win2k8 Core :oP).

    Hugz,
    Luís

    ResponderEliminar
  5. Carlos sigo teu blogue diariamente, é exemplo de para muitos! Excelente

    PS: "librarias"...?? loll

    ResponderEliminar
  6. Caro anónimo, obrigado.

    E as "librarias" já foram corrigidas (omitidas.)
    É o que dá auto-magicamente pensar em DLLs e expandir para "libraries"... :)

    ResponderEliminar
  7. "Um dia todos os programas serão virtualizados..."

    Viva o bloatware !!!

    ResponderEliminar
  8. Bloatware já temos agora:

    Hard Drive requirements for Office 2007 Ultimate: 3GB.

    Não acho que ter mais 100 ou 200MB para ter um "sistema operativo" core - que acredito que possa ser bastante menos, veja-se o exemplo do que tem sido feito nos mini-OS embedded instant-On tipo Splashtop, que ocupam uns poucos megabytes.

    ResponderEliminar
  9. têm conhecimento de alguma solução gratuita com o mesmo fim do vmware thinapp?

    ResponderEliminar