Six points à prendre en compte à l’heure de choisir une base de données pour vos applications mobiles

Demander une connexion Internet pour les applications mobiles, c’est vivre dans le passé. Si les applications ont besoin d’une connexion pour fonctionner, il est fort probable qu’elles fournissent une expérience qui manque de tonus et soit imprévisible.

Afin d’éviter de dépendre du réseau, les fournisseurs de bases de données et de services cloud ont commencé à ajouter des fonctions hors ligne et de synchronisation à leurs produits mobiles. Bon nombre de solutions ont une capacité de synchronisation, essentielle pour permettre aux applications de fonctionner aussi bien en ligne que hors ligne. 

Avec une offre de produits si vaste, comment un développeur mobile sélectionne-t-il la technologie adaptée à chaque application ? Les six critères clés suivants sont les plus importants à l’heure d’évaluer des solutions mobiles : la prise en charge des plateformes, la sécurité, la flexibilité des modèles, la résolution des conflits, l’optimisation de la synchronisation et la prise en charge des topologies.

La prise en charge des plateformes adéquates

Quelles plateformes clientes sont-elles prises en charge ? Devez-vous aller au-delà d’iOS et Android ? Souhaitez-vous prendre en charge des plateformes qui ne sont traditionnellement pas considérées comme mobiles, par exemple des systèmes embarqués, des terminaux IoT et des ordinateurs vestimentaires ?

Voulez-vous également prendre en charge des ordinateurs de bureau et portables Windows et OS X ? Aujourd’hui, de nombreuses applications sont d’abord pour le mobile et intègrent ensuite une application idoine pour le Web ou natives pour des postes de travail. Il est important d’évaluer les options de base de données et cloud sur la base de la plateforme que vous devez prendre en charge non seulement aujourd’hui, mais aussi demain.

La sécurité au repos et en circulation

Lorsque vous utilisez un stockage synchronisé et décentralisé, il est important d’assurer l’accès aux données, leur transmission et leur stockage de manière sécurisée. Pour garantir une sécurité totale, vous devez aborder l’authentification, les données au repos, les données en circulation et l’accès en lecture/écriture.

L’authentification doit être flexible et permettre l’utilisation de prestataires de services d’authentification standard, publique et personnalisée. La prise en charge de l’accès anonyme est également importante pour de nombreuses apps. Pour les données au repos sur le serveur et le client, il est nécessaire d’assurer le cryptage du système de fichiers et au niveau des données.

Pour les données en circulation, la communication doit se faire sur un canal sécurisé comme SSL ou TLS. Pour l'accès en lecture/écriture des données, la base de données doit offrir un contrôle granulaire sur les données accessibles aux utilisateurs et pouvant être modifiées par ceux-ci.

La flexibilité des modèles

De la flexibilité de la modélisation des données dépendra votre capacité à articuler les exigences du modèle pour vos apps de manière efficace et appropriée. Plus important encore, en dépendra votre capacité à faire évoluer efficacement votre modèle en fonction de vos exigences futures. La souplesse du modèle est particulièrement importante pour les applications mobiles, qui évoluent à un rythme très rapide.

Les bases de données relationnelles restent un bon choix si une application requiert une forte cohérence des données ou si les données sont fortement relationnelles. Mais lorsque ces exigences peuvent être assouplies, les bases de données NoSQL offrent une flexibilité bien supérieure.

Les conflits possibles

Pour les plateformes mobiles ou toute autre plateforme qui utilise une écriture des données décentralisée, les mêmes données peuvent être simultanément modifiées sur plusieurs dispositifs, ce qui crée un conflit. Le système doit prendre en charge un mécanisme pour résoudre ces conflits.

La flexibilité de ce mécanisme de résolution des conflits est importante et doit permettre une résolution automatique, sur le dispositif, dans le cloud, par un système externe et par une intervention humaine. 

Le mode de traitement des conflits diffère pour chaque système. Certains utilisent une arborescence de révision avec une règle de résolution par défaut par laquelle « la branche la plus active l’emporte ». C’est l’approche adoptée par les systèmes de gestion des révisions tels que Git, qui diffère considérablement des systèmes basés sur les heures, selon lesquels « le changement le plus récent l’emporte ».

Les systèmes de résolution basés sur les heures posent problème en raison des différences horaires qui peuvent exister entre les dispositifs. Les meilleurs systèmes permettent également la personnalisation (via un code sur le client ou sur le serveur) afin de réaliser des opérations de résolution de conflits plus complexes tels qu’une fusion à trois branches.

La synchronisation en temps voulu

Outre la capacité de résolution des conflits, il est important de pouvoir contrôler la manière dont le système est synchronisé. Cela comprend la stratégie de réplication, la réplication conditionnelle et le filtrage de réplication. Concernant la stratégie de réplication, la prise en charge de la diffusion en continu, de l’invitation à émettre, et des réplications uniques, continues et par émission est conseillée.

Vous devez également pouvoir utiliser une combinaison de ces stratégies. S’agissant de la réplication conditionnelle, vous pouvez avoir besoin de répliquer les données dans certaines conditions uniquement, par exemple lorsque le dispositif est connecté au Wi-Fi ou lorsqu’il a suffisamment d’autonomie de batterie. Pour le filtrage de réplication, vous devez avoir la capacité de répliquer certaines données, mais pas d’autres.

La synchronisation avec les partitions adéquates

Il est nécessaire d'avoir une topologie de la synchronisation configurable, qui répond à vos exigences en matière de partitions. En d’autres termes, vous devez pouvoir configurer le système pour permettre à certaines parties de fonctionner hors ligne. La topologie la plus courante est en étoile.

Dans une topologie en étoile, chaque dispositif est connecté à un concentrateur central qui utilise une connexion point à point permettant aux dispositifs de fonctionner hors ligne.

D’autres topologies courantes, par exemple en arbre ou maillées, permettent à différentes parties du système (outre les dispositifs) de fonctionner hors ligne. Vous pouvez également souhaiter prendre en charge des topologies qui n’utilisent pas le cloud et permettent une communication de pair-à-pair et la synchronisation directe de données entre les dispositifs. 

Un système de point de vente est un bon exemple d’une topologie en arbre. Les systèmes de point de vente demandent qu’un magasin physique continue de fonctionner s’il est déconnecté du reste du système.

Dans cette configuration, les terminaux de point de vente (TPV) seraient synchronisés avec une base de données au niveau du magasin, qui seraient synchronisés avec un système global. Ainsi, les magasins pourraient continuer de fonctionner et de synchroniser des données avec leurs terminaux de point de vente indépendamment de la connectivité avec le système global.

Lorsque vous envisagez d’ajouter une fonction de synchronisation à vos applications, vous devrez déterminer si vous souhaitez créer une solution ou l’obtenir auprès d’un fournisseur. Il est notoire que la création d’une solution de synchronisation efficace est difficile et onéreuse, car elle doit traiter de toutes les complexités de l’informatique distribuée.

Pour la plupart des applications, vous avez plutôt intérêt à laisser la synchronisation de données aux soins de spécialistes et de vous concentrer sur les fonctions de ces applications. L’essentiel est de choisir une solution souple. Si vous optez pour la création de la solution de synchronisation, soyez prêt à y consacrer, ainsi qu’à tous les points précités, une partie importante de votre temps et de vos ressources.

Lorsque vous choisissez un prestataire de solutions de synchronisation et de stockage mobiles, prendre toute la mesure des critères ci-dessus sera essentiel pour créer des applications mobiles sûres, flexibles et gérables qui fonctionnent toujours, avec ou sans connexion Internet.