Saturday, August 28, 2010

Google App Engine (GAE)

O Google App Engine (GAE) é um conjunto de ferramentas de desenvolvimento e administraçao que permite rodar aplicações Web em cima da plataforma do Google, isto é, na plataforma mais escalável do mundo. O serviço é gratuíto mas possui cotas diária de uso de disco, processamento, memória, banco de dados, etc. Para quem precisar de mais, daí então existem planos pagos que aumentam estas cotas. O serviço inclui de graça um servidor de banco de dados replicado, com load-balancing, backup, e todos outros recursos que é normalmente perdemos um tempão configurando.

Algumas características:

- Banco de dados: O tratamento dos requests HTTP não possuem muita novidade, mas em relação ao banco de dados existe! O GAE oferece (obriga) o uso de um banco de dados não relacional. Em Python isso é bem chato, porque a API é mais baixo nível do que a oferecida pelo Django, mas ela é escrita assim para incentivar o desenvolvedor a otimizar a todo momento suas querys, para diminuir o uso das cotas de acesso ao banco. Acredito que num futuro não muito distante, a Google irá disponibilizar algum Wrapper que facilita a escrita de algumas queries.

- Segurança: Como é de se esperar, existem diversas limitações por questão de segurança, o Google não vai permitir que coloquem vírus ou código malicioso dentro de suas máquinas, certo? Por isso, as funcionalidades críticas de segurança de um sistema, como acesso ao sistema de arquivos e criação de threads são bloqueadas.

Agora também é suportado no GAE a linguagem Java (a primeira linguagem que teve suporte foi Python), consequentemente todas as linguagens que rodam em cima da JVM: Scala, Groovy, Jython, JRuby...

Aqui um exemplo de uma aplicação em Scala rodando no GAE
http://lift-example.appspot.com/index

O framework Lift também é compatível, mas precisaram fazer umas adaptações, principalmente porque o Lift utliza muitos atores em sua implementação. Segue um novo branch do framework Lift que está adaptado ao GAE: http://github.com/ymnk/liftweb/tree/master.

Mais informações:

Scala
- Scala works out of the box.
- Scala Actors do not work, because they are implemented using Threads (which are not supported).
- The Lift web framework works. David Pollak has additional details.
Dave Briccetti posted on his experiences using Scala and JavaServer Faces:
http://briccetti.blogspot.com/2009/04/my-first-scala-web-app-on-goo...

GAE e Java:

http://groups.google.com/group/google-appengine-java/web/will-it-pl...

No comments:

Post a Comment