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.

E122b75d171a1029ba808f7e26af1820?s=128

Joachim Jablon

June 09, 2018
Tweet

More Decks by Joachim Jablon

Other Decks in Technology

Transcript

  1. UN VOYAGE MIGRATOIRE AVEC DJANGO JOACHIM JABLON - DJANGOCONG 2018

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

    2008 Ingénieur & Développeur depuis 2012 Djangonaute depuis 2013 2
  3. PARTIE 1 L'HISTOIRE 3

  4. UN VOYAGE MIGRATOIRE AVEC DJANGO LE MONDE EN 2015 1

    BTC = 44 kébabs 4
  5. UN VOYAGE MIGRATOIRE AVEC DJANGO DJANGO EN 2015 Fin de


    South Django 1.7 5
  6. 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
  7. 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
  8. TEXTE 4H DE MIGRATIONS ?! - L'AJOUT DE COLONNE NOT

    NULL 8
  9. TEXTE 4H DE MIGRATIONS ?! - L'AJOUT DE COLONNE NOT

    NULL 9
  10. 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
  11. UN VOYAGE MIGRATOIRE AVEC DJANGO 4H DE MIGRATIONS ?! -

    LES DATA MIGRATIONS Bugs Lenteur 11
  12. 12

  13. 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
  14. 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
  15. PARTIE 2 MIGRATIONS SQL 15

  16. UN VOYAGE MIGRATOIRE AVEC DJANGO EXEMPLE 1: SUPPRIMER UNE COLONNE

    1. Ne plus l'utiliser (y compris dans les contraintes) 2. DROP COLUMN 16
  17. UN VOYAGE MIGRATOIRE AVEC DJANGO EXEMPLE 2: DATA MIGRATION 17

  18. 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
  19. UN VOYAGE MIGRATOIRE AVEC DJANGO EXEMPLE 4: RENOMMER UNE COLONNE

    19
  20. UN VOYAGE MIGRATOIRE AVEC DJANGO APARTÉ: TRIGGERS Tip: plpython3u (⚠)(⚠u)

    20
  21. UN VOYAGE MIGRATOIRE AVEC DJANGO APARTÉ: TRIGGERS - INSTALLATION 21

  22. 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
  23. UN VOYAGE MIGRATOIRE AVEC DJANGO APARTÉ: TRIGGERS INVERSES v1: Colonne

    uuid (str) v2: Colonne uuid (uuid) 23
  24. PARTIE 3 DJANGO NORTH 24

  25. UN VOYAGE MIGRATOIRE AVEC DJANGO POURQUOI ? Développement local Déploiement

    continu Tester les migrations en condition réelle 25
  26. UN VOYAGE MIGRATOIRE AVEC DJANGO QUOI ? 26

  27. UN VOYAGE MIGRATOIRE AVEC DJANGO ARCHITECTURE DES MIGRATIONS 27

  28. UN VOYAGE MIGRATOIRE AVEC DJANGO COMMENT ON S'EN SERT ?

    pip install django-north INSTALLED_APPS, settings Architecturer ses migrations 28
  29. EN CONCLUSION 29

  30. UN VOYAGE MIGRATOIRE AVEC DJANGO EN CONCLUSION Devs ❤ DBAs

    Connaissez les limites de Django Humain > process 30
  31. 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