Conseils sur la mise à jour d'application maison développée avec Django

Le
Olivier
--000000000000684c1c0581b27d25
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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 modu=
les 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 e=
n
douceur ?
Comment opèrent ceux qui font du CI/CD au petit déjeuner ?

Slts

--000000000000684c1c0581b27d25
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir="ltr"><div>Bonjour,</div><div><br></div><div>Je dois bientô=
t démarrer le développement d&#39;une application &quot;maison&qu=
ot; avec Django (et Postgres pour la base de données).</div><div><br><=
/div><div>J&#39;imagine livrer plusieurs versions successives de l&#39;appl=
ication avec entre deux versions principalement des modifications du mod=
le et du code applicatif mais peut être aussi l&#39;ajout ou la mis=
e à jour de modules Django.</div><div><br></div><div>L&#39;application=
gère relativement peu de données (des données de configurat=
ion) et pour donner un ordre de grandeur, la perte de toutes les donné=
es saisies pendant une saisie me semble acceptable.<br></div><div><br></div=
><div>Avez-vous des conseils pour que les changements de version s&#39;op=
èrent en douceur ?</div><div>Comment opèrent ceux qui font du CI/=
CD au petit déjeuner ?</div><div><br></div><div>Slts<br></div><div><br=
></div></div>

--000000000000684c1c0581b27d25--
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel Caillibaud
Le #26509319
Le 12/02/19 à 14:34, Olivier
Avez-vous des conseils pour que les changements de version s'opèrent en
douceur ?

Si tu prévois des évolutions du schéma de données, il f aut 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 t es fichiers
- tu redémarres avec la nouvelle version
Mais souvent on coupe pas et ça se fait au démarrage de l'applica tion :
- 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 appl iqué
- 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-bloqua nts
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 p ose pas de pb
si le rsync dure qq secondes.
--
Daniel
Moi, je ne me pose jamais aucune question.
Je me demande d'ailleurs bien pourquoi…
Publicité
Poster une réponse
Anonyme