Services de backend pour applications mobiles

Vous trouverez dans cet article des conseils sur la création, la connexion, le test et la surveillance des services de backend mobiles à l'aide de Google Cloud. Des liens vers des exemples de code et d'applications accompagnent chaque schéma de conception.

La plupart des applications et des jeux mobiles nécessitent un service de backend pour les tâches qui ne peuvent pas être exclusivement effectuées sur un appareil, telles que le partage et le traitement des données provenant de plusieurs utilisateurs ou le stockage des fichiers volumineux. Pour en savoir plus sur les services de backend spécifiques aux jeux, consultez Présentation de l'infrastructure de jeu dans le cloud.

Sélectionner un schéma de conception

La création d'un service de backend pour une application mobile est comparable au développement d'un service basé sur le Web, avec certaines exigences supplémentaires :

  • Limite du volume de données stockées sur l'appareil
  • Synchronisation des données sur plusieurs appareils
  • Gestion optimale du cas hors ligne
  • Envoi de messages et de notifications
  • Minimisation de l'utilisation de la batterie

Les schémas de conception suivants décrivent différentes manières de créer des services de backend répondant à ces exigences à l'aide de Google Cloud. Pour en savoir plus, sélectionnez un schéma afin d'obtenir une description détaillée.

Schéma de conception Firebase Firebase avec schéma de conception App Engine Firebase avec schéma de conception d'environnement flexible App Engine Environnement standard App Engine avec schéma de conception Endpoints Schéma de conception Compute Engine

Les trois premiers schémas exploitent Firebase, une architecture à deux niveaux dans laquelle les applications mobiles et Firebase manipulent directement les données. Cela permet une gestion différente de la sécurité et de la validation des données.

Dans un modèle traditionnel à trois niveaux (comme dans les deux derniers schémas), il existe une couche de communication entre l'application mobile et le service de backend. Vous y rédigez généralement le code d'authentification et de validation des données.

Avec Firebase, vous spécifiez l'authentification et la validation en tant que règles déclaratives dans l'interface utilisateur Web, sans avoir à rédiger de code impératif. Pour en savoir plus, consultez la page Firebase Authentication dans la documentation Firebase.

En outre, ces schémas de conception passent d'une plate-forme entièrement gérée (Firebase) à un service non géré (Google Compute Engine). Sur les plates-formes gérées, Google se charge pour vous des tâches telles que la mise à niveau et l'autoscaling, mais impose certaines limites relatives à la configuration. À l'inverse, les plates-formes non gérées vous offrent un contrôle total sur la configuration de votre serveur, mais vous obligent à vous charger vous-même des tâches de gestion.

Le tableau suivant détaille les différences entre ces schémas de conception.

Fonctionnalité Firebase Firebase et environnement standard App Engine Firebase et environnement flexible App Engine Environnement standard App Engine et Cloud Endpoints Compute Engine et REST/gRPC
Scaling automatique de la capacité Oui Oui Oui Oui Si vous configurez un autoscaler
Synchronisation automatique des données en temps réel Oui Oui Oui

Maintenance automatique du serveur Oui Oui Oui Oui

Logique du backend

Oui Oui Oui Oui
Appel de fichiers binaires natifs, écriture dans le système de fichiers ou autres appels système

Oui

Oui
Stockage de données Oui Oui Oui Si vous ajoutez d'autres services Google Cloud Si vous ajoutez d'autres services Google Cloud
Stockage de fichiers Oui
Oui
Oui
Oui
Avec Cloud Storage
Oui
Avec Cloud Storage
Authentification simplifiée pour les utilisateurs Oui Oui Oui OAuth 2.0

Langages compatibles avec les services de backend mobiles N/A Consultez la documentation App Engine. Consultez la documentation Endpoints Frameworks Tout
Messages et notifications, tels que les notifications push Oui
Oui
Oui
   
Plates-formes compatibles iOS, Android, Web iOS, Android, Web iOS, Android, Web iOS, Android, Web iOS, Android, Web
Exécution de code dans un bac à sable requise

ND

Oui

Oui

SSL requis

Oui

Oui

Firebase

Firebase est une plate-forme entièrement gérée permettant de développer des applications iOS, Android et Web. Elle offre des services d'authentification, la synchronisation automatique des données, une messagerie, le stockage de fichiers, l'analyse et plus encore. Firebase permet de se lancer efficacement dans le développement ou la création de prototypes de services de backend mobiles.

Firebase

