Déployer en continu
Benoît Lafontaine
OCTO Technology
Quelques chiffres
Facebook : > 2 déploiements par jour
Flick : > 10 déploiements par jour
Etsy : > 25 déploiements par jou...
Définitions
Continuous integration
A intervalle régulier, voire à chaque commit,
le code est :
!   Compilé
!   Testé
!   Assemblé
!   ...
Continuous delivery
A intervalle régulier, voire à chaque commit,
le code est :
!   Compilé
!   Testé
!   Assemblé
!   Dép...
Continuous deployment
A intervalle régulier, voire à chaque commit,
le code est :
!   Compilé
!   Testé
!   Assemblé
!   D...
POURQUOI,
POURQUOI,
POURQUOI ?
Feedback
C’est pas déjà ce qu’on fait
avec les méthodes Agiles ?
Code produit
Temps
Code produit
Temps
Code livré
Code produit
Temps
Dev
Code livré
Code produit
Temps
Dev ???
Code livré
Code produit
Temps
Code livré
Code produit
Temps
Code livré
Dev FEEDBACKS
Pourquoi on le fait pas ?
La peur
Perte de temps
Qualité ?
Code produit
Temps
Code livré
Code produit
Temps
Code livré
Beaucoup de changements
=
Beaucoup de risques
Code produit
Temps
Code livré
Code produit
Temps
Code livré
Peu de changements
=
Peu de risques
John Allspaw, Etsy
http://www.slideshare.net/jallspaw/ops-metametrics-the-currency-you-pay-for-change
Réduire la taille des déploiements…
Minimise les risques
Réduit le « Time To Repair » (TTR)
Réduit le temps d’indisponibil...
Déployer en continu c’est :
Construire un meilleur produit grâce à plus de feedbacks
Gagner du temps en huilant son proces...
COMMENT,
COMMENT,
COMMENT ?
Automatiser !
DEVOPS
Déployer en 1 clic
QUESTIONS,
QUESTIONS,
QUESTIONS !!!
Question#1 : 0 commits ?
Vas-y commit…
Garantir la qualité
Intégration continue
TESTS ! (automatisés bien sûr)
!   TDD
!   Tests d’IHM
!   Tests de performance
!...
Garantir la qualité
Question #2 : En construction ?
dissocier le déploiement de code
de l'activation de fonctionnalité
Feature flipping
Flipping code
Question #3 : Downtime ?
Blue green deployment
Question #4 : Migration de schémas de BDD ?
Migration de schéma : solution
Séparer les scripts de migration en
!   Scripts d’expansion (ADD)
!   Scripts de contractio...
Cas d’exemple
Exemple : Modification du champs adresse
Version N
Ecriture
Lecture
Exemple : Modification du champs adresse
Version N
Ecriture
Lecture
Exemple : Modification du champs adresse
Version N+1
Ecriture
Lecture
Exemple : Modification du champs adresse
Version N+2
Lecture
Ecriture
Exemple : Modification du champs adresse
Version N+2
Lecture
Ecriture
Exemple : Modification du champs adresse
Version N+2
Lecture
Ecriture
Question #5 : Est-ce qu’on active ?
Canary Release
Question #6 : Et si ça explose ?
Rappel : réduire la taille des
déploiements réduit les risques
Mesurer et superviser
Arrêt d’urgence
Toute anomalie en production provoque
!  une alerte visible par tous
!  L’arrêt d’urgence, on ne peut plus commiter
« L’ob...
N’accepter l’erreur qu’une seule fois
1 erreur => 1 action
Question #7 : Rollback ?
“we don’t roll back,
we fix the code”
John Allspaw - Etsy
Take away : pourquoi déployer en continu
Gagner en temps
Gagner en qualité
Plus de feedbacks
Take away : comment déployer en continu
!   Automatisez vos déploiements
!   Dissociez la livraison de code et l’activatio...
Merci
Benoît Lafontaine
bla@octo.com
@joel1di1
https://github.com/joel1di1
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Prochain SlideShare
Chargement dans…5
×

Deployer en continu, Benoît Lafontaine, USIEVENT 2013

831 vues

Publié le

Presentation played at USIEVENT 2013, see the presentation on youtube: http://www.youtube.com/watch?v=UcDtH5s406M&feature=share&list=PLyzb9DL11tdZBlz6nY8TZxMcqVf04K5wY

