Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo:

Introdução prática do Google App Engine, o serviço de computação em nuvem do Google. São apresentados os prós e os contras do serviço e um exemplo completo.


Para que serve:

Com o Google App Engine é possível hospedar aplicações Java Web de forma simples e sem custo inicial. O serviço inclui funcionalidades de autenticação de usuários, persistência com JPA ou JDO, envio de e-mails com Java Mail e Cache com JCache.

Em que situação o tema é útil:

É mais uma opção para o desenvolvedor que deseja colocar suas aplicações na Internet. Conforme a aplicação é requisitada o Google App Engine inicia novas máquinas virtuais, de modo que a aplicação possa escalar para grandes volumes de acesso. O desenvolvedor tem também a possibilidade de monitorar o uso da aplicação através de uma interface web.

Google App Engine:

O Google App Engine é uma promissora plataforma para hospedagem de aplicações Java. As suas vantagens são muitas, mas também existem limitações que o desenvolvedor precisa levar em conta antes de decidir pela sua adoção. Alguns recursos da plataforma Java não estão disponíveis, como uso de Threads e manipulação de arquivos. Em contrapartida, o serviço oferece recursos interessantes, como as APIs de autenticação e de tratamento de imagens. Mesmo com a escalabilidade virtualmente ilimitada, deve-se tomar cuidado com o mal uso de recursos, como transferência de dados e uso excessivo da base de dados, que podem ser cobrados proporcionalmente ao seu uso.

Em abril de 2008 o Google lançou seu serviço de hospedagem de aplicações web, batizado de Google App Engine, ou GAE. O grande atrativo desse serviço é a possibilidade de utilizar a enorme infra-estrutura do Google. No GAE, à medida que uma aplicação é requisitada, novas máquinas virtuais são iniciadas, provendo escalabilidade de forma dinâmica, um estilo de solução chamado de Computação em Nuvem, ou Cloud Computing.

O lançamento teve bastante repercussão em certos grupos, mas na comunidade Java pouco se falou sobre ele, por um simples motivo: Python era a única linguagem suportada. Desde o começo o Google prometeu que outras linguagens iriam ser suportadas no futuro, mas manteve o suspense sobre quais seriam. Agora, exatamente um ano depois do lançamento, o suporte a Java foi incluído.

Se fosse apenas um serviço de hospedagem comum, não seria necessário um artigo específico para o GAE, mas se trata de um serviço com características únicas. Dessa forma, é importante conhecer bem suas vantagens e limitações antes de tomar a decisão de utilizá-lo. A idéia deste artigo é fazer uma apresentação imparcial dos principais aspectos deste serviço, e por fim, apresentar um exemplo completo.

Vantagens e Limitações

As vantagens que mais têm atraído usuários são a gratuidade inicial e a ausência da necessidade de configurar o servidor. Uma vez desenvolvida a aplicação, é feito o deploy, e ela está acessível ao público, sem complicações. Por estes fatores, o GAE tem um grande potencial para alterar o cenário atual de desenvolvimento web. Todo o programador que já tentou hospedar um site em Java sabe que os custos de hospedagem são bem mais salgados quando o provedor precisa rodar uma JVM. Esse inclusive era um fator que fazia o Java ser descartado em projetos para clientes pequenos, que preferiam stacks “baratas”, como LAMP (abreviação de Linux, Apache, MySQL e PHP/Perl/Python).

Outra vantagem óbvia é que não há necessidade de se preocupar com escalabilidade, o GAE vai automaticamente criar novas instâncias da JVM, de forma orgânica, conforme a demanda aumenta.

Escalar de forma orgânica significa de forma gradativa, como acontece em uma situação real. Por isso, é importante avisar que se você pretende executar algum teste de performance no GAE, configure a sua ferramenta para ter um período razoável de “ramp-up” de requisições.

O Google App Engine é gratuito até certo ponto, existem limites diários e por minuto, chamados de cotas. São mais de 20 tipos de cotas, que vão desde tempo de CPU e número de requisições até quantos arquivos são anexados em e-mails. Veja na seção Links, no final do artigo, o endereço para uma listagem completa das cotas. Felizmente, os limites são bem generosos para a maioria das aplicações. Segundo o Google é o suficiente para disponibilizar mais de cinco milhões de pageviews/mês (apesar de sabermos que esse número é tão relativo quanto dizer que em um iPod cabem 3.000 músicas). O que exceder o limite é cobrado proporcionalmente ao uso. Mas o leitor não precisa ficar preocupado em se endividar caso o seu site se torne um sucesso repentino, os limites de cotas são completamente customizáveis. Isto é, se a cota estabelecida for atingida o GAE mostrará uma mensagem de “limite excedido” para o visitante voltar no dia seguinte.

A questão que deve ser vista com mais cuidado para decidir sobre o uso do serviço são as cotas máximas, que não podem ser compradas. Por exemplo, atualmente um request não pode ultrapassar o tamanho de 10 megabytes, nem durar mais que 30 segundos (se isso acontecer a thread será derrubada), e não é possível alterar estes limites, nem que o desenvolvedor pague. De certa forma estes limites impossibilitam o uso do GAE para sites que precisem hospedar grandes arquivos ou que façam processamento offline pesado.

Quando uma requisição é interrompida por exceder o limite de tempo estabelecido, uma exceção do tipo com.google.apphosting.api.DeadlineExceededException é lançada e pode ser tratada, para que o visitante não seja surpreendido com um erro HTTP 500 depois de uma longa espera.

Outro ponto que deve ser visto com cuidado é que o GAE, por questões de segurança e escalabilidade, não fornece uma JRE completa. Veja na seção Links o endereço para uma listagem com todas as classes disponíveis. As ausências mais importantes são a AWT/Swing, JDBC e classes que possam ler e escrever no sistema de arquivos. Também não é possível iniciar Threads, abrir sockets e usar Reflection para acessar membros privados de classes que não sejam da aplicação.

...
Quer ler esse conteúdo completo? Tenha acesso completo