Ce schéma est recommandé pour :

  • limiter le volume de données présentes sur l'appareil en stockant des données JSON dans Firebase Realtime Database et des fichiers dans Firebase Storage ;
  • envoyer des notifications avec Firebase Cloud Messaging ;
  • synchroniser automatiquement les données en temps réel sur plusieurs appareils ;
  • gérer de façon optimale le cas hors ligne ;
  • authentifier les utilisateurs grâce à une variété de fournisseurs d'identité ;
  • développer rapidement un service de backend.

Il n'est pas recommandé pour :

  • les applications qui nécessitent un service de backend pour modifier les données synchronisées.

Premiers pas avec Firebase

Débuter avec Firebase.

Exemples de code Firebase

Découvrez quelques exemples d'applications qui utilisent Firebase.

Firebase et l'environnement standard App Engine

L'environnement standard App Engine est une plate-forme d'application qui surveille, met à jour et met à l'échelle l'environnement d'hébergement. Tout ce que vous avez à faire est d'écrire votre code de service de backend mobile.

Si votre application doit traiter des données utilisateur ou orchestrer des événements, vous pouvez bénéficier d'une synchronisation automatique des données en temps réel en utilisant Firebase avec l'environnement standard App Engine.

Firebase et App Engine

Ce schéma est recommandé pour :

  • les applications Firebase qui nécessitent un service de backend pour modifier les données synchronisées ;
  • les services de backend qui s'exécutent régulièrement pour traiter ou analyser les données Firebase.

Il n'est pas recommandé pour :

  • les services de backend qui appellent des fichiers binaires natifs, écrivent dans le système de fichiers ou effectuent d'autres appels système ;
  • les connexions persistantes à Firebase. L'environnement standard App Engine récupère les connexions de socket après deux minutes.

Firebase et l'environnement flexible App Engine

De même que l'environnement standard App Engine, l'environnement flexible App Engine est une plate-forme d'applications qui surveille, met à jour et met à l'échelle l'environnement d'hébergement. Tout ce que vous avez à faire est d'écrire votre code de service de backend mobile.

La différence est que l'environnement flexible exécute votre service de backend au sein de conteneurs Docker configurables. Vous pouvez ainsi appeler des fichiers binaires natifs, écrire dans le système de fichiers et effectuer d'autres appels système.

Si votre application doit traiter des données utilisateur ou orchestrer des événements, vous pouvez bénéficier d'une synchronisation automatique des données en temps réel en utilisant Firebase avec l'environnement flexible App Engine. Vous n'avez pas besoin d'exécuter votre code dans le bac à sable App Engine.

Firebase et l'environnement flexible App Engine

