Serviços de back-end de app para dispositivos móveis

Este artigo fornece orientações para criar, conectar, testar e monitorar serviços de back-end para dispositivos móveis usando o Google Cloud Platform (GCP). Os links para amostras de código e exemplos de aplicativos seguem cada padrão de design.

A maioria dos jogos e apps para dispositivos móveis precisa de um serviço de back-end para tarefas que não podem ser realizadas exclusivamente no dispositivo, como compartilhamento e processamento de dados de vários usuários ou armazenamento de arquivos grandes. Para saber mais sobre os serviços de back-end específicos para jogos, consulte Visão geral da infraestrutura de jogos em nuvem.

Como selecionar um padrão de design

O procedimento para criar um serviço de back-end destinado a um aplicativo para dispositivos móveis é semelhante ao de um serviço da Web, com alguns requisitos adicionais:

  • Limitar o armazenamento de dados no dispositivo
  • Sincronizar dados em vários dispositivos
  • Gerenciar casos off-line de maneira prática
  • Enviar notificações e mensagens
  • Minimizar o consumo da bateria

Os padrões de design a seguir demonstram maneiras diferentes de usar o GCP para criar serviços de back-end que atendem a esses requisitos. Para ver mais informações, selecione um padrão e confira uma descrição detalhada dele.

Padrão de design do Firebase Firebase com padrão de design do App Engine Firebase com padrão de design do ambiente flexível do App Engine Ambiente padrão do App Engine com padrão de design do Endpoints Padrão de design do Compute Engine

Os três primeiros padrões usam Firebase, uma arquitetura de duas camadas em que tanto o Firebase como os apps para dispositivos móveis manipulam os dados diretamente. Isso cria diferenças importantes no modo como a segurança e a validação de dados são tratadas.

Em um modelo tradicional de três camadas, como os dois últimos padrões, há uma camada de comunicação entre o app para dispositivos móveis e o serviço de back-end. Geralmente, é nessa camada que o código de validação de dados e autenticação é escrito.

No Firebase, você especifica a autenticação e a validação como regras declarativas na IU da Web do Firebase, sem necessidade de escrever um código. Para mais informações, consulte Firebase Authentication na documentação do Firebase.

Além disso, esses padrões de design passam de uma plataforma totalmente gerenciada, o Firebase, para uma plataforma completamente não gerenciada, o Compute Engine. Nas plataformas gerenciadas, o Google processa tarefas como upgrades e escalonamento automático para você, mas impõe algumas limitações na configuração. As plataformas não gerenciadas oferecem total controle sobre a configuração do servidor. No entanto, você mesmo precisa processar as tarefas de gerenciamento.

A tabela a seguir detalha as diferenças entre esses padrões de design.

Recurso Firebase Firebase e ambiente padrão do App Engine Firebase e ambiente flexível do App Engine Ambiente padrão do App Engine e Cloud Endpoints Compute Engine e REST/gRPC
Escalonamento automático de capacidade Sim Sim Sim Sim Ao configurar um autoescalador
Sincronização automática de dados em tempo real Sim Sim Sim

Manutenção automática do servidor Sim Sim Sim Sim

Lógica de back-end

Sim Sim Sim Sim
Chamada de binários nativos, gravação no sistema de arquivos ou realização de outras chamadas de sistema

Sim

Sim
Armazenamento de dados Sim Sim Sim Ao adicionar outros serviços do GCP Ao adicionar outros serviços do GCP
Armazenamento de arquivos Sim
Sim
Sim
Sim
com o Cloud Storage
Sim
com o Cloud Storage
Autenticação fácil de usuário Sim Sim Sim OAuth 2.0

Compatibilidade com linguagens para serviços de back-end para dispositivos móveis N/D Consulte a documentação do App Engine Consulte a documentação do Endpoints Frameworks Todos
Mensagens e notificações, como notificações push Sim
Sim
Sim
   
Suporte a plataformas iOS, Android, Web iOS, Android, Web iOS, Android, Web iOS, Android, Web iOS, Android, Web
Requer código para execução em um sandbox.

N/D

Sim

Sim

Necessidade de SSL

Sim

Sim

Firebase

O Firebase é uma plataforma totalmente gerenciada para criar aplicativos iOS, Android e da Web que fornecem sincronização automática de dados, serviços de autenticação, mensagens, armazenamento de arquivos, análises e muito mais. O Firebase é um bom ponto de partida para criar ou desenvolver serviços de back-end móveis.

