Alguém já usou o Google App Engine?

Alguém já usou o Google App Engine?
Gostaria de saber se vale a pena usar ele p/hospedar as aplicações Java.

ola

tem muita gente usando. é uma excelente alternativa como “hospedagem gratis”. Existem alguns detalhezinhos que precisamos ficar atentos (sem contar a unica opção de usar BigTable, que atrapalha um pouco os testes, e sem dúvida é um locking, mesmo com o uso de JPA/JDO)

o problema maior que muita gente reclama, e nos na caelum estamos sofrendo, é o chamado cold start: quando o GAE percebe que ninguem esta usando sua aplicacao (digamos as 3 da manha) ele derruba o contexto. Quando alguem vai acessar a aplicac’ção, tem de esperar o contexto subir, que parece bem mais demorado que localmente (talvez ele suba um jetty para cada contexto?).

existem workarounds, como configurar no xml para que de tanto em tanto tempo ele faça uma requisição a sua home, mas esse problema também vai ocorrer quando o GAE decidir que precisa iniciar sua aplicação em mais uma máquina: um usuário vai ter de espera-la subir. Eu aqui acho estranho: se a requisição R indiicou que o servidor A já está meio cheio, e vamos precisar de outro servidor B, porque não deixar a requisição R ser atendida pelo servidor A, em vez de fazer esse usuário esperar muito mais pelo servidor B, que ainda está inicializando a sua aplicação?

bem, fugi ao tópico. postaremos em breve mais relatos das nossas experiências no blog da caelum.

Cotas: http://code.google.com/intl/pt-BR/appengine/docs/quotas.html

Artigos: http://code.google.com/intl/pt-BR/appengine/articles/

Alternativa: http://aws.amazon.com/ec2/

[quote=Paulo Silveira]ola

tem muita gente usando. é uma excelente alternativa como “hospedagem gratis”. Existem alguns detalhezinhos que precisamos ficar atentos (sem contar a unica opção de usar BigTable, que atrapalha um pouco os testes, e sem dúvida é um locking, mesmo com o uso de JPA/JDO)

o problema maior que muita gente reclama, e nos na caelum estamos sofrendo, é o chamado cold start: quando o GAE percebe que ninguem esta usando sua aplicacao (digamos as 3 da manha) ele derruba o contexto. Quando alguem vai acessar a aplicac’ção, tem de esperar o contexto subir, que parece bem mais demorado que localmente (talvez ele suba um jetty para cada contexto?).

existem workarounds, como configurar no xml para que de tanto em tanto tempo ele faça uma requisição a sua home, mas esse problema também vai ocorrer quando o GAE decidir que precisa iniciar sua aplicação em mais uma máquina: um usuário vai ter de espera-la subir. Eu aqui acho estranho: se a requisição R indiicou que o servidor A já está meio cheio, e vamos precisar de outro servidor B, porque não deixar a requisição R ser atendida pelo servidor A, em vez de fazer esse usuário esperar muito mais pelo servidor B, que ainda está inicializando a sua aplicação?

bem, fugi ao tópico. postaremos em breve mais relatos das nossas experiências no blog da caelum.[/quote]

Ótimas dicas Paulo! Quem nunca usou agora sabe que há detalhes como estes! :wink:

Eu tenho uma plataforma de blog em Java, e pensei em mandar tudo para lá e fazer uns testes.

Achei o GAE muito lento. Não apenas por causa do cold start, conforme o Silveira já comentou, mas cada requisição demora aproximadamente 0.8s. Não sei se eu estou mal acostumado com servidores mais robustos e decidados, mas achei esse tempo muito lento. No caso do cold start, minha aplicação está sendo derrubada a cada 2 minutos. Assim a primeira vez que acesso demora ~ 7s para subir a aplicação, ~0.8s para cada request. Então nesses dois minutos a aplicação morre e aí é o fim do mundo… mais 7s para iniciar tudo.

O GQL é um horror. Não consigo fazer um maldito delete from xxxx. Tudo tem que ser via aplicação usando JPA/JDO. Mesmo a documentação sendo muito boa, não achei como manipular dados. Aliás a doc do bigtable é infame. Fico pensando como deve ser para alterar a estutura das tabelas. E pelo que lí nada de many-to-many, assim fica difícil. É raro você não precisar usar many-to-many. Estou pensando sobre como contornar isso.

Mas tem muitos pontos positivos. O plugin pro Eclipse é muito simples. Basta criar um “GAE Web project” e escrever a aplicação. Depois basta fazer deploy clicando em um botão que ele mesmo faz o enhace do JPA/JDO e publica apenas o que mudou. Se você tem um projeto com 550 classes e alterou apenas 3, ele faz upload apenas dessas 3 alterações.

A documentação é muito boa, tanto inglês como português. Eu nunca gosto de ler em português, mas os docs estão muito bons no nosso idioma, algo que ajuda muito para os novatos. Cada serviço tem tanto o reference como javadoc.

Há uma série de seviços pré prontos como autenticação de usuários usando o google-accounts em uma implementação de JAAS. As roles e os acessos você configura no web.xml (padrão JAAS). Você pode também usar processamento de imagens, URL fetch e envio de emails usando gmail de forma simples.

Quem mais tiver algo a contribuir será bem vindo. Estou estudando migrar algumas coisas para o GAE, e conforme vou publicando aqui.

Abraços

Para manter o topico atualizado. Aqui falando sobre cloud no geral:
http://blog.caelum.com.br/2009/10/28/o-cloud-computing-e-inevitavel/

E aqui falando de detalhes do GAE:
http://blog.caelum.com.br/2009/11/17/escrevendo-e-migrando-aplicacoes-para-o-google-app-engine/