Cloud Computing na Casa Branca e o PaaS

Não é novidade empresas economizarem milhares de dólares ao adotarem o cloud, como foi o caso do New York Times. Agora, foi a vez do governo norte americano, que deve economizar mais de um milhão de dólares até 2011 através do Amazon EC2.

Governo americano começa a adotar o cloud.

O Amazon EC2 permite inúmeras configurações diferentes e você pode tomar diversas decisões: quantos servidores precisa, como fazer o balancing, quando colocar ou retirar um novo servidor, etc. Ele te serve com a infraestrutura que você definir, abstraindo o hardware, daí o termo Infrastructure as a Service (IaaS).

A outra opção é a Platform as a Service (PaaS), que restringe suas opções: essa modalidade costuma definir frameworks, uso de threads, conexões, sistema de arquivos e até mesmo qual banco de dados você vai utilizar.

O Google App Engine (GAE) é hoje o líder em plataforma como serviço. Você tem uma série de restrições para utilizá-lo, e o único banco de dados que pode utilizar é um não relacional, o BigTable do Google. Nesse mesmo grupo, encaixam-se o SalesForce (Force.com), o Heroku e o recentemente anunciado VMForce (junto com a SpringSource).

Por que então alguém utilizaria o PaaS em vez de IaaS, se teremos restrições?

Como Krishnan Subramanian descreve em três artigos, o PaaS abstrai todo o ambiente e middleware para você, até mesmo as decisões operacionais e de configuração. Ele vai além, e diz que o PaaS é quem vai ganhar grande parte do mercado, dado que cada vez mais as aplicações, mesmo as que não necessitam (ao menos por enquanto) de grande escalabilidade, vão migrando para o Cloud. Colocar sua aplicação no PaaS é muito mais simples que no IaaS, mas você tem de pagar o preço: suas restrições.

A Caelum usa o Cloud do Google App Engine há mais de 6 meses, e isso já nos salvou de picos de acesso ao sistema de reserva e acesso ao site, como quando a Info Online noticiou nossas apostilas ou quando enviamos nossa newsletter para os milhares de usuários cadastrados. E, mesmo para um site pequeno como o da Caelum, sem grandes requisitos de escalabilidade, a tranquilidade de saber que ele não ficará indisponível por causa de picos momentâneos é o grande atrativo. Além, claro, da enorme redução de trabalho com infraestrutura e custo.

E você, planeja migrar sua aplicação para o Cloud e diminuir a dor de cabeça com escalabilidade? Ela está apta para enfrentar bancos não relacionais ou restrição a threads e file system no PaaS, ou você vai direto para o IaaS, tendo total controle porém mais trabalho operacional?