Firebase

Recomendado para:

  • Limitar o armazenamento de dados no dispositivo mantendo dados JSON no Firebase Realtime Database e de arquivos no Firebase Storage.
  • Enviar notificações com o Firebase Cloud Messaging.
  • Sincronizar automaticamente os dados em tempo real em vários dispositivos.
  • Lidar com o caso off-line de maneira prática.
  • Autenticar usuários por meio de diversos provedores de identidade.
  • Desenvolver rapidamente um serviço de back-end.

Não recomendado para:

  • Aplicativos que precisam de um serviço de back-end para modificar os dados sincronizados.

Primeiros passos no Firebase

Como começar a usar o Firebase.

Amostras de código do Firebase

Apps de amostra que usam o Firebase.

Firebase e ambiente padrão do App Engine

O ambiente padrão do App Engine é uma plataforma de aplicativos que monitora, atualiza e escalona o ambiente de hospedagem. Tudo o que você precisa fazer é escrever o código do serviço de back-end para dispositivos móveis.

Caso o aplicativo precise processar dados do usuário ou orquestrar eventos, estenda o Firebase com o ambiente padrão do App Engine para usufruir da sincronização automática de dados em tempo real.

Firebase e App Engine

Recomendado para:

  • Aplicativos do Firebase que precisam de um serviço de back-end para modificar os dados sincronizados.
  • Serviços de back-end que são executados periodicamente para processar ou analisar dados do Firebase.

Não recomendado para:

  • Serviços de back-end que chamam binários nativos, gravam no sistema de arquivos ou realizam outras chamadas de sistema.
  • Conexões persistentes com o Firebase. O ambiente padrão do App Engine recupera as conexões do soquete após dois minutos.

Firebase e ambiente flexível do App Engine

Assim como o ambiente padrão do App Engine, o ambiente flexível do App Engine é uma plataforma de aplicativos que monitora, atualiza e escalona o ambiente de hospedagem. Tudo o que você precisa fazer é escrever o código do serviço de back-end para dispositivos móveis.

A diferença é que o ambiente flexível executa o serviço de back-end dentro dos contêineres do Docker, que podem ser configurados. Isso significa que você pode chamar binários nativos, gravar no sistema de arquivos e realizar outras chamadas do sistema.

Caso seja necessário processar dados do usuário ou orquestrar eventos para o app, estenda o Firebase com o ambiente flexível do App Engine para usufruir da sincronização automática de dados em tempo real, sem precisar executar o código dentro do sandbox do App Engine.

Firebase e ambiente flexível do App Engine

Recomendado para:

  • Aplicativos do Firebase que precisam de um serviço de back-end para modificar os dados sincronizados e esse serviço requer uma configuração de servidor personalizado ou bibliotecas de terceiros não compatíveis com o ambiente padrão do App Engine.
  • Serviços de back-end que requerem uma conexão persistente com o Firebase para receber notificações de alterações nos dados. O ambiente flexível pode manter uma conexão aberta por 24 horas.

Criar um app para dispositivos móveis usando o Firebase e o ambiente flexível do App Engine

Este tutorial demonstra como usar o Firebase para escrever um app para dispositivos móveis com armazenamento de dados de back-end, sincronização em tempo real e registro de eventos do usuário. Os Servlets Java em execução no ambiente flexível do App Engine escutam registros de novos usuários armazenados no Firebase e os processam.

App Engine e Endpoints

O Endpoints Frameworks para ambiente padrão do App Engine gera APIs, bibliotecas de cliente e documentação de descoberta para um aplicativo do App Engine. Com o Endpoints, não é necessário escrever wrappers para processar a comunicação com o App Engine. Com as bibliotecas de cliente geradas pelo Endpoints, é possível fazer chamadas diretas à API do seu app para dispositivos móveis.

Usar o Endpoints com o App Engine oferece uma plataforma de aplicativos que monitora, atualiza e escalona o ambiente de hospedagem.

App Engine e Endpoints

Recomendado para:

  • Gerar automaticamente bibliotecas cliente que os aplicativos podem usar para chamar o serviço de back-end diretamente.
  • Reduzir o armazenamento no dispositivo com a transferência de arquivos para o Cloud Storage.

