Je sais que c'est une vaste question, je vais donc essayer d'être aussi précis que possible. Cette question est plus une question «organisationnelle» qu'une question technique.
Nous avons un projet multi-faces avec ces composants principaux:
- Un serveur, hébergeant la logique métier principale (modèles de données)
- Un backoffice pour les clients qui utilise la logique métier principale
- Une API d'application (REST) qui utilise également la logique métier principale
- Il existe des applications pour smartphone (iOS et Android) utilisant l'API d'application
- Il existe une autre application pour tablette (Android) différente de celle pour smartphone utilisant la même API d'application.
Bientôt, je serai en production avec des clients actifs. Et comme tout projet, je devrai maintenir tous les différents composants au fil du temps. Cela signifie que tous les éléments suivants peuvent être mis à niveau:
- le code de la logique métier principale du serveur (utilisé par le back-office, l'API et, comme effet secondaire, par les applications mobiles)
- l'API elle-même (utilisée par les applications pour smartphones et tablettes)
- toutes les applications mobiles (via appstore / googleplay)
Bien sûr, les parties côté serveur (code logique métier et code API) peuvent être modifiées immédiatement par moi-même. Cependant, les nouvelles applications mobiles doivent être téléchargées par les clients sur l'appstore / googleplay, et je ne peux pas être sûr qu'elles sont à jour.
Pourriez-vous fournir des conseils, des conseils de bonnes pratiques, pour rendre ces mises à niveau fluides et sans risque pour le client?
De quel composant ai-je besoin pour "version"? Comment s'assurer que tout fonctionne même si le client ne met pas à jour son application mobile? Dois-je le forcer à mettre à niveau pour faciliter mon travail?
En un mot, comment dois-je m'organiser pour faire vivre mon projet multi-faces dans le temps?