Publié dans : Technologie
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
831
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
13
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Facebook : > 2 déploiements par jourFlick : > 10 déploiements par jourEtsy : > 25 déploiements par jourAmazon : (1 déploiement toutes les 10 secondes sur 10000 machines)
  • Facebook : > 2 déploiements par jourFlick : > 10 déploiements par jourEtsy : > 25 déploiements par jour2012 : ~6500 déploiements~400 employés196 pers différentes ont effectué un déployementAmazon : (1 déploiement toutes les 10 secondes sur 10000 machines)
  • Mary et tom poppendieckProjet ou ca met plusieurs jours (voire des semaines) a 1 ou plusieurs personnes pour mettre en production
  • Sur Appaloosa, on faisait des itérations d’une semaine.La livraison prenait entre 2H et 4H (merge le code, faire passer les test)
  • Ou par exemple, la prod ne ressemble pas du tout aux env de dev et que les équipes sont séparés, des fois meme sur des lieux géographiques différents
  • Deployer en continu, Benoît Lafontaine, USIEVENT 2013

    1. 1. Déployer en continu Benoît Lafontaine OCTO Technology
    2. 2. Quelques chiffres Facebook : > 2 déploiements par jour Flick : > 10 déploiements par jour Etsy : > 25 déploiements par jour Amazon : (1 déploiement toutes les 10 secondes sur 10000 machines)
    3. 3. Définitions
    4. 4. Continuous integration A intervalle régulier, voire à chaque commit, le code est : !   Compilé !   Testé !   Assemblé !   Déployé sur un environnement d’intégration
    5. 5. Continuous delivery A intervalle régulier, voire à chaque commit, le code est : !   Compilé !   Testé !   Assemblé !   Déployé sur un environnement d’intégration !  Livré à l’équipe suivante (QA, MEP…)
    6. 6. Continuous deployment A intervalle régulier, voire à chaque commit, le code est : !   Compilé !   Testé !   Assemblé !   Déployé sur un environnement d’intégration !   Testé sur cet environnement (automatiquement) !  Déployé en production !!!
    7. 7. POURQUOI, POURQUOI, POURQUOI ?
    8. 8. Feedback
    9. 9. C’est pas déjà ce qu’on fait avec les méthodes Agiles ?
    10. 10. Code produit Temps
    11. 11. Code produit Temps Code livré
    12. 12. Code produit Temps Dev Code livré
    13. 13. Code produit Temps Dev ??? Code livré
    14. 14. Code produit Temps Code livré
    15. 15. Code produit Temps Code livré Dev FEEDBACKS
    16. 16. Pourquoi on le fait pas ?
    17. 17. La peur
    18. 18. Perte de temps
    19. 19. Qualité ?
    20. 20. Code produit Temps Code livré
    21. 21. Code produit Temps Code livré Beaucoup de changements = Beaucoup de risques
    22. 22. Code produit Temps Code livré
    23. 23. Code produit Temps Code livré Peu de changements = Peu de risques
    24. 24. John Allspaw, Etsy http://www.slideshare.net/jallspaw/ops-metametrics-the-currency-you-pay-for-change
    25. 25. Réduire la taille des déploiements… Minimise les risques Réduit le « Time To Repair » (TTR) Réduit le temps d’indisponibilité
    26. 26. Déployer en continu c’est : Construire un meilleur produit grâce à plus de feedbacks Gagner du temps en huilant son processus de déploiement Améliorer la qualité en limitant les risques d’une livraison
    27. 27. COMMENT, COMMENT, COMMENT ?
    28. 28. Automatiser !
    29. 29. DEVOPS
    30. 30. Déployer en 1 clic
    31. 31. QUESTIONS, QUESTIONS, QUESTIONS !!!
    32. 32. Question#1 : 0 commits ?
    33. 33. Vas-y commit…
    34. 34. Garantir la qualité Intégration continue TESTS ! (automatisés bien sûr) !   TDD !   Tests d’IHM !   Tests de performance !   …
    35. 35. Garantir la qualité
    36. 36. Question #2 : En construction ?
    37. 37. dissocier le déploiement de code de l'activation de fonctionnalité
    38. 38. Feature flipping
    39. 39. Flipping code
    40. 40. Question #3 : Downtime ?
    41. 41. Blue green deployment
    42. 42. Question #4 : Migration de schémas de BDD ?
    43. 43. Migration de schéma : solution Séparer les scripts de migration en !   Scripts d’expansion (ADD) !   Scripts de contraction (DROP) !   ALTER
    44. 44. Cas d’exemple
    45. 45. Exemple : Modification du champs adresse Version N Ecriture Lecture
    46. 46. Exemple : Modification du champs adresse Version N Ecriture Lecture
    47. 47. Exemple : Modification du champs adresse Version N+1 Ecriture Lecture
    48. 48. Exemple : Modification du champs adresse Version N+2 Lecture Ecriture
    49. 49. Exemple : Modification du champs adresse Version N+2 Lecture Ecriture
    50. 50. Exemple : Modification du champs adresse Version N+2 Lecture Ecriture
    51. 51. Question #5 : Est-ce qu’on active ?
    52. 52. Canary Release
    53. 53. Question #6 : Et si ça explose ?
    54. 54. Rappel : réduire la taille des déploiements réduit les risques
    55. 55. Mesurer et superviser
    56. 56. Arrêt d’urgence
    57. 57. Toute anomalie en production provoque !  une alerte visible par tous !  L’arrêt d’urgence, on ne peut plus commiter « L’objectif est d’aller aussi vite que possible pour produire du code de qualité, pas plus vite »
    58. 58. N’accepter l’erreur qu’une seule fois 1 erreur => 1 action
    59. 59. Question #7 : Rollback ?
    60. 60. “we don’t roll back, we fix the code” John Allspaw - Etsy
    61. 61. Take away : pourquoi déployer en continu Gagner en temps Gagner en qualité Plus de feedbacks
    62. 62. Take away : comment déployer en continu !   Automatisez vos déploiements !   Dissociez la livraison de code et l’activation de fonctionnalité avec du feature flipping !   Sécurisez les déploiements avec les tests et les patterns de déploiements (blue-green, canary release) !   Profitez des erreurs pour améliorer votre processus
    63. 63. Merci Benoît Lafontaine bla@octo.com @joel1di1 https://github.com/joel1di1

    ×