Não recomendado para:

  • Aplicativos que requerem sincronização automática de dados em tempo real em vários dispositivos.
  • Serviços de back-end que exigem servidor personalizado ou bibliotecas de terceiros.
  • Sistemas que não são compatíveis com SSL, porque são exigidos pelo Endpoints.

Hello Endpoints

Um conjunto de tutoriais de primeiros passos sobre como criar o aplicativo de amostra Hello Endpoints que envia mensagens simples. O serviço de back-end é implementado no App Engine e exposto ao app para dispositivos móveis com o Endpoints.

Tic Tac Toe

Um aplicativo de amostra que demonstra como chamar um serviço de back-end executado no App Engine para criar um jogo simples. O serviço de back-end Tic Tac Toe é implementado no Java.

Compute Engine e REST ou gRPC

O Compute Engine permite criar e executar máquinas virtuais na infraestrutura do Google. Você tem direitos de administrador sobre o servidor e controle total sobre a configuração dele. Isso também significa que você é responsável pelas atualizações e manutenção.

Compute Engine e REST

Para estabelecer conexão com instâncias do Compute Engine, são usados dois protocolos principais: gRPC e REST, que é o mais estabelecido. O gRPC é mais novo e oferece transmissões mais eficientes, o que pode minimizar o consumo de bateria e aumentar a segurança. Para ver mais informações sobre REST e gRPC, consulte Conectar o aplicativo ao serviço de back-end personalizado.

Recomendado para:

  • portabilidade de um serviço de back-end existente, em execução no servidor local ou em máquina virtual;
  • serviços de back-end que requerem um servidor personalizado ou bibliotecas de terceiros.

Não recomendado para:

  • Aplicativos que requerem sincronização automática de dados em tempo real em vários dispositivos.
  • Manutenção automática. Você mesmo tem que manter e fazer atualização do servidor.
  • Escalonamento automático. Você precisa configurar e gerenciar manualmente um autoescalador.

Usar o Compute Engine e o REST em um aplicativo para dispositivos móveis

Um exemplo completo do uso do REST para conectar um app para dispositivos móveis a um serviço de back-end hospedado no Compute Engine. O aplicativo de amostra, Stickynotes, envia texto para o serviço, que responde retornando uma imagem gerada.

A amostra de Stickynotes está disponível nas versões REST e gRPC, para que você possa comparar os dois protocolos.

iOS

Como usar o Compute Engine e o gRPC em um app para dispositivos móveis

Um exemplo completo que usa buffers de protocolo e do gRPC para conectar um app para dispositivos móveis a um serviço de back-end hospedado no Compute Engine. O aplicativo de amostra, Stickynotes, envia texto para o serviço, que responde retornando uma imagem gerada.

A amostra de Stickynotes está disponível nas versões REST e gRPC, para que você possa comparar os dois protocolos.

iOS

Como criar o serviço de back-end para dispositivos móveis

O Google oferece diversas ferramentas e serviços que podem ser usados para criar serviços de back-end que se integram aos serviços do GCP.

Android Studio

O Android Studio é o ambiente de desenvolvimento integrado oficial para criação de apps Android, baseado no IntelliJ IDEA (em inglês). Nesse ambiente, você encontra outros recursos, como ferramentas lint, um sistema de compilação baseado em Gradle e modelos de código.

Além disso, o Android Studio tem suporte incorporado para integrar os serviços do GCP e do Firebase ao seu aplicativo. Para ver mais informações, consulte Cloud Tools for Android Studio.

APIs do Google para iOS

O Google distribui várias APIs e SDKs específicos para iOS por meio do CocoaPods, um gerenciador de dependências de código aberto para projetos do Swift e Objective-C Cocoa que pode ser usado para instalar ou atualizar novos SDKs ao trabalhar com o Xcode.

SDK do Cloud

O SDK do Cloud contém ferramentas e bibliotecas que podem ser usados para criar e gerenciar recursos no GCP.

Cloud Source Repositories

Cloud Source Repositories são repositórios Git com recursos completos que são hospedados no GCP.

Cada projeto criado no Console do Google Cloud Platform tem um Cloud Source Repositories associado. Esse repositório pode ser usado para o desenvolvimento colaborativo de qualquer aplicativo ou serviço, incluindo aqueles que são executados no App Engine e no Compute Engine.

Com o Stackdriver Debugger, é possível usar o Cloud Source Repositories e as ferramentas relacionadas no Console do GCP para exibir informações de depuração ao lado do código durante o ambiente de execução do aplicativo.

Stackdriver Debugger