Ce schéma est recommandé pour :

  • les applications Firebase qui nécessitent un service de backend (requérant une configuration de serveur personnalisée ou des bibliothèques tierces non compatibles avec l'environnement standard App Engine) pour modifier les données ;
  • les services de backend qui nécessitent une connexion persistante à Firebase pour recevoir des notifications de modification de données. L'environnement flexible peut maintenir une connexion ouverte pendant 24 heures.

Créer une application mobile à l'aide de Firebase et de l'environnement flexible App Engine

Ce tutoriel explique comment développer avec Firebase une application mobile dotée d'un espace de stockage de données backend, d'une synchronisation en temps réel et d'une journalisation des événements utilisateur. Les servlets Java qui s'exécutent dans l'environnement flexible App Engine écoutent les nouveaux journaux utilisateur stockés dans Firebase et les traitent.

App Engine et Cloud Endpoints

Endpoints Frameworks pour l'environnement standard App Engine génère des API, des bibliothèques clientes et une documentation de découverte pour une application App Engine. Son utilisation vous évite d'avoir à écrire des wrappers pour gérer la communication avec App Engine. Vous pouvez exploiter les bibliothèques clientes générées par Cloud Endpoints pour appeler les API directement depuis votre application mobile.

En utilisant Cloud Endpoints conjointement avec App Engine, vous pouvez bénéficier d'une plate-forme d'applications qui surveille, met à jour et fait évoluer l'environnement d'hébergement.

App Engine et Cloud Endpoints

Ce schéma est recommandé pour :

  • générer de façon automatisée des bibliothèques clientes permettant aux applications d'appeler directement le service de backend ;
  • réduire le volume de données stockées sur l'appareil en déplaçant des fichiers vers Cloud Storage.

Il n'est pas recommandé pour :

  • les applications qui nécessitent une synchronisation automatique des données en temps réel sur plusieurs appareils ;
  • les services de backend qui nécessitent un serveur personnalisé ou des bibliothèques tierces ;
  • les systèmes non compatibles avec SSL, car requis par Cloud Endpoints.

Hello Endpoints

Vous trouverez ci-dessous un ensemble de tutoriels de prise en main décrivant comment créer l'exemple d'application Hello Endpoints, capable d'envoyer des messages simples. Le service de backend est mis en œuvre sur App Engine et exposé à l'application mobile grâce à Cloud Endpoints.

Jeu de morpion

Exemple d'application montrant comment appeler un service de backend exécuté sur App Engine pour créer un jeu simple. Le service de backend du jeu de morpion est mis en œuvre en Java.

Compute Engine et REST ou gRPC

Compute Engine vous permet de créer et d'exécuter des machines virtuelles au sein de l'infrastructure Google. Vous disposez de droits d'administrateur sur le serveur et d'un contrôle total sur sa configuration. Cela signifie également que vous êtes responsable des mises à jour et de la maintenance.

Compute Engine et REST

Deux protocoles principaux permettent de se connecter aux instances Compute Engine : REST et gRPC. Le protocole REST est plus établi, tandis que le protocole gRPC est plus récent et offre des transmissions plus efficaces, pouvant ainsi minimiser l'utilisation de la batterie et améliorer la sécurité. Pour en savoir plus sur les protocoles REST et gRPC, consultez la section Connecter votre application à votre service de backend personnalisé.

Ce schéma est recommandé pour :

  • adapter un service de backend existant s'exécutant sur un serveur sur site ou sur une machine virtuelle ;
  • les services de backend qui nécessitent un serveur personnalisé ou des bibliothèques tierces.

Il n'est pas recommandé pour :

  • les applications qui nécessitent une synchronisation automatique des données en temps réel sur plusieurs appareils ;
  • la maintenance automatique (vous devez maintenir et mettre à jour le serveur vous-même) ;
  • le scaling automatique (vous devez configurer et gérer manuellement un autoscaler).

Utiliser Compute Engine et REST dans une application mobile

Voici un exemple de bout en bout exploitant le protocole REST pour connecter une application mobile à un service de backend hébergé sur Compute Engine. L'exemple d'application Stickynotes transmet du texte au service, qui répond en renvoyant une image générée.

Il est à la fois disponible en version REST et gRPC. Vous pouvez donc comparer les deux protocoles.

iOS

Utiliser Compute Engine et gRPC dans une application mobile

Vous trouverez ci-dessous un exemple de bout en bout exploitant le protocole gRPC et des Protocol Buffers pour connecter une application mobile à un service de backend hébergé sur Compute Engine. L'exemple d'application Stickynotes transmet du texte au service, qui répond en renvoyant une image générée.

Il est à la fois disponible en version REST et gRPC. Vous pouvez donc comparer les deux protocoles.

iOS

Quel que soit le schéma de conception choisi, vous devez également consulter les guides sur l'architecture de la plate-forme mobile de votre application. Par exemple, consultez le guide sur l'architecture des applications dans la documentation destinée aux développeurs Android.

Créer votre service de backend mobile

Google propose divers outils et services pour vous permettre de créer des services de backend s'intégrant aux services Google Cloud.

Android Studio

Android Studio est l'IDE officiel pour le développement d'applications Android. Il est basé sur IntelliJ IDEA et offre des fonctionnalités supplémentaires telles que des outils Lint, un système de développement conçu autour de Gradle, ainsi que des modèles de code.

De plus, Android Studio permet l'intégration des services Google Cloud et de Firebase dans votre application. Pour en savoir plus, consultez l'article Outils pour Android Studio.

API Google pour iOS

Google distribue plusieurs API et SDK spécifiques à iOS à l'aide de CocoaPods. CocoaPods est un gestionnaire de dépendances Open Source pour les projets Swift et Objective-C Cocoa, vous permettant d'installer ou de mettre à jour de nouveaux SDK lorsque vous utilisez Xcode.

SDK Cloud

Le SDK Cloud contient des outils et des bibliothèques qui vous permettent de créer et de gérer des ressources sur Google Cloud.

Cloud Source Repositories

Les dépôts Cloud Source Repositories sont des dépôts Git complets, hébergés sur Google Cloud.

Chaque projet que vous créez dans Google Cloud Console est associé à des dépôts Cloud Source Repositories. Vous pouvez utiliser ces dépôts pour faciliter le développement collaboratif des applications ou des services, y compris de ceux qui s'exécutent sur App Engine et Compute Engine.

Si vous utilisez le débogueur Cloud Debugger, les dépôts Cloud Source Repositories et les outils associés vous permettent d'afficher dans Cloud Console les informations de débogage à côté de votre code lors de l'exécution de l'application.

Cloud Debugger

Utilisez Stackdriver Debugger pour inspecter l'état d'une application Java, sans l'arrêter ni la ralentir, quel que soit l'emplacement du code. Il s'applique aussi bien aux instances en production qu'en préproduction.

Stackdriver Debugger peut être utilisé dans les cas de figure suivants :

Connecter votre application à votre service de backend mobile

Une fois votre service de backend créé, vous devez établir une communication vers et depuis les instances de votre application mobile.

Connecter votre application à Firebase

Si votre service de backend utilise Firebase, vous pouvez connecter votre application mobile à Firebase de la manière suivante :

  • Créez un compte Firebase.
  • Obtenez une URL d'application depuis Firebase.
  • Importez les bibliothèques clientes dans votre application. Elles sont disponibles pour iOS, Android, les applications Web, ainsi que REST.
  • Appelez les bibliothèques depuis votre application en indiquant l'URL d'application.

Pour découvrir comment effectuer cette démarche, consultez les guides de démarrage dans la documentation Firebase.

Connecter votre application à votre service de backend personnalisé

Plusieurs protocoles vous permettent d'appeler un service de backend depuis votre application mobile. Les plus couramment utilisés avec Google Cloud sont REST, Endpoints et gRPC.

REST

REST est une architecture pour les applications en réseau, qui publie, lit et supprime des données à l'aide de requêtes HTTP. Vous pouvez créer des API REST sur Compute Engine, l'environnement standard App Engine et les instances d'environnement flexible App Engine que votre application peut appeler pour accéder au service de backend que vous créez.

Voici les outils les plus courants qui permettent de créer des services RESTful sur Google Cloud :

Pour obtenir un exemple de code expliquant comment utiliser le protocole REST dans un service de backend, consultez la section Compute Engine et REST ou gRPC.

Vous pouvez également communiquer avec Firebase à l'aide de REST. Pour en savoir plus, consultez la section API REST Firebase Database dans la documentation Firebase.

Endpoints Frameworks

Endpoints Framework génère des API et des bibliothèques clientes pour une application App Engine. Son utilisation vous évite d'avoir à écrire des wrappers pour gérer la communication avec App Engine. Vous pouvez exploiter les bibliothèques clientes générées pour appeler les API directement depuis votre application mobile.

Endpoints Frameworks nécessite SSL et ne fonctionne qu'avec une application s'exécutant sur App Engine.

Pour obtenir un exemple de code expliquant comment utiliser Endpoints Frameworks dans un service de backend, consultez la section App Engine et Endpoints.

gRPC

gRPC est un framework qui permet à une application mobile d'appeler directement des méthodes sur un service de backend, comme s'il s'agissait d'un objet local.

Il utilise la norme HTTP/2, qui introduit le streaming bidirectionnel, le contrôle de flux, la compression des en-têtes et la possibilité d'effectuer un multiplexage des requêtes sur une seule connexion TCP. gRPC vous permet de rendre votre application mobile plus économe en bande passante et de réduire la latence entre l'application et le service de backend exécuté sur Google Cloud.

Les clients et serveurs gRPC peuvent être rédigés dans n'importe quel langage compatible avec le framework. Vous pouvez par exemple créer un serveur gRPC en Java avec des clients en Go, Python ou Ruby.

Pour obtenir un exemple de code décrivant l'utilisation de gRPC dans un service de backend, reportez-vous à la section Compute Engine et REST ou gRPC.

Envoyer des notifications à votre application

Les notifications constituent une caractéristique importante pour la plupart des applications mobiles. Elles vous permettent de communiquer avec les utilisateurs, que votre application soit ouverte ou non sur leur appareil.

Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) est une solution de messagerie multi-plateforme qui vous permet d'envoyer de manière fiable des messages et notifications aux appareils clients exécutant votre application.

