Conception de backend pour applications mobiles
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ées, 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érieux (peu importe la qualité du développement de l'application mobile par elle-même). Aussi il est 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ées qui va répondre aux besoins de votre application mobile et par 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 mobile Mode d'emploi
Tous mes développements de backend pour application mobile 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ées 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ées en 2 clics pour s'ajuster à la
puissance 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, c'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 y avoir passé trop de temps. En effet, Django est très puissant grâce notamment au langage python,
mais aussi à toutes les librairies disponibles pour ce dernier. Au final, 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 tout 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-delà d'une simple interface
C.R.U.D tout en gardant une productivité exemplaire. J'ai d'ailleurs
écrit un livre à ce sujet.
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ées, la conception de l'API Rest doit être réfléchie en amont afin d'éviter les problèmes de performance, 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ées).
- Renvoyer des dizaines de méga-octets (penser aux réseaux 3G ou, pire, Edge).
- Récupérer des données dans la base de données sans utiliser de jointures et en lançant X requêtes.
- Sérialisation excessive (champs inutiles), etc.
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'écran ci-dessous représentent 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 Excel.