Com o Debugger, é possível inspecionar o estado de um aplicativo Java em qualquer local de código sem pará-lo ou reduzir seu desempenho. O Debugger pode ser usado em instâncias de produção e de teste do aplicativo.

Use o Debugger com:

Como conectar seu aplicativo ao serviço de back-end móvel

Depois de criar o serviço de back-end, você precisa estabelecer uma comunicação entre as instâncias do aplicativo para dispositivos móveis.

Como conectar seu aplicativo ao Firebase

Se o seu serviço de back-end costuma usar o Firebase, este é o processo para conectar o aplicativo para dispositivos móveis ao Firebase:

  • Crie uma conta do Firebase.
  • Consiga o URL do aplicativo do Firebase.
  • Importe as bibliotecas de cliente para o aplicativo. Elas estão disponíveis para iOS, Android, aplicativos da Web e REST.
  • Chame as bibliotecas do aplicativo, fazendo referência ao URL do aplicativo.

Para saber como fazer isso, consulte os guias de primeiros passos na documentação do Firebase.

Como conectar o aplicativo ao serviço de back-end personalizado

Diversos protocolos podem ser usados para chamar um serviço de back-end do app para dispositivos móveis. Os protocolos mais usados com o GCP são REST, Endpoints e gRPC.

REST

REST é uma arquitetura para aplicativos em rede que usa solicitações HTTP para publicar, ler e excluir dados. É possível criar APIs REST no Compute Engine, no ambiente padrão do App Engine e nas instâncias de ambiente flexível do App Engine que o aplicativo pode chamar para acessar o serviço de back-end criado.

As ferramentas comuns para criar serviços RESTful no GCP são:

Para ver o código de amostra que exemplifica como usar REST em um serviço de back-end, consulte Compute Engine e REST ou gRPC.

Você também pode usar REST para se comunicar com o Firebase. Para saber mais informações, consulte API REST do Firebase Database na documentação do Firebase.

Endpoints

Os Endpoints geram APIs e bibliotecas de clientes para um aplicativo do App Engine. Com o Endpoints, não é necessário escrever wrappers para processar a comunicação com o App Engine. Com as bibliotecas de cliente geradas pelo Endpoints, é possível fazer chamadas diretas à API do seu app para dispositivos móveis.

O Endpoints requer SSL e só funciona com um aplicativo executado no App Engine.

Para ver um código de amostra que ensina a usar o Endpoints em um serviço de back-end, consulte App Engine e Endpoints.

gRPC

gRPC é um framework que permite que um aplicativo para dispositivos móveis chame diretamente métodos em um serviço de back-end como se fosse um objeto local.

Ele usa o HTTP/2 padrão, que apresenta streaming bidirecional, controle de fluxo, compactação de cabeçalho e a capacidade de multiplexar solicitações em uma única conexão TCP. Use o gRPC para aumentar a eficiência da largura de banda e reduzir a latência entre o app para dispositivos móveis e o serviço de back-end em execução no GCP.

É possível escrever clientes e servidores do gRPC em qualquer um dos idiomas aceitos pelo gRPC. Por exemplo, seria possível criar um servidor gRPC em Java com clientes em Go, Python ou Ruby.

Para ver um código de amostra que ensina a usar o gRPC em um serviço de back-end, consulte Compute Engine e REST ou gRPC.

Como enviar notificações para seu aplicativo

As notificações são um recurso importante da maioria dos aplicativos para dispositivos móveis. Use-as para se comunicar com os usuários, mesmo que seu aplicativo não esteja aberto no dispositivo deles.

Firebase Cloud Messaging

O Firebase Cloud Messaging (FCM) é uma solução de mensagens entre plataformas que pode ser usada para entregar mensagens e notificações de modo confiável a dispositivos cliente que estejam executando seu aplicativo.

Com o FCM, é possível:

  • Distribuir mensagens ao seu app cliente de três maneiras: para dispositivos únicos, para grupos de dispositivos ou para dispositivos inscritos em tópicos.
  • Entregar notificações de até 2 KB e payloads de dados de até 4 KB, além de enviar mensagens com notificação e payload de dados.
  • Enviar mensagens de confirmação, bate-papo e outras notificações dos dispositivos para o servidor por meio de um canal de conexão do FCM confiável e com pouco consumo de bateria.

Se você quiser usar o FCM para enviar notificações, consulte:

Firebase Notificações

