Backend pour applications mobiles

Backoffice, API sécurisée, traitements automatiques

Conception de backend

Un backend est la pièce essentielle de votre architecture technique. C'est le composant principal qui va servir à faire tourner votre site web ou à faire fonctionner votre application mobile en lui fournissant les données dont elle a besoin (ou collecter les données en provenance de votre application mobile). Dans le cadre du développement d'applications mobiles, cas qui nous intéresse, un backend est composé d'une base de donnée, d'un backoffice (interface web) permettant de gérer les données et d'une api rest avec laquelle l'application dialoguera pour fournir ou récupérer ses données. Si le backend est mal conçu et/ou que le développement du backend est mal implémenté, votre application risque de souffrir de problèmes de performances sérieuses (peu importe la qualité du développement de l'application mobile par elle même). Aussi il est donc primordial d'apporter une attention toute particulière au développement de votre backend. Cela se traduit par la conception du modèle de donnée qui va répondre aux besoins de votre application mobile, et à la mise en place de l'architecture technique: serveur(s), mise en place de cache, conception et implémentation de l'API Rest afin d'atteindre l'objectif de performance recherché.

Réalisation de backend pour applications mobiles

Tous mes développements de backend sont réalisés à l'aide du framework Python Django couplé à une architecture dans le cloud (via les services proposés par Clever Cloud).

L'architecture se compose généralement d'un ou plusieurs scalers (les serveurs frontend), d'une base de donnée PostgreSQL et d'une instance Redis pour gérer la mise en cache.

Pour les traitements automatiques (lorsque c'est nécessaire), j'utilise Celery couplé à Django.

L'un des gros avantages de Clever Cloud est le scaling automatique en fonction de la charge. C'est à dire que le nombre de serveurs frontend, nécessaires pour répondre à la demande de votre application, s'ajuste automatiquement. De même, il est possible de redimensionner sa base de donnée en 2 clics pour s'ajuster en fonction de la puissance nécessaire requise par votre application mobile.

Django est un framework de développement réalisé en python, qui permet de réaliser des frontends (site web) et des backends. C'est sur le développement de backend avec Django, que nous allons nous attarder. La devise de Django est : Le framework web pour perfectionnistes avec deadlines. Cela signifie qu'on peut être très exigeant sur le développement obtenu avec Django, sans pour autant sacrifier le temps passé sur ce développement. En effet, Django est très puissant grâce notamment au langage python, mais aussi via toutes les librairies disponibles pour ce dernier. Le résultat est qu'il est possible de développer un backoffice ou une api rest de manière simple et très rapide.

Développement de l'interface d'administration

L'interface d'administration, comme son nom l'indique, permet d'administrer l'application mobile. Par exemple, de voir les comptes utilisateurs, ou de créer/visualiser/modifier/effacer toute autre type de données dont celle ci peut avoir besoin. On parle généralement d'interface C.R.U.D (create, read, update, delete).


Avec Django, développer une interface d'administration de type C.R.U.D est extrémement simple et rapide.
Mais la puissance de Django permet d'aller bien au dela d'une simple interface C.R.U.D tout en gardant une productivité exemplaire.

Développement de l'API REST

L'API REST est la brique qui va s'interposer entre votre application mobile et votre backend. Autant dire que cette dernière est fondamentale. Tout comme la conception du modèle de donnée, la conception de l'API REST doit être réfléchie en amont afin d'éviter les problèmes de performances, et ceux-ci peuvent être nombreux, quelques exemples :

  • Devoir réaliser x requêtes HTTP pour récupérer des données qui auraient pu être récupérées en 1 seule requête (multiplié par le nombre d'utilisateurs de votre application, on peut vite arriver à saturation des frontends ou de la base de donnée).

  • Renvoyer des dizaines de méga-octets (penser aux réseaux 3G , pire EDGE).

  • Récupérer des données dans la base de donnée sans utiliser de jointures et en lançant X requêtes.
  • Sérialization excessive (champs inutiles)
  • ...


Enfin il est important que votre API REST soit sécurisée d'où l'utilisation de HTTPS mais aussi du protocole oAuth2 que j'applique sur chacune des API REST développées.



Quelques screenshots d'interface d'administration

Les copies d'écrans ci dessous, représente quelques exemples d'interface d'administration que j'ai pu mettre en place sur les backends de mes clients, afin de leur permettre de surveiller et d'administrer leurs applications iOS ou Android.
Il m'est aussi arrivé de mettre en place un export de données depuis le backend au format CSV, ou un import de donnée toujours au format csv.