Gestão Dev & TIARTIGO

PaaS, Cloud Computing, Virtualização e o Futuro – Parte 02

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.

é Técnico em Processamento de Dados e graduando em Ciências da Computação(7º sem.) na Ulbra. Já trabalhou com desenvolvimento de software em VB, ASP, .NET e PHP. Atualmente é Arquiteto de Software criando soluções corporativas em Java. Certificado pela SUN com SCJP 5 e SCWD 5. Mantém o blog (diego-pacheco.blogspot.com).

Ver perfil