Serviços do App Engine

Nós já utilizamos alguns dos serviços do App Engine no primeiro website:

  • O runtime Java, que escala automaticamente as nossas instâncias de servidor de aplicação.
  • O serviço de arquivos estáticos, otimizado para servir o conteúdo de nossos projetos.
  • O kit de desenvolimento, gerenciado pelo Maven, que simplifica o processo de desenvolvimento e release.

O App Engine possui diversos outros serviços que podem ser utilizados em uma aplicação web.

Datastore

O Datastore é a base de dados não-relacional que é pré-configurada para seus projetos do Google Cloud. Ele possui recursos como:

  • Transações atômicas
  • Alta disponibilidade para leitura e escrita
  • Consultas consistentes para queries com um ancestral
  • Consistência eventual para todas as outras consultas

O Datastore não possui um esquema restrito, apesar de ser possível reforçá-lo em seu código, utilizando as APIs JPA e JDO. Também é possível utilizar APIs otimizadas, desenvolvidas especificamente para o Datastore, como o Objectify e o Slim3.

Memcache

Toda aplicação escalável utiliza-se de diferentes níveis de cache, incluindo o cache de dados mantidos em memória. Para este propósito, o Google App Engine possui um cache em memória, distribuído e visível globalmente. Isso significa que os dados mantidos em cache por uma instância, são visíveis em outras.

Uma boa prática na utilização do cache é manter o resultado de processamentos demorados em memória. Por exemplo, consultas ao banco de dados que são frequentes, podem ter seus resultados mantidos em cache, reduzindo consideravelmente o tempo de resposta de seu aplicativo. Além disso, é possível manter o resultado de qualquer processamento realizado, como um RSS das notícias da página principal.

URL Fetch

Aplicações do Google App Engine podem se comunicar com outras aplicações, ou acessar outros recursos na web. Para isso, as aplicações podem utilizar o serviço URL Fetch, que permite iniciar conexões HTTP e HTTPS com outros servidores, e consumir o resultados destas requisições. O Serviço de URL Fetch utiliza a infra-estrutura distribuída de clientes HTTP da rede do Google, por razões de escalabilidade e performance.

Também é possível utilizar as APIs padrão do java.net.URLConnection, que na prática são implementadas utilizando a mesma infra-estrutura quando seu aplicativo está no ambiente de produção.

Taskqueue

Uma das mais poderosas ferramentas do App Engine, as filas de tarefas permitem que você distribua o processamento, enfileirando tarefas para serem executadas fora do escopo da requisição do usuário.

O App Engine se encarregará de executar, de forma eficiente e escalável, todas as tarefas de sua fila.

Com este recurso, você pode realizar tarefas como

  • Envio de e-mails transacionais de forma assíncrona
  • Processamento em background, como a exportação de relatórios
  • Mutações globais em sua base de dados

Entre outros.

Outros Serviços

O App Engine ainda possui um pool de outros serviços, que podem ser utilizados pela sua aplicação, tais como:

  • Serviço de manipulação de imagens
  • Canais para notificações push diretamente no browser
  • Serviço de análise de logs
  • Autenticação via OAuth e Contas do Google