Avec FCM, vous pouvez effectuer les opérations suivantes :

  • Distribuer des messages à votre application cliente de l'une des trois manières suivantes : en les envoyant à des appareils uniques, à des groupes d'appareils ou à des appareils abonnés à des sujets.
  • Envoyer des notifications jusqu'à 2 Ko, des charges utiles de données jusqu'à 4 Ko, ainsi que des messages contenant les deux (notifications et charges utiles).
  • Envoyer des accusés de réception, des messages de chat ou d'autres messages depuis des appareils vers votre serveur, et via un canal de connexion FCM fiable à faible consommation d'énergie.

Pour démarrer avec FCM et envoyer des notifications, consultez les ressources suivantes :

Firebase Notifications

Basé sur Firebase Cloud Messaging et le SDK FCM, Firebase Notifications fournit une console graphique vous permettant d'envoyer des messages aux appareils clients qui exécutent votre application.

Tester votre service de backend mobile

Un important défi lors de la création d'une application mobile consiste à la tester sur toutes les configurations d'appareil possibles. Google Cloud propose des outils qui vous permettent de tester votre application mobile sur des appareils physiques comme virtuels, et d'évaluer la sécurité et les performances de votre service de backend.

Vous pouvez également configurer votre application mobile pour qu'elle fonctionne avec un service de backend de test afin d'isoler votre environnement de production de tout effet secondaire causé par les tests. Pour en savoir plus, consultez la section Compatibilité avec différents environnements dans la documentation Firebase.