15 Comentários

  1. uchoaaa 14/05/2010 at 13:32 #

    Pois é, muito se fala de Cloud por aí mas sempre tive um dúvida: como fazer meu código tirar real proveito dessa escalabilidade? Digo, como fazer meu aplicativo designar parte daquele processmento gigaaaante para outra instância, por exemplo. Aliás, meu código precisa relamente fazer isso?
    Pelo visto ao utilizar um serviço PaaS, como AppEngine, de fato não, não é? A plataforma garante essa escalabilidade.
    Mas e com os IaaS, como o EC2? Eu tenho que codificar todo o gerenciamento das instancias, quando subir, matar, clonar, etc.. Além de criar a AMI.

    Bom, esse meu raciocínio está correto? É assim que esses serviços funcionam?

    []s

  2. Sérgio Lopes 14/05/2010 at 14:08 #

    @uchoaaa

    É isso mesmo! Em PaaS tipo AppEngine, você não se preocupa em como fazer a escalabilidade, como distribuir o trabalho, subir novas instâncias etc. É só jogar o war lá e as coisas funcionam.

    Em IaaS tipo o EC2 você vai instalar o seu Linux e o seu JBoss na máquina virtual e configurar tudo pra funcionar distribuído

  3. Gleidson 14/05/2010 at 15:26 #

    Estou fazendo alguns testes com o AppEngine, já utilizo jsf 2.0 JPA PrimeFaces, o problema que estou tendo é com consultas utilizando like, no appengine não é possível faze, gostaria de saber se ocorreu em seu projeto e como vocês contornaram esta situação?

    Obrigado.

  4. Marco Antonio Maciel 17/05/2010 at 10:22 #

    Comecei a me interessar por PAAS depois que vocês publicaram suas impressões do GAE.
    Me animei, mas tenho que admitir que o BigTable não me empolga.
    Ainda estou com um pé atrás com bancos noSQL.

    Vocês acham que essa minha disconfiança é injustificada?
    Abs.

    PS: ótimo post, como sempre.

  5. Paulo Silveira 17/05/2010 at 12:00 #

    Oi Marco!

    O BigTable, ou qualquer outro banco de dados não relacional, vai te causar estranheza a princípio. Vale lembrar também que, se você for usa-lo da mesma maneira que usaria um relacional, vai ter diversos problemas.

    Creio que em breve o GAE, assim como outros clouds que ofereçam PaaS, vai começar a oferecer um banco de dados relacional de alguma forma. O Heroku oferece um PostgreSQL no EC2 já configurado, mas a elasticidade não tem a mesma transparência que no GAE.

  6. Jose Jorge 19/05/2010 at 11:37 #

    Srs,
    sou desenvolvedor e tenho pesqusado sobre cloud computer tentando encontrar um meio de utiliza-lo como empreendedor. Penso em desenvolver algum sistema ( exemplo hipotético – Controle de estoque ) e disponibiliza-lo na rede para ser utilizado através de um cadastro como usuário via um pagamento mensal. A questão é : Isto é viável dentro da filosofia do cloudcomputer ?

    Agradeço a atenção!!

  7. Paulo Silveira 19/05/2010 at 12:02 #

    Oi Jose. Isso ja se encaixa no SaaS, e existem varios providers de cloud que estão criando mercados para esse tipo de aplicação. o Sales Force tem um aqui:
    http://sites.force.com/appexchange/home

    E o Google App Engine tem seu marketplace também:
    http://www.google.com/enterprise/marketplace/

  8. Jose Jorge 19/05/2010 at 12:07 #

    Obrigado Paulo!!

    Abraços.

  9. Otávio Garcia 20/05/2010 at 00:31 #

    Como sempre mais um excelente post, Paulo.

    Eu comecei a estudar mais a fundo cloud depois do post sobre a migração da Caelum para o GAE.

    Mas concordo que o GAE/J acaba complicando um pouco uma migração de uma aplicação normal para lá, seja por causa do BigTable quanto pelas pequenas coisinhas que só funciona com eles. O fato de não ter acesso ao filesystem é normal em sistemas distribuídos, mas aquele JPA pelado me deixa um pouco nervoso.

    Se não me engano há um projeto que você consegue fazer joins e “proprietary relations”, mas não lembro o link.

  10. Alexandre Gazola 20/05/2010 at 21:26 #

    Bacana o post, Paulo!

    Ainda não comecei a estudar mais a fundo os bancos de dados não-relacionais. Eles são mais indicados onde se deseja elevada disponibilidade, mas que podem abrir mão da consistência em algum instante. No caso de sistemas de informação “tradicionais”, talvez os relacionais ainda seriam os mais indicados, correto?

    abraços

  11. Paulo Silveira 20/05/2010 at 23:30 #

    @Otávio

    Tem alguns frameworks simulando relacionamentos sim! O problema é que o banco de dados não garante a consistência, qualquer erro vai gerar uma incosistência grande.

    @Alexandre.
    Voce tem toda razão. Tem gente que tem migrado bancos relacionais pros não relacionais e depois tendo de voltar atrás. Se suas informações são realmente muito relacionais, o custo de ser “schema free” vai ser alto demais, mesmo com um trade off pra ganhar escalabilidade e performance.

    É uma decisão que precisa de muito cuidado.

  12. Carlos Henrique Sousa 30/03/2011 at 09:42 #

    Caros, Gostei do post, estou tentando estudar mais um pouco sobre o assunto e das dificultades de se migrar uma aplicação. se tiveram algum material sobre o assunto favor postar aqui ou enviar por email.

Deixe uma resposta