5 votes

Stratégie mobile : Comment gérer cette permutation de version entre le serveur et le client ?

Nous hébergeons une application SAAS pour des clients. L'application principale est une application web et les différents clients peuvent être sur des versions différentes, par exemple :

Company A  version 1.0
Company B  version 1.1

Nous avons également des applications Android/iOS dans l'App Store. Comme les applications ne sont pas toujours à jour, nous pouvons avoir plusieurs versions d'applications sur le marché, par exemple 2.0 et 2.1. Ainsi, pour des raisons de compatibilité, nous devons nous assurer que chaque version du client fonctionne avec chaque version du serveur :

server 1.0 must work with client 2.0,
server 1.0 must work with client 2.1,
server 1.1 must work with client 2.0, 
and server 1.1 must work with client 2.2.

C'est gérable lorsqu'il n'y a que 2 versions de serveur et 2 versions de client. Cependant, au fur et à mesure que le temps passe, la liste devient folle. Nous avons un mécanisme qui force les applications mobiles à se mettre à jour à la dernière version, mais c'est un peu ennuyeux et les gestionnaires ne veulent pas le faire trop souvent.

Ma question est la suivante : quelle est la meilleure stratégie pour résoudre ce problème ? Android et iOS disposent-ils d'une fonction intégrée permettant à l'utilisateur de télécharger plusieurs versions d'applications et de ne lancer que celle dont il a besoin ?

Merci d'avance.

3voto

Chris Points 31

Nous rencontrons un problème similaire avec plusieurs clients qui peuvent avoir déployé différentes versions de serveurs.

Nous envisageons actuellement plusieurs options :

  • Gérer les déploiements de nos clients dans le nuage (administrés par nous) pour s'assurer qu'ils utilisent toujours la dernière version. Problématique pour les clients qui souhaitent des déploiements internes, par exemple pour des raisons de conformité ou de sécurité.
  • Regrouper les anciennes versions dans l'application elle-même sous forme de bibliothèque et, au moment de l'exécution, exécuter celle qui correspond aux versions du serveur. Malheureusement, cela conduit à des constructions désordonnées et à des paquets d'applications trop volumineux.
  • Dites aux utilisateurs d'installer manuellement l'application, ne la publiez pas sur l'app store. Peu pratique et problématique pour les utilisateurs les moins avertis sur le plan technologique.
  • Distribuer des applications par le biais du déploiement de serveurs du client. Nécessite l'autorisation d'installer à partir de sources inconnues sur Android. Le client doit disposer d'un compte d'entreprise pour iOS (299 $/an, chaque client doit s'inscrire séparément).
  • Modulariser le code de l'application pour activer/désactiver des composants ou des comportements en fonction de la version du serveur. Cela peut fonctionner si les mises à jour du serveur sont rares, mais cela deviendra compliqué et difficile à maintenir si cela se produit souvent.

Dans chaque cas, les utilisateurs doivent toujours mettre à jour leur application lorsque leur entreprise met à jour la version du serveur.

Pour nous, l'utilisation de PhoneGap mais il existe une autre option :

  • Télécharger le code de l'application à partir du serveur et l'exécuter. Lignes directrices pour l'App Store Les versions 2.7 et 2.8 semblent l'interdire, mais le point 3.3.2 de l'accord avec les développeurs indique que le téléchargement de scripts s'exécutant dans une vue web est autorisé. Cela signifie que l'application est essentiellement un lanceur qui se connecte et obtient un scripts du serveur, puis l'exécute. L'inconvénient est que cela nécessite un téléchargement à chaque fois que l'application est exécutée et/ou un mécanisme de cache dans le stockage de l'application.

Avez-vous trouvé une solution qui vous convient ? Comment avez-vous choisi de traiter ce problème ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X