Criado com base no Firebase Cloud Messaging e no SDK do FCM, o Firebase Notificações fornece um console gráfico que permite enviar mensagens aos dispositivos clientes que executam seu aplicativo.

Como testar o serviço de back-end móvel

Um dos desafios de criar um app para dispositivos móveis é testá-lo em todas as configurações de dispositivo possíveis. O GCP oferece ferramentas para testar apps para dispositivos móveis em dispositivos físicos e virtuais, bem como ferramentas para testar a segurança e o desempenho do serviço de back-end.

Configure também o app para dispositivos móveis de modo que funcione com um serviço de back-end de teste para isolar o ambiente de produção de quaisquer efeitos colaterais causados pelos testes. Para ver mais informações, consulte Compatibilidade com ambientes diferentes na documentação do Firebase.

Cloud Test Lab

O Cloud Test Lab oferece infraestrutura baseada em nuvem para testar apps para Android. Basta uma única operação para iniciar os testes do seu app em vários dispositivos e configurações. Os resultados do teste - incluindo registros, vídeos e capturas de tela estão disponíveis no projeto no Console do GCP. Mesmo que você não tenha escrito nenhum código de teste para o aplicativo, o Cloud Test Lab poderá analisá-lo automaticamente à procura de falhas.

O Cloud Test Lab é compatível com dois tipos de dispositivo. Cada tipo dispõe de características que o tornam mais apropriado para uma fase específica do desenvolvimento de aplicativos. Existem vários modelos para cada tipo de dispositivo.

  • Os dispositivos virtuais são simulações virtuais fiéis de dispositivos Android específicos. Eles têm alta disponibilidade para programação e são mais apropriados para desenvolvimento diário ou testes contínuos.

  • Os dispositivos físicos são dispositivos Android reais e físicos, instalados e executados em um data center do Google. Os testes em dispositivos físicos são mais apropriados para testes de pré-lançamento porque detectam problemas que podem ocorrer durante o teste do app com dispositivos virtuais.

Cloud Security Scanner

O Cloud Security Scanner identifica vulnerabilidades de segurança nos aplicativos da Web do App Engine. Ele segue todos os links no escopo dos URLs iniciais para rastrear seu aplicativo e tenta acessar o máximo possível de entradas do usuário e manipuladores de eventos.

No momento, o Cloud Security Scanner é compatível apenas com instâncias do ambiente padrão do App Engine. Ele ainda não está habilitado para o ambiente flexível do App Engine, Compute Engine ou outros recursos do GCP.

Stackdriver Trace

O Trace coleta dados de latência de aplicativos do App Engine e exibe os dados quase em tempo real no Console do GCP.

Com o Trace, é possível descobrir quanto tempo leva para o aplicativo processar solicitações de entrada feitas por usuários ou outros aplicativos e quanto tempo leva para concluir as operações (especificamente chamadas RPC) realizadas ao processar as solicitações.

No momento, o Trace coleta todos os dados de latência referentes a solicitações aos URIs do App Engine e outros dados sobre chamadas RPC de ida e volta para serviços do App Engine, como Cloud Datastore, URL Fetch e Memcache.

Como monitorar o serviço de back-end para dispositivos móveis

Lançar um serviço de back-end é apenas o começo: você precisa monitorar o serviço para garantir que ele esteja funcionando como pretendido.

O App Engine realiza automaticamente o monitoramento de integridade do ambiente padrão e do ambiente flexível, que ativam novas instâncias quando necessário. Além disso, é possível configurar o escalonamento automático do Compute Engine para substituir instâncias que não respondem.

O GCP também fornece ferramentas para coletar e analisar registros e um painel de monitoramento que pode ser configurado para enviar alertas quando o aplicativo estiver em execução fora dos limites especificados.

Stackdriver Logging

O Logging coleta e armazena registros de apps e serviços no GCP. Na Lista de registros, é possível ver os registros a que você tem acesso. Depois de coletar os registros, é possível:

Stackdriver Monitoring

O Monitoring fornece painéis e alertas para os aplicativos do GCP.

Acesse o Console do Monitoring para configurá-lo. Use a API do Stackdriver Monitoring para recuperar dados de monitoramento e criar métricas personalizadas.

O Monitoring permite analisar as métricas de desempenho dos serviços do GCP, máquinas virtuais e servidores de código aberto comuns, como MongoDB, Apache, Nginx, Elasticsearch e muito mais.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…