No post anterior PaaS, Cloud Computing, Virtualização e o Futuro – Parte 01,
comentei sobre algumas deficiências que existem hoje em dia no
desenvolvimento de software. Dentre elas foquei nas dificuldades de
criar um software que se escalável e no descolamento que existe do
desenvolvimento para produção/operação.
Na continuação do
assunto, gostaria de salientar o óbvio, ou seja, não existe bala de
prata. PaaS, Cloud Computing e Virtualização não são soluções para
todos os problemas e para todos os tipos de aplicações e cenários.
Então vou começar falando um pouco mais do que tratam estas
tecnologias, focando em conceito. Depois irei falar sobre o que
anda acontecendo no mercado e o que pode vir a ser o futuro. Acredito
que muita inovação vai surgir nos próximos dois anos e pode ser o novo
paradigma de desenvolvimento de software.
Virtualização
Em
poucas palavras, estamos falando de abstração. Pode ser abstrair/deixar
transparente o hardware, você tem acesso a este hardware mas como
se fosse uma camada virtual. Hoje em dia já é algo bem comum, existe
virtualização de celular, video-game (quem nunca jogou Super Nintendo com o
Znes?) e sistemas operacionais para hardwares específicos. Focando no
ambiente do desenvolvedor, isto já nos traz diversas vantagens em termos
de:
- Teste de Tecnologias:
Podemos instalar diversas tecnologias que ainda estão incipientes ou
que podem simplesmente desconfigurar ou prejudicar o seu ambiente,
então estes testes são realizados em um sistema operacional virtual que
pode ser Windows, Linux ou qualquer outro. - Teste de Software:
Se a sua aplicação Web precisa rodar nos navegadores Internet Explorer
6,7 e 8, Firefox 3 e Safari, você pode criar um sistema
operacional contendo o ambiente para testar com cada navegador destes. - Desenvolvimento com VPN: Às vezes você precisa desenvolver remotamente utilizando a VPN de um
cliente, que é o meu caso. Neste cenário, quando você
conecta na VPN do cliente você perde o acesso a internet. Então é uma
boa idéia criar uma máquina virtual para conectar na VPN do cliente e
não perder seu acesso à web para consultas, por exemplo. - Separação de Ambientes:
Suponha que você tenha que desenvolver para ambientes totalmente
diferentes, como para Linux com GTK e para Windows com Oracle forms.
Neste caso é uma boa idéia ter duas máquinas virtuais, uma para cada.
Entre outras aplicações, existe mais duas grandes vantagens que são:
- Gerência de Configuração:
Como todo o ambiente está em uma máquina virtual, basta copiar a pasta
com os arquivos da máquina virtual e pronto, fica muito mais fácil
realizar backup e disponibilizar um ambiente para um desenvolvedor. - Custos:
Como tudo está virtualizado, é mais fácil trocar as soluções de máquinas
e aumentar a máquina sem afetar as soluções, tanto a manutenção como o
backup são favorecidos com isto.
Os servidores de aplicação e banco de Dados, LDAPs(AD) também podem ser virtualizados, existem soluções muito boas como: Virtual Box, VMware, Virtual PC e o XEN.
Eu particularmente já trabalhei com o Virtual PC e com o VMware em
produção de forma muito positiva, XEN é muito utilizado hoje em dia em
ambientes Linux pelo baixo custo e por aumentar muito a disponibilidade
das soluções.
Cloud Computing
Este novo modelo de computação promete muito nos próximos anos. Segundo o Gartner esta é uma grande tendência. Muitos grandes vendors, como Amazon, Google, IBM, Microsoft e Yahoo, já têm ações concretas nesta frente.
Novamente
estamos falando de abstração, desta vez em uma escala diferente da
virtualização. Para muitos esta é uma forma diferente de hosting como
conhecemos hoje e pode ser um meio muito mais barato e fácil de escalar
aplicações.
Esta abstração é a abstração de hardware. Não de
um único computador, mas todo um data center. Por exemplo, você
desenvolve de forma remota e nunca acessa o seu hardware, assim é
possível pagar apenas pelo que está sendo consumido de recursos e não é
necessário alocar recursos que não estão sendo utilizados. Confira este
vídeo do You Tube da GoGrid a baixo:
O
Conceito de Cloud Computing está associado a outros, como
Infrastructure as service (IaaS), Plataform as service (PaaS) e Software
as service (SaaS).
Platform As Service (PaaS)
Este
conceito é associado a Cloud Computing e significa prover toda uma
plataforma de desenvolvimento de software como um serviço. Ou seja, desenvolver, compilar, debugar, deploy, test em uma
aplicação. Pode parecer que estamos voltando à época dos main frames e, de certa forma, é isso mesmo, mas de forma organizada e escalar.
A
grande frente é poupar custos e não alocar hardware desnecessariamente
e poder escalar de forma simples sem ter que lidar com o ambiente
físico diretamente. Antigamente desenvolvíamos para um sistema
operacional com um processador especifico, depois passamos a desenvolver para uma plataforma que abstraía o processador e o
sistema operacional, que é o caso de Java e .NET; agora vamos desenvolver
para um PaaS que pode ser da Google, MS, Amazon etc…
Esta
pode ser mais uma forma de lock in, porém só o tempo irá dizer se era
igual a todas as outras que já vimos ou se estamos nos aproximando das
soluções forma da TI, como energia, telefonia, gás, TV, etc…
A promessa é tentadora. Já existem soluções para utilização como o Azure da Microsoft, Amazon S3 e o Google App Engine, entre outras. O Google App Engine oferece suporte e plugins para o desenvolvimento de soluções com Java, Ajax e GWT
utilizando eclipse, que por sinal tem um plugin para este
desenvolvimento. No caso do Google você tem uma quota free de
processador, disco e banda, mas pode pagar por demanda somente por
aquilo que você utiliza.
Open Platform as Service
É uma iniciativa para que você possa desenvolver qualquer aplicação em qualquer cloud server, você pode conferir mais informações sobre isso aqui.
O papel da Vmware
Além
de ser um grande vendor de virtualização, recentemente ela adquiriu a
empresa Spring Source, que é a empresa que criou e mantém o stack de
soluções Spring-*. Acredito que desta aquisição vai surgir uma grande
inovação: a idéia é juntar o desenvolvimento de qualidade para Java com
Spring-* com a virtualização e a Cloud Computing.
A Vmware já possui um produto bem interessante que é o VSphere. Ele lhe dá a habilidade de ter a sua cloud, sendo que ela pode ser pública ou privada.

Soluções da Vmware
Ter
uma cloud privada é algo muito bom, porque você continua com o controle
dos seus dados e dos seus recursos, mas traz todo um custo adicional em
máquinas, pessoas e processos para gerenciar toda esta infra-estrutura.
A
tendência é que cada vez mais as coisas evoluam para o lado de PaaS,
sendo que pequenas empresas não vão mais ter que hospedar suas soluções
corporativas em Java ou .NET, por exemplo, e vão pagar somente pelos
recursos utilizados.
Espera-se que, além das facilidades de
escalabilidade e custos baixos, o descolamento do desenvolvimento com a
operação também seja drasticamente reduzido. Eu estou esperando com
grande entusiasmo esta junção da Vmware com a Spring Source, acredito
que sairá algo muito bom.
Em outros artigos, mostrarei alguma coisa em App Engine do Google ou outro PaaS.
Abraços e até a próxima.