Firebase Test Lab

Firebase Test Lab dispose d'une infrastructure basée sur le cloud permettant de tester les applications Android et iOS. À l'aide d'une seule opération, vous pouvez lancer le test de vos applications sur une grande variété d'appareils et de configurations d'appareil. Les résultats des tests se présentent entre autres sous forme de journaux, de vidéos et de captures d'écran, et sont disponibles dans votre projet dans Cloud Console. Même si vous n'avez pas écrit de code de test pour votre application, Firebase Test Lab vous permet d'effectuer une analyse automatique recherchant les plantages.

Vous pouvez exploiter Firebase Test Lab pour tester votre application sur des appareils virtuels ou physiques. De nombreux modèles sont disponibles pour chaque type d'appareil.

  • Les appareils virtuels sont des simulations virtuelles ultra-précises d'appareils mobiles spécifiques. Ils offrent une meilleure disponibilité pour la planification, et sont plus appropriés pour le développement quotidien et le test continu.

  • Les appareils physiques sont des appareils mobiles réels installés et exécutés dans un centre de données Google. Ils sont mieux adaptés au test préalable au lancement, car ils peuvent vous aider à détecter des problèmes qui pourraient ne pas survenir lors du test de votre application avec des appareils virtuels.

Web Security Scanner

Web Security Scanner identifie les failles de sécurité de vos applications Web App Engine. Le service explore votre application et tous les liens associés à vos URL de démarrage, et tente de tester un maximum d'entrées utilisateur et de gestionnaires d'événements.

Cloud Trace

Cloud Trace recueille les données de latence à partir des applications App Engine et les affiche quasiment en temps réel dans Cloud Console.

Stackdriver Trace vous permet de connaître le temps nécessaire à votre application pour gérer les requêtes entrantes provenant d'utilisateurs ou d'autres applications, ainsi que le temps nécessaire pour effectuer des opérations telles que les appels RPC effectués lors du traitement des requêtes.

Actuellement, Cloud Trace collecte les données de latence de bout en bout pour les requêtes adressées aux URI App Engine, mais également des données supplémentaires concernant les appels RPC aller-retour aux services App Engine tels que Datastore, URL Fetch et Memcache.

Surveiller votre service de backend mobile

Le lancement d'un service de backend n'est que la première étape. Vous devez ensuite le surveiller pour vous assurer qu'il fonctionne comme prévu.

App Engine effectue automatiquement la surveillance de l'état pour vous dans les environnements standard et flexible, qui génèrent tous deux de nouvelles instances si nécessaire. Vous pouvez également configurer l'autoscaling pour Compute Engine de façon à remplacer les instances qui ne répondent pas.

Google Cloud fournit également des outils de collecte et d'analyse des journaux, ainsi qu'un tableau de bord de surveillance que vous pouvez configurer pour envoyer des alertes lorsque votre application fonctionne au-delà des limites spécifiées.

Cloud Logging

Cloud Logging collecte et stocke les journaux des applications et des services sur Google Cloud. Les journaux disponibles affichent les journaux auxquels vous pouvez accéder. Après avoir recueilli des journaux, vous pouvez effectuer les opérations suivantes :

Cloud Monitoring

Monitoring fournit des tableaux de bord et des alertes pour vos applications Google Cloud.

La configuration de Monitoring s'effectue à l'aide de Cloud Console. L'API Cloud Monitoring vous permet d'extraire des données de surveillance et de créer des métriques personnalisées.

Avec Monitoring, vous pouvez consulter les métriques de performances des services Google Cloud, des machines virtuelles et des serveurs Open Source courants tels que MongoDB, Apache, Nginx, Elasticsearch, etc.

Étape suivante

  • Testez d'autres fonctionnalités de Google Cloud. Découvrez nos tutoriels.