Chp4 : Développement Mobile Côté Serveur
Sécurité, Notification, Synchronisation…
Conception et Développement d’Applications Mobiles
GL4 (Option Mobile) - 2016
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 1
Développement Côté Serveur
• Pour une application mobile, le côté serveur est simplement un
programme logiciel s’exécutant sur un serveur distant
• Besoin d’un développement côté serveur pour:
• Stocker et assurer l’accès des utilisateurs aux données communes
• Assurer l’interaction entre appareils
• Faire appel à des services, informations et fonctionnalités non disponible ou
difficilement réalisables sur les appareils mobiles
• Traitement de données et d’images
• Stockage
• Calculs complexes
• Synchronisation
• Sécurité, notifications…
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 2
Besoin et Utilité
Développement Côté Serveur
• Applications échangeant des données entre les appareils
• Systèmes de recherche et de réservation
• Applications de Blogging
• Outils financiers
• Outils d’organisation
• Applications de nouvelles, journaux ou flux RSS
• Applications de shopping et de coupons de réductions (deals)
• Applications sociales
• Applications de reconnaissance vocale ou fonctionnalités média
avancées
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 3
Types d’Applications nécessitant une partie serveur
Développement Côté Serveur
• Jeux à un seul joueur
• Éditeurs (audio, texte, vidéo, photo)
• Calculatrices
• Convertisseurs
• eReaders
• …
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 4
Types d’Applications NE nécessitant PAS une partie serveur
Avantages du Développement Côté Serveur
• Il est possible d’améliorer les performances d’une application mobile en
déplaçant les traitements les plus complexes vers le serveur
• Gain en :
• Mémoire
• Vitesse de traitement
• Espace disque
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 5
1. Éviter la surcharge de l’appareil
Avantages du Développement Côté Serveur
• Plusieurs applications voient leurs données régulièrement modifiées
• Données de géolocalisation, par exemple
• Un accès off-line des données nécessite ainsi que l’application soit
mise à jour très fréquemment pour prendre en considération les
nouvelles données
• Problème de fréquence des mises à jour: en moyenne, les utilisateurs
mettent à jour leurs applications tous les 6 mois
• Gestion des mises à jour pour tous les types de systèmes
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 6
2. Mise à Jour
Avantages du Développement Côté Serveur
• Plusieurs applications nécessitent une connexion entre deux
utilisateurs ou plus
• Jeux en ligne, chat, réseaux sociaux…
• Le partage direct via Wifi ou Bluetooth est alors requis, nécessitant
une proximité des utilisateurs d’à peu près 100m pour le Wifi et 10m
pour le Bluetooth
• Besoin d’une partie serveur qui synchronise les connexions et gère
l’historique
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 7
3. Connexion entre les appareils
Avantages du Développement Côté Serveur
• Certaines données (personnelles, à caractère financier ou privé)
doivent être conservées de manière sécurisée
• Les stocker en local peut poser des problèmes de sécurité en cas de perte
ou de problème de l’appareil.
• D’autres données doivent être continuellement stockées et
synchronisées avec plusieurs appareils
• Applications de fitness, calendrier, gestion du budget…
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 8
4. Conserver les données de manière sécurisée & synchronisée
Modules en Backend
• Une base de données hébergée côté serveur pour stocker vos données
• Communication avec la base de données peut se faire:
• Directement à partir du device client, généralement en utilisant des services
web
• En passant par un serveur d’application pour des traitements métiers, filtrage,
sécurité…
• Il est possible, même recommandé, de synchroniser les données de la base
distante avec des données en local, pour permettre un accès offline
• Synchronisation manuelle:
• Avec une base de données interne, comme SQLite
• Avec une structure de stockage dans le navigateur ou sur le device, comme HTML5
Web Storage
• Utilisation de bases de données en backend offrant une synchronisation
automatique
• Couchbase Mobile, Azure Mobile Services, Cognito, Firebase…
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 9
1. Bases de Données
Modules en Backend
• Les bases de données hébergées sur un serveur distant ont cet
avantage de supporter une taille de données volumineuse
• Problème: Comment faire si on veut traiter ces données sur le device
du client?
• Le transfert des données et leur stockage en intégralité sur l’appareil, ainsi
que leur traitement et filtrage, peuvent s’avérer coûteux, parfois même
impossibles
• Bonne pratique: faire en sorte que le plus gros du traitement soit fait
côté serveur, et seules les données traitées sont envoyées au client
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 10
1. Bases de Données : Gros Volumes?
Modules en Backend
• Mesures de sécurité pour l’accès aux données critiques
• Cryptographie: Chiffrement/Signature
• Transport sécurisé
• Authentification
• Gestion des rôles et contrôle d’accès
• Gestion des fautes, haute disponibilité
• Les mécanismes de sécurité utilisés dépendent du protocole de
communication utilisé
• Par exemple, pour SOAP, utiliser WSSecurity, pour REST, https/oAuth/OpenID…
• Penser à consulter le Mobile Security Project de OWASP
• https://www.owasp.org/index.php/OWASP_Mobile_Security_Project
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 11
2. Sécurité
Modules en Backend
• Envoi de notifications aux utilisateurs/devices souscris
• Même quand l’application n’est pas en exécution
• Deux façons de faire:
• Développer le module de notification dans le serveur lui-même
• Gestion des connexions aux appareils, leur enregistrement, leur détection
• Gestion de la souscription/désinscription à un évènement, l’envoi des
notifications
• Utiliser un mediator qui fera le travail pour toi, notamment:
• GCM: Google Cloud Messaging pour les appareils Android
• APNS: Apple Push Notification Service pour les appareils Apple
• MPNS: Microsoft Push Notification Service pour les appareils Microsoft
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 12
3. Notifications
Modules en Backend
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 13
3. Notifications : Inscription
L’ appareil s’inscrit au mediator (envoi du sender ID et app ID)
Inscription Réussie : Envoi du registration ID
Envoi du registration ID au serveur
1
2
3
Modules en Backend
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 14
3. Notifications : Envoi
Serveur envoie le message au mediator
avec le registration ID
Envoi du message au device
1
2
Modules en Backend
• Gestion des opérations sur les utilisateurs de l’application
• Création de compte
• Login
• Reset Password
• Gestion du profil
• Support possible des identités sociales (Google, Facebook, Twitter..)
• Permettre l’accès à partir de l’application et la modification de détails
d’un profil d’utilisateur
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 15
4. Gestion des Utilisateurs
Modules en Backend
• Stockage et gestion des fichiers textes, vidéos de grandes taille
• Gestion de l’arborescence
• Gestion du versionning
• Accès en lecture/écriture, téléchargement, upload
• Duplication des fichiers pour éviter les éventuelles pertes
• Gestion des droits d’accès aux fichiers (publics, privés ou accès
sélectif )
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 16
5. Gestion des Fichiers
Modules en Backend
• Création de modules custom dans le langage de votre choix
• En général pour cibler des traitements lourds ou complexes
• Traitement d’images et multimédia
• Business Analytics
• Applications 3D, réalité virtuelle, augmentée…
• Orchestration de services ou Mashup
• Minimiser les va-et-vient entre le côté client et côté serveur
• En une seule instruction du client, déclencher une série de traitements côté
serveur, gérés par un module d’orchestration
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 17
6. Code Serveur
Développement Côté Serveur
• L’ une des questions principales à traiter quand on définit nos backend
services : doit-on les réaliser :
• On-Premise (en local ou hébergé chez un tiers)
• Clef en main
• Solution Clef en Main (as a service)
• Utiliser des services mis à disposition (base de données, gestion des
utilisateurs, fichiers…)
• Exemple: Firebase
• Solution On-Premise: deux choix
• Tout définir from scratch: flexibilité et adaptabilité aux besoins
• Installation et administration du service à la charge de l’entreprise elle-même
• Mais… difficulté d’implémentation, de maintenance, d’expertise
• Utiliser des solutions backend prêtes à l’emploi
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 18
To Cloud or not to Cloud?
Développement Côté Serveur
• MBAAS (Mobile Backend As A Service) connu aussi sous le nom de BAAS
• Modèle pour fournir aux développeurs un lien vers des applications et
APIs en backend en fournissant :
• Gestion des utilisateurs, notifications push,…
• Fournir soit une API soit un SDK (dans un ou plusieurs langages de
programmation)
• Plusieurs frameworks connus pour configurer une solution BAAS
hébergée sur le cloud
• Firebase, Usergrid, deployd, appery.io, Telerik, BAASBOX
• Certaines solutions offrent un MBAAS à installer on-Premise
• Build.io, Kinvey...
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 19
BAAS (ou MBAAS)
Références
• Igor Chertnekov, What is The “Server‐side” of Mobile Applications, and Why Do I
Need It?
https://hirerussians.wordpress.com/2012/11/30/the-server-side-of-mobile-
applications/
• Tom Nolle, Building desktop versus building mobile applications: More than the
device is different.
http://searchsoa.techtarget.com/tip/How-to-properly-build-the-server-side-of-
mobility-applications
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 21
Sites Web & Livres