quinta-feira, 1 de julho de 2010

Google App Engine + Adobe Flex - Parte 1

Há cerca de 3 meses decidi fazer um projeto Flex do início ao fim para aprender mais sobre essa tecnologia. Apesar de ser desenvolvedor Flex na empresa que eu trabalho, todos os projetos lá desenvolvidos já estavam configurados e eu não precisava saber o que acontecia "por trás dos panos". Outro ponto que dificultaria minha empreitada: eu não sabia administrar servidores e também seria uma tarefa que eu não gostaria de fazer ou aprender.

Foi então que um amigo/guru me indicou o Google App Engine (GAE), dizendo que eu não precisaria me preocupar com configuração alguma no servidor. Para me convencer da facilidade no uso do GAE, ele pediu pra eu instalar o plugin no Eclipse e contruiu na minha frente uma aplicação simples: apenas retornar o resultado de uma soma. Apesar da simplicidade da aplicação, ele terminou em apenas 5 minutos, incluindo o tempo de publicar na internet. Depois dessa demonstração e de uma lida nos custos do serviço, estava escolhido o meu cloud, já que só de configuração de servidor eu perderia pelo menos um mês.

Comecei então a desenvolver minha aplicação usando esse serviço do Google. A documentação é bem completa, mas minha "técnica" de simplesmente fazer o programa dos mesmo jeito que eu fazia com TOMCAT + SPRING + JPA+BLAZE DS não funcionou bem.

Como não gosto de ler tutoriais, eu simplesmente só lia a documentação conforme os problemas iam aparecendo. Alguns dos problemas foram:
  • A transação no Banco de Dados no GAE é bem restrita, simplesmente anotar seus métodos com @Transaction do Spring não funcionou para muitos casos.
  • O GAE não suporta o SpringFlex diretamente, é necessário pegar versões alteradas do BlazeDS.
  • Os relacionamentos entre classes de domínio a serem persistidas também não funcionou para muitos casos.
  • Quando sua app não possui requisiçoes, o GAE simplesmente a desliga, religando assim que recebe outra requesição. Quando ele religa, precisa subir todo o contexto da aplicaçã e, esse processo acabava consumindo muito recurso de CPU.
Eu mostrarei as soluções que encontrei para esses problemas nos posts futuros.

Mas à conclusão geral que cheguei é a seguinte: o GAE é um excelente serviço, só que exige uma mudança de "paradigma" dos programadores Java acostumados com ambientes mais tradicionais.

Nenhum comentário: