$30 off During Our Annual Pro Sale. View Details »

En dev comme en prod : créez un environnement de développement Devops

En dev comme en prod : créez un environnement de développement Devops

Conférence donnée à l'occasion du Forum PHP 2013 à Paris

Benjamin Grandfond

November 19, 2013
Tweet

More Decks by Benjamin Grandfond

Other Decks in Programming

Transcript

  1. En dev exactement
    comme en prod
    créez un environnement de développement
    Devops

    View Slide

  2. Benjamin Grandfond
    Architect & Team Manager
    benjaM1 benja-M-1

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. Qu’est-ce que Devops ?

    View Slide

  7. Les devs et les ops sont di!érents

    View Slide

  8. Les devs et les ops sont di!érents
    Les devs créent de
    nouvelles
    fonctionnalités pour
    permettre au business
    d’aller plus vite

    View Slide

  9. Les devs et les ops sont di!érents
    Les devs créent de
    nouvelles
    fonctionnalités pour
    permettre au business
    d’aller plus vite
    Les ops font en sorte que
    le site soit stable pour
    maintenir le business

    View Slide

  10. Rassembler les devs et les ops
    Devs Ops

    View Slide

  11. Rassembler les devs et les ops
    Equipe au service
    du business

    View Slide

  12. Pourquoi
    adopter
    Devops ?

    View Slide

  13. SCRUM permet de créer un produit
    «potentially shippable»
    plani!cation

    View Slide

  14. SCRUM permet de créer un produit
    «potentially shippable»
    plani!cation
    développement
    sprint 1 à 2 sem.

    View Slide

  15. SCRUM permet de créer un produit
    «potentially shippable»
    plani!cation
    développement
    sprint 1 à 2 sem.
    test & validation

    View Slide

  16. SCRUM permet de créer un produit
    «potentially shippable»
    plani!cation
    développement
    sprint 1 à 2 sem.
    «shippable product»
    test & validation

    View Slide

  17. SCRUM permet de créer un produit
    «potentially shippable»
    plani!cation
    développement
    sprint 1 à 2 sem.
    «shippable product»
    test & validation

    View Slide

  18. Devops permet de délivrer en continu !
    «shippable product»
    plani!cation
    développement
    sprint 1 à 2 sem.
    test & validation

    View Slide

  19. Devops permet de délivrer en continu !
    plani!cation
    développement
    sprint 1 à 2 sem.
    test & validation

    View Slide

  20. Devops permet de délivrer en continu !
    déploiement en
    production
    plani!cation
    développement
    sprint 1 à 2 sem.
    test & validation

    View Slide

  21. Devops permet de délivrer en continu !
    déploiement en
    production
    monitoring
    plani!cation
    développement
    sprint 1 à 2 sem.
    test & validation

    View Slide

  22. Devops permet de délivrer en continu !
    déploiement en
    production
    monitoring
    plani!cation
    développement
    sprint 1 à 2 sem.
    test & validation

    View Slide

  23. Devops est de plus en plus adopté
    http://info.puppetlabs.com/2013-state-of-devops-report.html

    View Slide

  24. Devops est de plus en plus adopté
    2013
    +26% par rapport à 2011
    http://info.puppetlabs.com/2013-state-of-devops-report.html
    4000
    2011
    50%
    63%

    View Slide

  25. Devops augmente l’agilité et la "abilité
    multiplication par 30 des déploiements
    diminuer de 50% les échecs
    et s’en remettre 12x plus vite
    http://info.puppetlabs.com/2013-state-of-devops-report.html

    View Slide

  26. des milliers de développeurs
    1,079 déploiements par heure
    10,000 hosts reçoivent 1 déploiement
    http://assets.en.oreilly.com/1/event/60/Velocity%20Culture%20Presentation.pdf

    View Slide

  27. plus de 250 «commiters», tous déploient
    plus de 30 déploiements par jour
    tous les ingénieurs déploient le 1er jour
    http://codeascraft.com/2012/03/13/making-it-virtually-easy-to-deploy-on-day-one/
    https://speakerdeck.com/astanway/bring-the-noise-continuously-deploying-under-a-
    hailstorm-of-metrics

    View Slide

  28. actuellement 29 développeurs
    9 projets en même temps
    3 déploiements par jour par projets
    environ 30 déploiements par jour

    View Slide

  29. View Slide

  30. Comment avons-nous fait ?

    View Slide

  31. Automatisez le déploiement

    View Slide

  32. Automatisez le déploiement
    FTP

    View Slide

  33. Automatisez le déploiement
    git pull
    FTP

    View Slide

  34. Automatisez le déploiement
    git pull
    FTP
    action manuelle !

    View Slide

  35. Automatisez le déploiement
    git pull
    FTP script shell
    action manuelle !

    View Slide

  36. Automatisez le déploiement
    git pull
    FTP Capistrano
    (ruby)
    Fabric
    (python)
    script shell
    action manuelle !

    View Slide

  37. Automatisez le déploiement
    git pull
    FTP Capistrano
    (ruby)
    Fabric
    (python)
    • rendre cette opération simple et réexécutable
    • permettre aux devs d’être autonome
    • accélérer la mise en production
    script shell
    action manuelle !

    View Slide

  38. Surveillez votre application
    • découvrir les erreurs 500 au plus tôt
    • tenir compte des performances

    View Slide

  39. Soyez alerté en cas de problème
    • savoir qu’il y a un problème même quand on ne surveille pas
    • être capable de réagir à tout moment

    View Slide

  40. Agrégez vos logs
    • agréger et visualiser les logs en un seul endroit
    • faciliter les interventions des devs et des ops

    View Slide

  41. Automatisez les tests
    • détection de bugs avant le déploiement
    • diminuer les risques de régression
    • augmenter la con!ance dans le code

    View Slide

  42. Le README.md :
    • liste des dépendances
    (Apache, PHP 5.3, MySQL, Symfony 1.4...)
    • instructions d’installation
    • troubleshootings
    Facilitez l’installation

    View Slide

  43. Le README.md :
    • liste des dépendances
    (Apache, PHP 5.3, MySQL, Symfony 1.4...)
    • instructions d’installation
    • troubleshootings
    Facilitez l’installation
    • pour un nouveau développeur
    • pour l’ops
    Facilite l’installation du projet

    View Slide

  44. • Rien n’est automatique !
    • Ca prend du temps
    • Vite obsolète
    Facilitez l’installation

    View Slide

  45. • Con!guration automatique des v-hosts
    • Diminue le temps d’installation d’un projet en
    local
    • Fonctionne avec la majorité des projets PHP
    Symfttpd : automatisez la con"guration du
    server web
    http://benja-m-1.github.io/symfttpd

    View Slide

  46. Simple configuration PHP
    Une ligne de commande pour avoir un web server fonctionnel
    Symfttpd : automatisez la con"guration du
    server web

    View Slide

  47. • Ne fonctionne qu’avec Lighttpd et Nginx
    • Ne permet pas d’avoir des con!gurations
    spéci!ques
    • Nécessite PHP >= 5.3
    Symfttpd : automatisez la con"guration du
    server web

    View Slide

  48. • réduit les risques de bugs liés à l’architecture
    • un projet par machine virtuelle
    • partage de la vagrant box simpli!e la mise en place
    Normalisez vos environnements

    View Slide

  49. en 2 secondes :)

    View Slide

  50. • documentation exécutable
    • gestion de la con!guration automatisée
    • mise à jour des serveurs automatique
    Distribuez la con"guration du serveur

    View Slide

  51. Distribuez la con"guration du serveur

    View Slide

  52. Distribuez la con"guration du serveur

    View Slide

  53. Distribuez la con"guration du serveur

    View Slide

  54. Distribuez la con"guration du serveur

    View Slide

  55. Distribuez la con"guration du serveur

    View Slide

  56. • faire monter en compétence un dev sur le provisionning
    • corriger un problème lié au système
    Pair devopsing !
    Partagez les compétences entre dev et ops

    View Slide

  57. • permettre aux devs de créer des environnements rapidement
    • faciliter l’évolution de l’architecture
    • augmenter la capacité de charges de l’infrastructure
    Créez un serveur à la demande

    View Slide

  58. • permettre aux devs de créer des environnements rapidement
    • faciliter l’évolution de l’architecture
    • augmenter la capacité de charges de l’infrastructure
    Créez un serveur à la demande
    vagrant plugin install vagrant-openstack
    vagrant up --provider openstack

    View Slide

  59. Exemple : comment faire pour que les devs soient attentifs aux
    perfs ?
    • ajouter la performance dans la dé!nition du Done
    • intégrer des outils de mesure dans le provisionning
    • faire des graphs visibles de loin
    Management visuel

    View Slide

  60. Cherchez à être toujours plus rapide
    Itérez, testez, mesurez, améliorez , recommencez

    View Slide

  61. Pour résumer
    Automatisez, Automatisez, Automatisez !
    Changez la culture dev vs ops
    Maîtrisez les outils que vous utilisez
    Inspirez-vous des leaders du web

    View Slide

  62. A vous de jouer ;)

    View Slide

  63. Questions ?
    benjaM1 benja-M-1
    https://speakerdeck.com/benjam1/en-dev-comme-en-prod-creez-un-environnement-de-developpement-devops
    https://joind.in/talk/view/9357

    View Slide