Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Un voyage migratoire avec Django

Un voyage migratoire avec Django

Comment une boite pleine de Djangonautes a pris conscience que son approche des migrations Django et l’ownership sur la base de données n'était pas idéal, ce qui a changé, et comment on a retourné le problème entièrement pour se débarasser des migrations générées par Django tout en gardant ce qui fait le charme du Framework au Poney.

Joachim Jablon

June 09, 2018
Tweet

More Decks by Joachim Jablon

Other Decks in Technology

Transcript

  1. UN VOYAGE MIGRATOIRE AVEC DJANGO QUI SUIS-JE ? Pythoniste depuis

    2008 Ingénieur & Développeur depuis 2012 Djangonaute depuis 2013 2
  2. UN VOYAGE MIGRATOIRE AVEC DJANGO PEOPLEDOC EN 2015 >10 000

    000 documents gérés ~15 devs Python/Django PostgreSQL avec 1/2 Database Admin À l'époque, sans moi Déploiements la nuit 6
  3. UN VOYAGE MIGRATOIRE AVEC DJANGO DÉPLOIEMENT EN 2015 22h45: Arrivée,

    dernières
 vérifications 23h: Backup,
 début du downtime 23h30: Mise à jour du code,
 installation des dépendances 23h45: Lancement
 des migrations 2h30: Fin des migrations,
 fin du downtime, vérifications 7
  4. UN VOYAGE MIGRATOIRE AVEC DJANGO 4H DE MIGRATIONS ?! -

    LES DATA MIGRATIONS Pas droit à l'erreur Le problème des test Sûreté vs rapidité Le problème des modèles de migration 10
  5. UN VOYAGE MIGRATOIRE AVEC DJANGO 4H DE MIGRATIONS ?! -

    LES DATA MIGRATIONS Bugs Lenteur 11
  6. 12

  7. UN VOYAGE MIGRATOIRE AVEC DJANGO RÈGLE N°1 - COMPLÉTER SA

    BOÎTE À OUTILS La base n'appartient pas à Django Ecrire des sites web en Django,
 c'est un métier
 Ecrire des migrations complexes,
 c'est aussi un métier 13
  8. UN VOYAGE MIGRATOIRE AVEC DJANGO RÈGLE N°2 - LA NUIT,

    C'EST POUR JOUER À FORTNITE DORMIR Aucune migration
 ne doit être bloquante La base doit supporter
 2 versions successives de code 14
  9. UN VOYAGE MIGRATOIRE AVEC DJANGO EXEMPLE 1: SUPPRIMER UNE COLONNE

    1. Ne plus l'utiliser (y compris dans les contraintes) 2. DROP COLUMN 16
  10. UN VOYAGE MIGRATOIRE AVEC DJANGO EXEMPLE 3: AJOUTER UNE COLONNE

    DEFAULT NOT NULL 1. ADD COLUMN NULL 2. ALTER COLUMN SET DEFAULT 3. Data migration 4. ALTER COLUMN SET NOT NULL 5. Commencer à l'utiliser 18
  11. UN VOYAGE MIGRATOIRE AVEC DJANGO EXEMPLE 5: CHANGER LE TYPE

    D'UNE COLONNE 1. Créer une nouvelle colonne 2. Ecrire les TRIGGERs 3. Ecrire la Data Migration 4. Mettre à jour le code 5. Supprimer les TRIGGERs et l'ancienne colonne 22
  12. UN VOYAGE MIGRATOIRE AVEC DJANGO POURQUOI ? Développement local Déploiement

    continu Tester les migrations en condition réelle 25
  13. UN VOYAGE MIGRATOIRE AVEC DJANGO COMMENT ON S'EN SERT ?

    pip install django-north INSTALLED_APPS, settings Architecturer ses migrations 28
  14. UN VOYAGE MIGRATOIRE AVEC DJANGO EN CONCLUSION Devs ❤ DBAs

    Connaissez les limites de Django Humain > process 30
  15. MERCI ! DES QUESTIONS ? CC-BY-NC-SA JOACHIM JABLON - EWJOACH.IM

    < On recrute ! 31 Tout ce talk va bientôt être publié sous la forme d'articles de blog sur https://tech.people-doc.com Les slides sont sur https://ewjoach.im Credits images: http://bit.ly/djangcong-2018-bird-images