cerhu > linux.debian.user.french

Olivier (12/02/2019, 15h40)
Bonjour,

Je dois bientôt démarrer le développement d'une application "maison" avec
Django (et Postgres pour la base de données).

J'imagine livrer plusieurs versions successives de l'application avec entre
deux versions principalement des modifications du modèle et du code
applicatif mais peut être aussi l'ajout ou la mise à jour de modules Django.

L'application gère relativement peu de données (des données de
configuration) et pour donner un ordre de grandeur, la perte de toutes les
données saisies pendant une saisie me semble acceptable.

Avez-vous des conseils pour que les changements de version s'opèrent en
douceur ?
Comment opèrent ceux qui font du CI/CD au petit déjeuner ?

Slts
Daniel Caillibaud (13/02/2019, 18h10)
Le 12/02/19 à 14:34, Olivier <oza.4h07> a écrit :
> Avez-vous des conseils pour que les changements de version s'opèrenten
> douceur ?


Si tu prévois des évolutions du schéma de données, il faut impérativement
gérer des scripts d'updates.

Tu peux faire
- tu coupes
- tu passe ton script de mise à jour de la structure et déploie tes fichiers
- tu redémarres avec la nouvelle version

Mais souvent on coupe pas et ça se fait au démarrage de l'application :
- déployer les nouveaux fichiers de l'application
- lancer un reload qui devra gérer les étapes suivantes :

- je regarde dans la base de données quelle est le dernier update appliqué
- je regarde dans le dossier d'updates si y'en a un plus récent àappliquer
- si oui je le lance et quand il a fini je repars au début
- sinon je démarre vraiment l'application et je peux commencer à répondre
aux requêtes

Pour limiter les coupures sur des applis avec de grosses bases, on peut
gérer la notion de mises à jour non bloquantes (par ex un update qui va
ajouter un champ calculé, mais dont l'absence ne plante pas l'appli), tu
peux gérer cet aspect bloquant / non bloquant dans les étapes décrites
ci-dessus (si tous les updates qui restent à appliquer sont non-bloquants
tu peux démarrer quand même et les lancer en tâche de fond, mais en
séquentiel).

Pour la mise à jour sans modif de schéma, en général c'est rsync puis
redémarrage du serveur applicatif. Je suppose que django ne relit les
fichiers qu'au démarrage ou à leur premier appel et que ça pose pas de pb
si le rsync dure qq secondes.
Discussions similaires
mise a jour django

Conseils mise à jour

Mise à Jour de DLL 'maison'

comment mettre une application developpée sur access sur un autre.


Fuseau horaire GMT +2. Il est actuellement 09h33. | Privacy Policy