Services de backend pour applications mobiles

Vous trouverez dans cet article des conseils sur le développement, la connexion, le test et la surveillance des services de backend mobiles à l'aide de Google Cloud Platform. 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 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 Cloud Platform. 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. Pour en savoir plus, consultez la section 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 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 Cloud Platform. Si vous ajoutez d'autres services Cloud Platform.
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 Cloud Endpoints Frameworks. Tout
Messages et notifications, tels que les notifications push Oui
Oui
Oui
Oui
Avec Cloud Messaging
Oui
Avec Cloud Messaging
Compatibilité multi-plateformes 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'application qui utilisent Firebase.

Firebase et l'environnement standard Google App Engine

L'environnement standard App Engine est une plate-forme d'applications qui surveille, met à jour et fait évoluer l'environnement d'hébergement. Il vous suffit de rédiger le code de votre 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 2 minutes.

Firebase et l'environnement flexible App Engine

Tout comme l'environnement standard, l'environnement flexible App Engine est une plate-forme d'applications qui surveille, met à jour et fait évoluer l'environnement d'hébergement. Il vous suffit de rédiger le code de votre 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 Google App Engine écoutent les nouveaux journaux utilisateur stockés dans Firebase, et les traitent.

App Engine et Cloud Endpoints

Google Cloud 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. Ce service élimine le besoin de créer des wrappers pour gérer la communication avec App Engine. Vous pouvez simplement 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 ;
  • envoyer des notifications en appelant Cloud Messaging.

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. La technologie SSL est requise 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

Voici un exemple d'application qui explique comment appeler un service de backend s'exécutant sur App Engine afin de 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

Créer votre service de backend mobile

Google propose toute une gamme d'outils et de services qui vous permettent de créer des services de backend s'intégrant aux services Cloud Platform.

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.

En outre, Android Studio permet l'intégration des services Cloud Platform et de Firebase à votre application. Pour en savoir plus, consultez la section Cloud Tools 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 Cocoa Swift et Objective-C. CocoaPods facilite l'installation et la mise à jour de nouveaux SDK lorsque vous travaillez avec Xcode.

SDK Cloud

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

Cloud Source Repositories

Cloud Source Repositories fournit des dépôts Git complets hébergés sur Cloud Platform.

Chaque projet que vous créez dans la console Google Cloud Platform est associé à un dépôt Cloud Source Repositories. Ce dépôt facilite le développement collaboratif des applications ou des services, y compris ceux qui s'exécutent sur App Engine et Compute Engine.

Si vous utilisez Google Stackdriver Debugger, vous pouvez vous servir de Cloud Source Repositories et des outils associés de la console GCP pour obtenir des informations de débogage en marge de votre code, pendant l'exécution de l'application.

Stackdriver Debugger

Stackdriver Debugger vous permet d'inspecter l'état d'une application Java, quel que soit l'emplacement du code, sans l'interrompre ni la ralentir. Vous pouvez utiliser ce service sur les instances de production et de préproduction de votre application.

Vous pouvez utiliser Stackdriver Debugger avec les éléments 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é

Vous pouvez appeler un service de backend depuis votre application mobile à l'aide de divers protocoles. Les plus couramment utilisés avec Cloud Platform sont les protocoles REST, Cloud 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, sur l'environnement standard App Engine, ainsi que sur les instances de l'environnement flexible App Engine que votre application peut appeler pour accéder au service de backend que vous avez conçu.

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

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.

Cloud Endpoints

Cloud Endpoints génère des API et des bibliothèques clientes pour une application App Engine. Ce service élimine le besoin de créer des wrappers pour gérer la communication avec App Engine. Vous pouvez simplement exploiter les bibliothèques clientes générées par Cloud Endpoints pour appeler les API directement depuis votre application mobile.

Cloud Endpoints requiert la technologie SSL et ne fonctionne qu'avec les applications hébergées sur App Engine.

Pour obtenir un exemple de code expliquant comment utiliser Cloud Endpoints dans un service de backend, consultez la section App Engine et Cloud 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 d'améliorer l'efficacité de la bande passante de votre application mobile et de réduire la latence entre votre application et le service de backend s'exécutant sur Cloud Platform.

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 expliquant comment utiliser gRPC dans un service de backend, consultez 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 chats 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 Cloud Messaging et envoyer des notifications, consultez les ressources suivantes :

Firebase Notifications

Basé sur Firebase Cloud Messaging et sur le SDK FCM, Firebase Notifications propose une console graphique qui vous permet d'envoyer des messages aux appareils clients exécutant 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. Cloud Platform 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 plus d'informations, consultez Compatibilité avec différents environnements dans la documentation Firebase.

Cloud Test Lab

Google Cloud Test Lab dispose d'une infrastructure basée sur le cloud permettant de tester les applications Android. À 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 la console GCP. Même si vous n'avez pas écrit de code de test pour votre application, Cloud Test Lab vous permet d'effectuer une analyse automatique recherchant les plantages.

Cloud Test Lab est compatible avec deux types d'appareils. Chaque type présente des caractéristiques qui le rendent plus adapté à une phase particulière du développement de l'application. De nombreux modèles est disponible pour chaque type d'appareil.

  • Les appareils virtuels sont des simulations virtuelles ultra-précises de dispositifs Android 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 dispositifs Android réels installés dans un centre de données Google et s'y exécutant. Ils sont plus 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.

Google Cloud Security Scanner

Cloud 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 Security Scanner ne fonctionne actuellement qu'avec les instances standards App Engine. Le service n'est pas encore compatible avec l'environnement flexible App Engine, Compute Engine ou les autres ressources Cloud Platform.

Stackdriver Trace

Stackdriver Trace est une fonctionnalité de Cloud Platform qui recueille les données de latence de vos applications App Engine et les affiche quasiment en temps réel dans la console GCP.

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, et le temps nécessaire pour effectuer des opérations telles que les appels RPC effectués lors du traitement des requêtes.

Actuellement, Stackdriver Trace recueille des données de latence de bout en bout pour les requêtes adressées aux URI App Engine, et des données supplémentaires pour les appels RPC aller-retour aux services App Engine tels que Google Cloud 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.

Cloud Platform fournit également des outils permettant de recueillir et d'analyser les journaux, ainsi qu'un tableau de bord de surveillance configurable, pouvant envoyer des alertes lorsque votre application s'exécute en dehors du cadre spécifié.

Stackdriver Logging

Stackdriver Logging recueille et stocke les journaux des applications et des services sur Cloud Platform. La liste des journaux affiche ceux auxquels vous avez accès. Après avoir recueilli des journaux, vous pouvez effectuer les opérations suivantes :

Stackdriver Monitoring

Stackdriver Monitoring propose des tableaux de bord et des alertes pour vos applications basées sur le cloud.

Vous pouvez configurer le service à l'aide de la console Stackdriver Monitoring. L'API Stackdriver Monitoring vous offre également la possibilité de récupérer les données de surveillance et de créer des métriques personnalisées.

Stackdriver Monitoring vous permet de consulter les métriques de performances des services Cloud Platform, des machines virtuelles et des serveurs Open Source courants tels que MongoDB, Apache, Nginx, Elasticsearch et bien d'autres.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…